[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-perpetual-ml--perpetual":3,"tool-perpetual-ml--perpetual":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",141543,2,"2026-04-06T11:32:54",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":76,"owner_website":78,"owner_url":79,"languages":80,"stars":115,"forks":116,"last_commit_at":117,"license":118,"difficulty_score":119,"env_os":120,"env_gpu":121,"env_ram":120,"env_deps":122,"category_tags":131,"github_topics":133,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":144,"updated_at":145,"faqs":146,"releases":175},4574,"perpetual-ml\u002Fperpetual","perpetual","Perpetual is a high-performance gradient boosting machine. It delivers optimal accuracy in a single run without complex tuning through a simple budget parameter. It features out-of-the-box support for causal ML, continual learning, native calibration, and robust drift monitoring, along with Rust core and zero-copy bindings for Python and R","Perpetual 是一款高性能的梯度提升机（GBM），旨在让机器学习建模变得简单高效。传统梯度提升模型往往需要耗费大量时间进行复杂的超参数调优才能取得理想效果，而 Perpetual 彻底解决了这一痛点。它无需繁琐的参数搜索，用户只需设定一个简单的“预算”（budget）参数，即可在单次运行中自动获得最优的预测精度。随着预算值的增加，模型的表达能力会相应增强，直到充分挖掘出数据中的潜在价值。\n\n这款工具特别适合数据科学家、机器学习工程师以及研究人员使用，尤其是那些希望快速验证想法、减少调参负担或需要处理因果推断与持续学习场景的专业人士。Perpetual 的核心采用 Rust 语言编写，确保了极快的训练与推理速度，并支持零拷贝技术以无缝对接 Polars 和 Arrow 数据格式。除了基础的分类、回归和排序任务外，它还原生支持因果机器学习、模型校准及鲁棒的数据漂移监控。无论是通过 Python 还是 R 语言调用，Perpetual 都能提供流畅的开发体验，让用户将更多精力集中在数据洞察而非模型调试上。","\u003C!-- markdownlint-disable MD033 -->\n# Perpetual\n\n\u003Cp align=\"center\">\n  \u003Cimg  height=\"120\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fperpetual-ml_perpetual_readme_f40a6063308f.png\" alt=\"Perpetual Logo\">\n\u003C\u002Fp>\n\n\u003Cdiv align=\"center\">\n\n\u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fperpetual.svg?logo=python&logoColor=white\" alt=\"Python Versions\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fperpetual.svg?logo=pypi&logoColor=white\" alt=\"PyPI Version\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fv\u002Fconda-forge\u002Fperpetual?label=conda-forge&logo=anaconda&logoColor=white\" alt=\"Conda Version\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fcrates.io\u002Fcrates\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fperpetual?logo=rust&logoColor=white\" alt=\"Crates.io Version\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fperpetual-ml.r-universe.dev\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdynamic\u002Fjson?url=https:\u002F\u002Fperpetual-ml.r-universe.dev\u002Fapi\u002Fpackages\u002Fperpetual&query=$.Version&label=r-universe&logo=R&logoColor=white&color=brightgreen\" alt=\"R-Universe status\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FAyUK7rr6wy\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fjoin-discord-blue?logo=discord\" alt=\"Static Badge\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fperpetual?logo=pypi\" alt=\"PyPI - Downloads\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpre-commit\u002Fpre-commit\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white\" alt=\"pre-commit\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fastral-sh\u002Fruff\u002Fmain\u002Fassets\u002Fbadge\u002Fv2.json\" alt=\"Ruff\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fapp.codecov.io\u002Fgh\u002Fperpetual-ml\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fperpetual-ml\u002Fperpetual?flag=python&label=codecov%20python\" alt=\"Python Coverage\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fapp.codecov.io\u002Fgh\u002Fperpetual-ml\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fperpetual-ml\u002Fperpetual?flag=rust&label=codecov%20rust\" alt=\"Rust Coverage\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fapp.codecov.io\u002Fgh\u002Fperpetual-ml\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fperpetual-ml\u002Fperpetual?flag=r&label=codecov%20r\" alt=\"R Coverage\">\u003C\u002Fa>\n\u003Ca href=\".\u002FLICENSE\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fperpetual-ml\u002Fperpetual\" alt=\"License\">\u003C\u002Fa>\n\n\u003C\u002Fdiv>\n\nPerpetualBooster is a gradient boosting machine (GBM) that doesn't need hyperparameter optimization unlike other GBMs. Similar to AutoML libraries, it has a `budget` parameter. Increasing the `budget` parameter increases the predictive power of the algorithm and gives better results on unseen data. Start with a small budget (e.g. 0.5) and increase it (e.g. 1.0) once you are confident with your features. If you don't see any improvement with further increasing the `budget`, it means that you are already extracting the most predictive power out of your data.\n\n## Features\n\n- **Hyperparameter-Free Learning:** Achieves optimal accuracy in a single run via a simple `budget` parameter, eliminating the need for time-consuming hyperparameter optimization.\n- **High-Performance Rust Core:** Blazing-fast training and inference with a native Rust core, zero-copy support for Polars\u002FArrow data, and robust Python & R bindings.\n- **Comprehensive Objectives:** Fully supports Classification (Binary & Multi-class), Regression, and Ranking tasks.\n- **Advanced Tree Features:** Natively handles categorical variables, learnable missing value splits, monotonic constraints, and feature interaction constraints.\n- **Built-in Causal ML:** Out-of-the-box support for causal machine learning to estimate treatment effects.\n- **Robust Drift Monitoring:** Built-in capabilities to monitor both data drift and concept drift without requiring ground truth labels or model retraining.\n- **Continual Learning:** Built-in continual learning capabilities that significantly reduce computational time from O(n²) to O(n).\n- **Native Calibration:** Built-in calibration features to predict fully calibrated distributions (marginal coverage) and conditional coverage without retraining.\n- **Explainability:** Easily interpret model decisions using built-in feature importance, partial dependence plots, and Shapley (SHAP) values.\n- **Production Ready & Interoperable:** Ready for production applications; seamlessly export models to industry-standard XGBoost or ONNX formats for straightforward deployment.\n\n## Supported Languages\n\nPerpetual is built in Rust and provides high-performance bindings for Python and R.\n\n\u003C!-- markdownlint-disable MD060 -->\n| Language   | Installation                                                            | Documentation                                                                       | Source                                                        | Package                                                                                                                                                             |\n| :--------- | :---------------------------------------------------------------------- | :---------------------------------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------- |\n| **Python** | `pip install perpetual`\u003Cbr>\u003Cbr>`conda install -c conda-forge perpetual` | \u003Ca href=\"https:\u002F\u002Fperpetual-ml.github.io\u002Fperpetual\" target=\"_blank\">Python API\u003C\u002Fa>   | \u003Ca href=\".\u002Fpackage-python\" target=\"_blank\">`package-python`\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fperpetual\" target=\"_blank\">PyPI\u003C\u002Fa>\u003Cbr>\u003Cbr>\u003Ca href=\"https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fperpetual\" target=\"_blank\">Conda Forge\u003C\u002Fa>   |\n| **Rust**   | `cargo add perpetual`                                                   | \u003Ca href=\"https:\u002F\u002Fdocs.rs\u002Fperpetual\" target=\"_blank\">docs.rs\u003C\u002Fa>                     | \u003Ca href=\".\u002Fsrc\" target=\"_blank\">`src`\u003C\u002Fa>                     | \u003Ca href=\"https:\u002F\u002Fcrates.io\u002Fcrates\u002Fperpetual\" target=\"_blank\">crates.io\u003C\u002Fa>                                                          |\n| **R**      | `install.packages(\"perpetual\")`                                         | \u003Ca href=\"https:\u002F\u002Fperpetual-ml.github.io\u002Fperpetual\u002Fr\" target=\"_blank\">pkgdown Site\u003C\u002Fa> | \u003Ca href=\".\u002Fpackage-r\" target=\"_blank\">`package-r`\u003C\u002Fa>         | \u003Ca href=\"https:\u002F\u002Fperpetual-ml.r-universe.dev\u002Fperpetual\" target=\"_blank\">R-universe\u003C\u002Fa>                                              |\n\n### Optional Dependencies\n\n- `pandas`: Enables support for training directly on Pandas DataFrames.\n- `polars`: Enables zero-copy training support for Polars DataFrames.\n- `scikit-learn`: Provides a scikit-learn compatible wrapper interface.\n- `xgboost`: Enables saving and loading models in XGBoost format for interoperability.\n- `onnxruntime`: Enables exporting and loading models in ONNX standard format.\n\n## Usage\n\nYou can use the algorithm like in the example below. Check examples folders for both Rust and Python.\n\n```python\nfrom perpetual import PerpetualBooster\n\nmodel = PerpetualBooster(objective=\"SquaredLoss\", budget=0.5)\nmodel.fit(X, y)\n```\n\n## Benchmark\n\n### PerpetualBooster vs. Optuna + LightGBM\n\nHyperparameter optimization usually takes 100 iterations with plain GBM algorithms. PerpetualBooster achieves the same accuracy in a single run. Thus, it achieves up to 100x speed-up at the same accuracy with different `budget` levels and with different datasets.\n\nThe following table summarizes the results for the \u003Ca href=\"https:\u002F\u002Fscikit-learn.org\u002Fstable\u002Fmodules\u002Fgenerated\u002Fsklearn.datasets.fetch_california_housing.html\" target=\"_blank\">California Housing\u003C\u002Fa> dataset (regression):\n\n| Perpetual budget | LightGBM n_estimators | Perpetual mse | LightGBM mse | Speed-up wall time | Speed-up cpu time |\n| :--------------- | :-------------------- | :------------ | :----------- | :----------------- | :---------------- |\n| 0.76             | 50                    | 0.201         | 0.201        | 72x                | 326x              |\n| 0.85             | 100                   | 0.196         | 0.196        | 113x               | 613x              |\n| 1.15             | 200                   | 0.190         | 0.190        | 405x               | 1985x             |\n\nThe following table summarizes the results for the \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Fsearch?type=data&status=active&id=46951\" target=\"_blank\">Pumpkin Seeds\u003C\u002Fa> dataset (classification):\n\n| Perpetual budget | LightGBM n_estimators | Perpetual auc      | LightGBM auc      | Speed-up wall time | Speed-up cpu time |\n| :--------------- | :-------------------- | :----------------- | :---------------- | :----------------- | :---------------- |\n| 1.0              | 100                   | 0.944              | 0.945             | 91x                | 184x              |\n\nThe results can be reproduced using the scripts in the \u003Ca href=\".\u002Fpackage-python\u002Fexamples\" target=\"_blank\">examples\u003C\u002Fa> folder.\n\n### PerpetualBooster vs. AutoGluon\n\nPerpetualBooster is a GBM but behaves like AutoML so it is benchmarked also against AutoGluon (v1.2, best quality preset), the current leader in \u003Ca href=\"https:\u002F\u002Fautomlbenchmark.streamlit.app\u002Fcd_diagram\" target=\"_blank\">AutoML benchmark\u003C\u002Fa>. Top 10 datasets with the most number of rows are selected from \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002F\" target=\"_blank\">OpenML datasets\u003C\u002Fa> for both regression and classification tasks.\n\nThe results are summarized in the following table for regression tasks:\n\n| OpenML Task                                                                         | Perpetual Training Duration | Perpetual Inference Duration | Perpetual RMSE      | AutoGluon Training Duration | AutoGluon Inference Duration | AutoGluon RMSE     |\n| :---------------------------------------------------------------------------------- | :-------------------------- | :--------------------------- | :------------------ | :-------------------------- | :--------------------------- | :----------------- |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F359929\" target=\"_blank\">Airlines_DepDelay_10M\u003C\u002Fa> | 518                         | 11.3                         | 29.0                | 520                         | 30.9                         | \u003Cins> 28.8 \u003C\u002Fins>  |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361940\" target=\"_blank\">bates_regr_100\u003C\u002Fa>        | 3421                        | 15.1                         | \u003Cins> 1.084 \u003C\u002Fins>  | OOM                         | OOM                          | OOM                |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7327\" target=\"_blank\">BNG(libras_move)\u003C\u002Fa>        | 1956                        | 4.2                          | \u003Cins> 2.51 \u003C\u002Fins>   | 1922                        | 97.6                         | 2.53               |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7326\" target=\"_blank\">BNG(satellite_image)\u003C\u002Fa>    | 334                         | 1.6                          | 0.731               | 337                         | 10.0                         | \u003Cins> 0.721 \u003C\u002Fins> |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F14949\" target=\"_blank\">COMET_MC\u003C\u002Fa>               | 44                          | 1.0                          | \u003Cins> 0.0615 \u003C\u002Fins> | 47                          | 5.0                          | 0.0662             |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361939\" target=\"_blank\">friedman1\u003C\u002Fa>             | 275                         | 4.2                          | \u003Cins> 1.047 \u003C\u002Fins>  | 278                         | 5.1                          | 1.487              |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F10102\" target=\"_blank\">poker\u003C\u002Fa>                  | 38                          | 0.6                          | \u003Cins> 0.256 \u003C\u002Fins>  | 41                          | 1.2                          | 0.722              |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361955\" target=\"_blank\">subset_higgs\u003C\u002Fa>          | 868                         | 10.6                         | \u003Cins> 0.420 \u003C\u002Fins>  | 870                         | 24.5                         | 0.421              |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7319\" target=\"_blank\">BNG(autoHorse)\u003C\u002Fa>          | 107                         | 1.1                          | \u003Cins> 19.0 \u003C\u002Fins>   | 107                         | 3.2                          | 20.5               |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7318\" target=\"_blank\">BNG(pbc)\u003C\u002Fa>                | 48                          | 0.6                          | \u003Cins> 836.5 \u003C\u002Fins>  | 51                          | 0.2                          | 957.1              |\n| average                                                                             | 465                         | 3.9                          | -                   | 464                         | 19.7                         | -                  |\n\nPerpetualBooster outperformed AutoGluon on 8 out of 10 regression tasks, training equally fast and inferring 5.1x faster.\n\nThe results are summarized in the following table for classification tasks:\n\n| OpenML Task                                                                        | Perpetual Training Duration | Perpetual Inference Duration | Perpetual AUC      | AutoGluon Training Duration | AutoGluon Inference Duration | AutoGluon AUC |\n| :--------------------------------------------------------------------------------- | :-------------------------- | :--------------------------- | :----------------- | :-------------------------- | :--------------------------- | :------------ |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F146163\" target=\"_blank\">BNG(spambase)\u003C\u002Fa>        | 70.1                        | 2.1                          | \u003Cins> 0.671 \u003C\u002Fins> | 73.1                        | 3.7                          | 0.669         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F208\" target=\"_blank\">BNG(trains)\u003C\u002Fa>             | 89.5                        | 1.7                          | \u003Cins> 0.996 \u003C\u002Fins> | 106.4                       | 2.4                          | 0.994         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361942\" target=\"_blank\">breast\u003C\u002Fa>               | 13699.3                     | 97.7                         | \u003Cins> 0.991 \u003C\u002Fins> | 13330.7                     | 79.7                         | 0.949         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7291\" target=\"_blank\">Click_prediction_small\u003C\u002Fa> | 89.1                        | 1.0                          | \u003Cins> 0.749 \u003C\u002Fins> | 101.0                       | 2.8                          | 0.703         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361938\" target=\"_blank\">colon\u003C\u002Fa>                | 12435.2                     | 126.7                        | \u003Cins> 0.997 \u003C\u002Fins> | 12356.2                     | 152.3                        | 0.997         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F362113\" target=\"_blank\">Higgs\u003C\u002Fa>                | 3485.3                      | 40.9                         | \u003Cins> 0.843 \u003C\u002Fins> | 3501.4                      | 67.9                         | 0.816         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F230\" target=\"_blank\">SEA(50000)\u003C\u002Fa>              | 21.9                        | 0.2                          | \u003Cins> 0.936 \u003C\u002Fins> | 25.6                        | 0.5                          | 0.935         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F359994\" target=\"_blank\">sf-police-incidents\u003C\u002Fa>  | 85.8                        | 1.5                          | \u003Cins> 0.687 \u003C\u002Fins> | 99.4                        | 2.8                          | 0.659         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361941\" target=\"_blank\">bates_classif_100\u003C\u002Fa>    | 11152.8                     | 50.0                         | \u003Cins> 0.864 \u003C\u002Fins> | OOM                         | OOM                          | OOM           |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361945\" target=\"_blank\">prostate\u003C\u002Fa>             | 13699.9                     | 79.8                         | \u003Cins> 0.987 \u003C\u002Fins> | OOM                         | OOM                          | OOM           |\n| average                                                                            | 3747.0                      | 34.0                         | -                  | 3699.2                      | 39.0                         | -             |\n\nPerpetualBooster outperformed AutoGluon on 10 out of 10 classification tasks, training equally fast and inferring 1.1x faster.\n\nPerpetualBooster demonstrates greater robustness compared to AutoGluon, successfully training on all 20 tasks, whereas AutoGluon encountered out-of-memory errors on 3 of those tasks.\n\nThe results can be reproduced using the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdeadsoul44\u002Fautomlbenchmark\" target=\"_blank\">automlbenchmark fork\u003C\u002Fa>.\n\n## Contribution\n\nContributions are welcome. Check \u003Ca href=\".\u002FCONTRIBUTING.md\" target=\"_blank\">CONTRIBUTING.md\u003C\u002Fa> for the guideline.\n\n## Paper\n\nPerpetualBooster prevents overfitting with a generalization algorithm. The paper is work-in-progress to explain how the algorithm works. Check our \u003Ca href=\"https:\u002F\u002Fperpetual-ml.com\u002Fblog\u002Fhow-perpetual-works\" target=\"_blank\">blog post\u003C\u002Fa> for a high level introduction to the algorithm.\n\n## Perpetual ML Suite\n\nThe **Perpetual ML Suite** is a comprehensive, batteries-included ML platform designed to deliver maximum predictive power with minimal effort. It allows you to track experiments, monitor metrics, and manage model drift through an intuitive interface.\n\nFor a fully managed, **serverless ML experience**, visit \u003Ca href=\"https:\u002F\u002Fapp.perpetual-ml.com\" target=\"_blank\">app.perpetual-ml.com\u003C\u002Fa>.\n\n- **Serverless Marimo Notebooks**: Run interactive, reactive notebooks without managing any infrastructure.\n- **Serverless ML Endpoints**: One-click deployment of models as production-ready endpoints for real-time inference.\n\nPerpetual is also designed to live where your data lives. It is available as a native application on the \u003Ca href=\"https:\u002F\u002Fapp.snowflake.com\u002Fmarketplace\u002Flisting\u002FGZSYZX0EMJ\u002Fperpetual-ml-perpetual-ml-suite\" target=\"_blank\">Snowflake Marketplace\u003C\u002Fa>, with support for Databricks and other major data warehouses coming soon.\n","\u003C!-- markdownlint-disable MD033 -->\n# 永续\n\n\u003Cp align=\"center\">\n  \u003Cimg  height=\"120\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fperpetual-ml_perpetual_readme_f40a6063308f.png\" alt=\"Perpetual Logo\">\n\u003C\u002Fp>\n\n\u003Cdiv align=\"center\">\n\n\u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fperpetual.svg?logo=python&logoColor=white\" alt=\"Python 版本\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fperpetual.svg?logo=pypi&logoColor=white\" alt=\"PyPI 版本\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fv\u002Fconda-forge\u002Fperpetual?label=conda-forge&logo=anaconda&logoColor=white\" alt=\"Conda 版本\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fcrates.io\u002Fcrates\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fperpetual?logo=rust&logoColor=white\" alt=\"Crates.io 版本\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fperpetual-ml.r-universe.dev\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdynamic\u002Fjson?url=https:\u002F\u002Fperpetual-ml.r-universe.dev\u002Fapi\u002Fpackages\u002Fperpetual&query=$.Version&label=r-universe&logo=R&logoColor=white&color=brightgreen\" alt=\"R-Universe 状态\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FAyUK7rr6wy\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fjoin-discord-blue?logo=discord\" alt=\"静态徽章\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fperpetual?logo=pypi\" alt=\"PyPI 下载量\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpre-commit\u002Fpre-commit\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white\" alt=\"pre-commit\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fastral-sh\u002Fruff\u002Fmain\u002Fassets\u002Fbadge\u002Fv2.json\" alt=\"Ruff\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fapp.codecov.io\u002Fgh\u002Fperpetual-ml\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fperpetual-ml\u002Fperpetual?flag=python&label=codecov%20python\" alt=\"Python 覆盖率\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fapp.codecov.io\u002Fgh\u002Fperpetual-ml\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fperpetual-ml\u002Fperpetual?flag=rust&label=codecov%20rust\" alt=\"Rust 覆盖率\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fapp.codecov.io\u002Fgh\u002Fperpetual-ml\u002Fperpetual\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fperpetual-ml\u002Fperpetual?flag=r&label=codecov%20r\" alt=\"R 覆盖率\">\u003C\u002Fa>\n\u003Ca href=\".\u002FLICENSE\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fperpetual-ml\u002Fperpetual\" alt=\"许可证\">\u003C\u002Fa>\n\n\u003C\u002Fdiv>\n\nPerpetualBooster 是一种梯度提升机（GBM），与其他 GBM 不同，它无需进行超参数调优。与 AutoML 库类似，它有一个 `budget` 参数。增加 `budget` 参数可以提高算法的预测能力，并在未见过的数据上获得更好的结果。建议从较小的预算开始（例如 0.5），并在对特征充满信心后逐步增加（例如 1.0）。如果进一步增加 `budget` 仍未见改善，则说明您已经从数据中提取了最大的预测能力。\n\n## 特性\n\n- **无超参数学习：** 通过一个简单的 `budget` 参数即可在一次运行中达到最佳准确率，无需耗时的超参数调优。\n- **高性能 Rust 核心：** 原生 Rust 核心实现极速训练和推理，支持 Polars\u002FArrow 数据的零拷贝操作，并提供强大的 Python 和 R 绑定。\n- **全面的目标函数：** 完全支持分类（二分类和多分类）、回归和排序任务。\n- **先进的树结构特性：** 原生支持处理类别型变量、可学习的缺失值分裂、单调性约束以及特征交互约束。\n- **内置因果机器学习：** 开箱即用的支持因果机器学习，用于估计治疗效应。\n- **稳健的漂移监测：** 内置功能可监控数据漂移和概念漂移，无需真实标签或重新训练模型。\n- **持续学习：** 内置持续学习能力，可将计算时间从 O(n²) 大幅降低至 O(n)。\n- **原生校准：** 内置校准功能，可在无需重新训练的情况下预测完全校准的分布（边际覆盖率）和条件覆盖率。\n- **可解释性：** 可轻松使用内置的特征重要性、部分依赖图和 Shapley (SHAP) 值来解释模型决策。\n- **生产就绪且互操作性强：** 适用于生产环境；可无缝导出为行业标准的 XGBoost 或 ONNX 格式，便于部署。\n\n## 支持的语言\n\nPerpetual 使用 Rust 构建，并为 Python 和 R 提供高性能绑定。\n\n\u003C!-- markdownlint-disable MD060 -->\n| 语言   | 安装                                                            | 文档                                                                       | 源代码                                                        | 包                                                                                                                                                             |\n| :--------- | :---------------------------------------------------------------------- | :---------------------------------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------- |\n| **Python** | `pip install perpetual`\u003Cbr>\u003Cbr>`conda install -c conda-forge perpetual` | \u003Ca href=\"https:\u002F\u002Fperpetual-ml.github.io\u002Fperpetual\" target=\"_blank\">Python API\u003C\u002Fa>   | \u003Ca href=\".\u002Fpackage-python\" target=\"_blank\">`package-python`\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fperpetual\" target=\"_blank\">PyPI\u003C\u002Fa>\u003Cbr>\u003Cbr>\u003Ca href=\"https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fperpetual\" target=\"_blank\">Conda Forge\u003C\u002Fa>   |\n| **Rust**   | `cargo add perpetual`                                                   | \u003Ca href=\"https:\u002F\u002Fdocs.rs\u002Fperpetual\" target=\"_blank\">docs.rs\u003C\u002Fa>                     | \u003Ca href=\".\u002Fsrc\" target=\"_blank\">`src`\u003C\u002Fa>                     | \u003Ca href=\"https:\u002F\u002Fcrates.io\u002Fcrates\u002Fperpetual\" target=\"_blank\">crates.io\u003C\u002Fa>                                                          |\n| **R**      | `install.packages(\"perpetual\")`                                         | \u003Ca href=\"https:\u002F\u002Fperpetual-ml.github.io\u002Fperpetual\u002Fr\" target=\"_blank\">pkgdown 网站\u003C\u002Fa> | \u003Ca href=\".\u002Fpackage-r\" target=\"_blank\">`package-r`\u003C\u002Fa>         | \u003Ca href=\"https:\u002F\u002Fperpetual-ml.r-universe.dev\u002Fperpetual\" target=\"_blank\">R-universe\u003C\u002Fa>                                              |\n\n### 可选依赖项\n\n- `pandas`: 启用直接在 Pandas DataFrame 上进行训练的支持。\n- `polars`: 为 Polars DataFrame 提供零拷贝训练支持。\n- `scikit-learn`: 提供与 scikit-learn 兼容的封装接口。\n- `xgboost`: 支持以 XGBoost 格式保存和加载模型，实现互操作性。\n- `onnxruntime`: 支持将模型导出为 ONNX 标准格式并加载。\n\n## 使用方法\n\n您可以按照以下示例使用该算法。有关 Rust 和 Python 的示例，请查看 examples 文件夹。\n\n```python\nfrom perpetual import PerpetualBooster\n\nmodel = PerpetualBooster(objective=\"SquaredLoss\", budget=0.5)\nmodel.fit(X, y)\n```\n\n## 基准测试\n\n### PerpetualBooster 与 Optuna + LightGBM 对比\n\n使用普通的 GBM 算法进行超参数优化通常需要 100 次迭代。而 PerpetualBooster 只需一次运行即可达到相同的准确率。因此，在不同的 `budget` 水平和不同数据集上，它能够在保持相同准确率的情况下实现高达 100 倍的速度提升。\n\n下表总结了针对 \u003Ca href=\"https:\u002F\u002Fscikit-learn.org\u002Fstable\u002Fmodules\u002Fgenerated\u002Fsklearn.datasets.fetch_california_housing.html\" target=\"_blank\">加州住房\u003C\u002Fa> 数据集（回归任务）的实验结果：\n\n| Perpetual budget | LightGBM n_estimators | Perpetual mse | LightGBM mse | Speed-up wall time | Speed-up cpu time |\n| :--------------- | :-------------------- | :------------ | :----------- | :----------------- | :---------------- |\n| 0.76             | 50                    | 0.201         | 0.201        | 72x                | 326x              |\n| 0.85             | 100                   | 0.196         | 0.196        | 113x               | 613x              |\n| 1.15             | 200                   | 0.190         | 0.190        | 405x               | 1985x             |\n\n下表总结了针对 \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Fsearch?type=data&status=active&id=46951\" target=\"_blank\">南瓜种子\u003C\u002Fa> 数据集（分类任务）的实验结果：\n\n| Perpetual budget | LightGBM n_estimators | Perpetual auc      | LightGBM auc      | Speed-up wall time | Speed-up cpu time |\n| :--------------- | :-------------------- | :----------------- | :---------------- | :----------------- | :---------------- |\n| 1.0              | 100                   | 0.944              | 0.945             | 91x                | 184x              |\n\n这些结果可以使用 \u003Ca href=\".\u002Fpackage-python\u002Fexamples\" target=\"_blank\">examples\u003C\u002Fa> 文件夹中的脚本重现。\n\n### PerpetualBooster 与 AutoGluon 对比\n\nPerpetualBooster 是一种 GBM 算法，但其行为类似于 AutoML，因此我们也将其与当前 \u003Ca href=\"https:\u002F\u002Fautomlbenchmark.streamlit.app\u002Fcd_diagram\" target=\"_blank\">AutoML 基准测试\u003C\u002Fa>中的领先者 AutoGluon（v1.2，最佳质量预设）进行了对比。我们从 \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002F\" target=\"_blank\">OpenML 数据集\u003C\u002Fa>中分别选取了回归和分类任务中行数最多的前 10 个数据集。\n\n下表总结了回归任务的实验结果：\n\n| OpenML Task                                                                         | Perpetual Training Duration | Perpetual Inference Duration | Perpetual RMSE      | AutoGluon Training Duration | AutoGluon Inference Duration | AutoGluon RMSE     |\n| :---------------------------------------------------------------------------------- | :-------------------------- | :--------------------------- | :------------------ | :-------------------------- | :--------------------------- | :----------------- |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F359929\" target=\"_blank\">Airlines_DepDelay_10M\u003C\u002Fa> | 518                         | 11.3                         | 29.0                | 520                         | 30.9                         | \u003Cins> 28.8 \u003C\u002Fins>  |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361940\" target=\"_blank\">bates_regr_100\u003C\u002Fa>        | 3421                        | 15.1                         | \u003Cins> 1.084 \u003C\u002Fins>  | OOM                         | OOM                          | OOM                |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7327\" target=\"_blank\">BNG(libras_move)\u003C\u002Fa>        | 1956                        | 4.2                          | \u003Cins> 2.51 \u003C\u002Fins>   | 1922                        | 97.6                         | 2.53               |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7326\" target=\"_blank\">BNG(satellite_image)\u003C\u002Fa>    | 334                         | 1.6                          | 0.731               | 337                         | 10.0                         | \u003Cins> 0.721 \u003C\u002Fins> |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F14949\" target=\"_blank\">COMET_MC\u003C\u002Fa>               | 44                          | 1.0                          | \u003Cins> 0.0615 \u003C\u002Fins> | 47                          | 5.0                          | 0.0662             |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361939\" target=\"_blank\">friedman1\u003C\u002Fa>             | 275                         | 4.2                          | \u003Cins> 1.047 \u003C\u002Fins>  | 278                         | 5.1                          | 1.487              |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F10102\" target=\"_blank\">poker\u003C\u002Fa>                  | 38                          | 0.6                          | \u003Cins> 0.256 \u003C\u002Fins>  | 41                          | 1.2                          | 0.722              |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361955\" target=\"_blank\">subset_higgs\u003C\u002Fa>          | 868                         | 10.6                         | \u003Cins> 0.420 \u003C\u002Fins>  | 870                         | 24.5                         | 0.421              |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7319\" target=\"_blank\">BNG(autoHorse)\u003C\u002Fa>          | 107                         | 1.1                          | \u003Cins> 19.0 \u003C\u002Fins>   | 107                         | 3.2                          | 20.5               |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7318\" target=\"_blank\">BNG(pbc)\u003C\u002Fa>                | 48                          | 0.6                          | \u003Cins> 836.5 \u003C\u002Fins>  | 51                          | 0.2                          | 957.1              |\n| average                                                                             | 465                         | 3.9                          | -                   | 464                         | 19.7                         | -                  |\n\nPerpetualBooster 在 10 个回归任务中的 8 个任务上表现优于 AutoGluon，训练速度相当，而推理速度则快了 5.1 倍。\n\n下表总结了分类任务的实验结果：\n\n| OpenML 任务                                                                        | Perpetual 训练时长 | Perpetual 推理时长 | Perpetual AUC      | AutoGluon 训练时长 | AutoGluon 推理时长 | AutoGluon AUC |\n| :--------------------------------------------------------------------------------- | :-------------------------- | :--------------------------- | :----------------- | :-------------------------- | :--------------------------- | :------------ |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F146163\" target=\"_blank\">BNG(spambase)\u003C\u002Fa>        | 70.1                        | 2.1                          | \u003Cins> 0.671 \u003C\u002Fins> | 73.1                        | 3.7                          | 0.669         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F208\" target=\"_blank\">BNG(trains)\u003C\u002Fa>             | 89.5                        | 1.7                          | \u003Cins> 0.996 \u003C\u002Fins> | 106.4                       | 2.4                          | 0.994         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361942\" target=\"_blank\">breast\u003C\u002Fa>               | 13699.3                     | 97.7                         | \u003Cins> 0.991 \u003C\u002Fins> | 13330.7                     | 79.7                         | 0.949         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F7291\" target=\"_blank\">Click_prediction_small\u003C\u002Fa> | 89.1                        | 1.0                          | \u003Cins> 0.749 \u003C\u002Fins> | 101.0                       | 2.8                          | 0.703         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361938\" target=\"_blank\">colon\u003C\u002Fa>                | 12435.2                     | 126.7                        | \u003Cins> 0.997 \u003C\u002Fins> | 12356.2                     | 152.3                        | 0.997         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F362113\" target=\"_blank\">Higgs\u003C\u002Fa>                | 3485.3                      | 40.9                         | \u003Cins> 0.843 \u003C\u002Fins> | 3501.4                      | 67.9                         | 0.816         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F230\" target=\"_blank\">SEA(50000)\u003C\u002Fa>              | 21.9                        | 0.2                          | \u003Cins> 0.936 \u003C\u002Fins> | 25.6                        | 0.5                          | 0.935         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F359994\" target=\"_blank\">sf-police-incidents\u003C\u002Fa>  | 85.8                        | 1.5                          | \u003Cins> 0.687 \u003C\u002Fins> | 99.4                        | 2.8                          | 0.659         |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361941\" target=\"_blank\">bates_classif_100\u003C\u002Fa>    | 11152.8                     | 50.0                         | \u003Cins> 0.864 \u003C\u002Fins> | OOM                         | OOM                          | OOM           |\n| \u003Ca href=\"https:\u002F\u002Fwww.openml.org\u002Ft\u002F361945\" target=\"_blank\">prostate\u003C\u002Fa>             | 13699.9                     | 79.8                         | \u003Cins> 0.987 \u003C\u002Fins> | OOM                         | OOM                          | OOM           |\n| 平均                                                                            | 3747.0                      | 34.0                         | -                  | 3699.2                      | 39.0                         | -             |\n\nPerpetualBooster 在 10 项分类任务中全部优于 AutoGluon，训练速度相当，推理速度则快了 1.1 倍。\n\n与 AutoGluon 相比，PerpetualBooster 表现出更高的鲁棒性，成功在所有 20 项任务上完成训练，而 AutoGluon 在其中 3 项任务上出现了内存不足的错误。\n\n这些结果可以通过使用 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdeadsoul44\u002Fautomlbenchmark\" target=\"_blank\">automlbenchmark 分支\u003C\u002Fa> 进行复现。\n\n\n\n## 贡献\n\n欢迎各位贡献！请查看 \u003Ca href=\".\u002FCONTRIBUTING.md\" target=\"_blank\">CONTRIBUTING.md\u003C\u002Fa> 以获取相关指南。\n\n## 论文\n\nPerpetualBooster 通过一种泛化算法来防止过拟合。目前论文仍在撰写中，旨在详细解释该算法的工作原理。您也可以阅读我们的 \u003Ca href=\"https:\u002F\u002Fperpetual-ml.com\u002Fblog\u002Fhow-perpetual-works\" target=\"_blank\">博客文章\u003C\u002Fa>,其中对算法进行了高层次的介绍。\n\n## Perpetual ML 套件\n\n**Perpetual ML 套件** 是一款功能全面、开箱即用的机器学习平台，旨在以最少的努力实现最大的预测能力。它提供直观的界面，帮助您跟踪实验、监控指标并管理模型漂移。\n\n如需完全托管的 **无服务器机器学习体验**，请访问 \u003Ca href=\"https:\u002F\u002Fapp.perpetual-ml.com\" target=\"_blank\">app.perpetual-ml.com\u003C\u002Fa>。\n\n- **无服务器 Marimo 笔记本**：无需管理任何基础设施，即可运行交互式、响应式的笔记本。\n- **无服务器机器学习端点**：一键部署模型为生产就绪的端点，用于实时推理。\n\nPerpetual 还可以根据您的数据存储位置进行部署。它现已在 \u003Ca href=\"https:\u002F\u002Fapp.snowflake.com\u002Fmarketplace\u002Flisting\u002FGZSYZX0EMJ\u002Fperpetual-ml-perpetual-ml-suite\" target=\"_blank\">Snowflake 市场\u003C\u002Fa> 上作为原生应用发布，未来还将支持 Databricks 和其他主流数据仓库。","# Perpetual 快速上手指南\n\nPerpetual 是一个基于 Rust 构建的高性能梯度提升机（GBM），其核心优势在于**无需繁琐的超参数优化**。它通过一个简单的 `budget` 参数控制模型复杂度，能够在单次运行中达到最优精度，显著缩短开发周期。\n\n## 环境准备\n\n*   **操作系统**：支持 Windows、macOS 和 Linux。\n*   **语言版本**：\n    *   Python 3.8+\n    *   或 R 4.0+\n    *   或 Rust (如需底层开发)\n*   **前置依赖**：\n    *   基础使用无需额外依赖。\n    *   **推荐安装**（以获得完整功能）：\n        *   `pandas`：支持直接训练 Pandas DataFrame。\n        *   `polars`：支持零拷贝训练，大幅提升大数据集性能。\n        *   `scikit-learn`：提供兼容 Scikit-Learn 的接口。\n\n## 安装步骤\n\n### Python 用户\n\n推荐使用 pip 或 conda 进行安装。国内用户若遇到网络问题，可配置清华或阿里镜像源加速。\n\n**使用 pip 安装：**\n```bash\npip install perpetual\n# 可选：安装常用依赖以获得完整功能\npip install perpetual pandas polars scikit-learn\n```\n\n**使用 conda 安装：**\n```bash\nconda install -c conda-forge perpetual\n```\n\n> **国内加速提示**：若下载缓慢，可使用清华镜像源：\n> `pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple perpetual`\n\n### R 用户\n\n```r\ninstall.packages(\"perpetual\")\n```\n\n### Rust 用户\n\n```bash\ncargo add perpetual\n```\n\n## 基本使用\n\nPerpetual 的使用逻辑与 Scikit-Learn 高度相似。只需实例化 `PerpetualBooster`，设置目标函数和 `budget` 参数，即可开始训练。\n\n### 最简单的示例 (Python)\n\n```python\nfrom perpetual import PerpetualBooster\n\n# 1. 初始化模型\n# objective: 任务类型 (如 \"SquaredLoss\" 回归, \"LogLoss\" 二分类等)\n# budget: 预算参数，越大模型越复杂，精度通常越高 (建议从 0.5 开始尝试)\nmodel = PerpetualBooster(objective=\"SquaredLoss\", budget=0.5)\n\n# 2. 训练模型 (X 为特征矩阵，y 为目标向量)\nmodel.fit(X, y)\n\n# 3. 进行预测\npredictions = model.predict(X_test)\n```\n\n### 关键参数说明\n\n*   **`budget`**：这是唯一需要调整的核心参数。\n    *   **初始建议**：设为 `0.5` 进行快速验证。\n    *   **进阶调优**：若特征工程完善且需要更高精度，可逐步增加至 `1.0` 或更高。\n    *   **停止信号**：当继续增加 `budget` 而效果不再提升时，说明已挖掘出数据的最大预测能力。\n*   **`objective`**：支持多种任务类型，包括回归 (`SquaredLoss`)、二分类\u002F多分类 (`LogLoss`, `MultiLogLoss`) 以及排序任务。\n\n### 高级特性简述\n\n*   **自动处理缺失值与类别特征**：无需手动填充缺失值或对类别变量进行独热编码。\n*   **模型导出**：训练完成的模型可无缝导出为 **XGBoost** 或 **ONNX** 格式，便于在生产环境中部署。\n*   **因果推断与漂移监控**：内置支持因果效应估计及数据\u002F概念漂移监测，无需重新训练模型。","某电商数据团队需要在每日凌晨快速构建用户流失预测模型，以支持当天的精准营销干预。\n\n### 没有 perpetual 时\n- 数据科学家需花费数小时进行繁琐的超参数网格搜索，难以在有限的计算窗口内找到最优解。\n- 面对包含大量类别型特征（如商品 ID、地区）的用户行为数据，预处理编码过程复杂且容易引入信息损失。\n- 业务方急需评估“发送优惠券”这一干预措施的实际因果效应，但传统模型需额外搭建复杂的因果推断框架。\n- 随着用户行为模式随时间漂移，模型性能下降明显，缺乏原生的漂移监控机制导致预警滞后。\n\n### 使用 perpetual 后\n- 仅需设定一个简单的 `budget` 参数（如从 0.5 调至 1.0），perpetual 即可在单次运行中自动收敛至最优精度，彻底免除调参耗时。\n- 利用其原生支持的类别变量处理和可学习缺失值分裂特性，直接输入原始数据即可获得高鲁棒性结果，简化了特征工程。\n- 调用内置的因果机器学习功能，无需额外代码即可直接量化营销策略对减少流失的真实提升效果。\n- 依托 Rust 核心实现的高性能推理与原生漂移监控，模型不仅能秒级完成训练，还能实时感知数据分布变化并触发告警。\n\nperpetual 通过“零调参”的高性能架构，将原本需要数天的建模与验证周期压缩至分钟级，让数据团队能专注于策略而非算法调试。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fperpetual-ml_perpetual_944e52de.png","perpetual-ml","Perpetual ML","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fperpetual-ml_6e8b3268.png","State-of-the-art machine learning at scale",null,"hello@perpetual-ml.com","https:\u002F\u002Fperpetual-ml.com\u002F","https:\u002F\u002Fgithub.com\u002Fperpetual-ml",[81,85,89,93,97,101,105,108,111],{"name":82,"color":83,"percentage":84},"Rust","#dea584",59.1,{"name":86,"color":87,"percentage":88},"Python","#3572A5",20.8,{"name":90,"color":91,"percentage":92},"Jupyter Notebook","#DA5B0B",17.6,{"name":94,"color":95,"percentage":96},"R","#198CE7",2.1,{"name":98,"color":99,"percentage":100},"PowerShell","#012456",0.2,{"name":102,"color":103,"percentage":104},"C","#555555",0.1,{"name":106,"color":107,"percentage":104},"Makefile","#427819",{"name":109,"color":110,"percentage":104},"Shell","#89e051",{"name":112,"color":113,"percentage":114},"CSS","#663399",0,668,37,"2026-04-05T01:15:27","Apache-2.0",1,"未说明","不需要 GPU，基于 Rust 核心实现 CPU 加速",{"notes":123,"python":124,"dependencies":125},"该工具核心由 Rust 编写，提供 Python 和 R 绑定。无需超参数优化，仅需设置 budget 参数。支持零拷贝训练（配合 Polars）。可选依赖用于扩展功能：pandas 支持直接训练，polars 支持零拷贝，scikit-learn 提供兼容接口，xgboost\u002Fonnxruntime 用于模型格式转换。可通过 pip、conda 或 cargo 安装。","3.8+",[126,127,128,129,130],"pandas (可选)","polars (可选)","scikit-learn (可选)","xgboost (可选)","onnxruntime (可选)",[14,132,16],"其他",[134,135,136,137,138,139,140,141,142,143],"rust","gbdt","gbm","gradient-boosted-trees","gradient-boosting","gradient-boosting-decision-trees","kaggle","machine-learning","python","data-science","2026-03-27T02:49:30.150509","2026-04-07T04:10:01.794309",[147,152,157,161,166,171],{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},20807,"为什么在包含高基数分类特征（类别数量超过 1000）时模型会崩溃并出现 SIGSEGV 错误？","这是一个已知问题，当分类特征的类别数量超过默认阈值（max_cat=1000）时，旧版本可能会引发段错误（SIGSEGV）。该问题已在 v1.9.4 版本中修复。请升级您的 PerpetualBooster 到最新版本：\n\npip install --upgrade perpetual\n\n如果问题仍然存在，请确保数据格式正确，或者尝试将高基数特征手动转换为数值型特征后再输入模型。","https:\u002F\u002Fgithub.com\u002Fperpetual-ml\u002Fperpetual\u002Fissues\u002F84",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},20808,"如何在 SLURM 集群或共享资源环境中限制 PerpetualBooster 的 CPU 和内存使用量？","PerpetualBooster 支持在拟合时显式设置资源限制。您可以在初始化模型或通过 fit 参数设置 num_threads（线程数）和 memory_limit（内存限制）。\n\n示例代码：\nmodel = PerpetualBooster()\nmodel.fit(X, y, num_threads=4, memory_limit=\"2GB\")\n\n这能确保模型只使用分配给它的资源，避免在共享节点上占用过多资源导致作业被杀或运行缓慢。此逻辑在 v1.9.3 及更高版本中已得到改进。","https:\u002F\u002Fgithub.com\u002Fperpetual-ml\u002Fperpetual\u002Fissues\u002F85",{"id":158,"question_zh":159,"answer_zh":160,"source_url":156},20809,"为什么小数据集的训练时间异常长（例如超过 8 小时）？","这通常是由于多输出 booster 中的超时逻辑问题或在共享资源环境（如 SLURM）中未正确限制资源导致的。该问题已在 v1.9.3 版本中修复。\n\n解决方案：\n1. 升级到 v1.9.3 或更高版本。\n2. 在拟合时显式设置 memory_limit 和 num_threads，防止模型尝试使用不可用的全部系统资源。\n3. 检查是否因资源争用导致进程挂起。",{"id":162,"question_zh":163,"answer_zh":164,"source_url":165},20810,"如何使用 Precision、F1 等非可微指标作为自定义评估函数？","Gradient Boosting 依赖损失函数的梯度（gradient）和黑森矩阵（hessian）进行优化。Precision 和 F1 是基于硬分类（0 或 1）的阶跃函数，不可微分，因此不能直接作为自定义损失函数用于训练。\n\n推荐做法：\n1. 使用可微的损失函数（如 \"LogLoss\"）训练模型。\n2. 在验证集上预测概率。\n3. 通过遍历不同的阈值（0.01 到 0.99），找到使 F1 或 Precision 最大的最佳阈值。\n\n示例代码：\nprobs = model.predict(X_val)\nbest_threshold = 0.5\nfor threshold in np.linspace(0.01, 0.99, 100):\n    preds = (probs >= threshold).astype(int)\n    score = f1_score(y_val, preds)\n    if score > best_f1:\n        best_f1 = score\n        best_threshold = threshold","https:\u002F\u002Fgithub.com\u002Fperpetual-ml\u002Fperpetual\u002Fissues\u002F77",{"id":167,"question_zh":168,"answer_zh":169,"source_url":170},20811,"在 TabArena 基准测试中，如何正确处理训练集和验证集的划分以优化 PerpetualBoosting 的性能？","由于 PerpetualBooster 原生不支持传入独立的验证集用于早停，在基准测试中有以下几种策略：\n\n1. **全数据训练（选项 A）**：直接将所有可用数据 (T+A+B+C) 投入训练。这能评估模型的独立性能，但无法利用验证集进行超参数选择。\n2. **交叉验证集成（选项 B）**：将数据划分为训练集 (T) 和验证集 (A=B=C)，仅用 T 训练，用验证集评分进行算法选择。\n3. **两阶段训练（选项 C，推荐）**：先按选项 B 进行交叉验证以选择最佳配置，然后使用选定的配置在全部数据 (T+A+B+C) 上重新训练最终模型。这通常能获得最好的预测结果。\n\n在 TabArena 中，建议将不同的预算（budgets）视为不同的超参数配置，每个配置限制运行时间（如 1 小时），最后选择验证集得分最高的配置。","https:\u002F\u002Fgithub.com\u002Fperpetual-ml\u002Fperpetual\u002Fissues\u002F66",{"id":172,"question_zh":173,"answer_zh":174,"source_url":165},20812,"如果目标变量是字符串类型（如 'YES', 'NO'），模型报错或行为异常怎么办？","这是一个已知 Bug。PerpetualBooster 在某些版本中无法正确处理非数值型的目标变量（如字符串标签）。\n\n解决方法：在训练前手动将目标变量转换为数值型（例如将 'YES' 映射为 1，'NO' 映射为 0）。\n\n示例代码：\ny = y.map({'YES': 1, 'NO': 0})\nmodel.fit(X, y)\n\n该问题计划在后续版本中修复，但在当前版本中请务必进行预处理。",[176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251,256,261,266,271],{"id":177,"version":178,"summary_zh":179,"released_at":180},126803,"v3.0.0-rc.2","v3.0.0-rc.2：针对最弱数据集的进一步优化","2026-04-02T10:34:32",{"id":182,"version":183,"summary_zh":184,"released_at":185},126804,"v3.0.0-rc.1","修复持续集成","2026-03-24T09:03:50",{"id":187,"version":188,"summary_zh":189,"released_at":190},126805,"v3.0.0-rc.0","首个 v3.0.0-rc.0 发布候选版本，用于提升 TabArena 基准测试中的性能。","2026-03-24T08:43:38",{"id":192,"version":193,"summary_zh":194,"released_at":195},126806,"v2.1.0","改进了序列化和内存分配。","2026-03-06T09:22:06",{"id":197,"version":198,"summary_zh":199,"released_at":200},126807,"v2.0.0","重构目标 API\n重构 DML","2026-03-05T08:49:46",{"id":202,"version":203,"summary_zh":204,"released_at":205},126808,"v1.9.4","修复特征子采样下的直方图分配","2026-03-04T13:07:31",{"id":207,"version":208,"summary_zh":209,"released_at":210},126809,"v1.9.3","修复多输出超时问题。","2026-03-02T20:22:26",{"id":212,"version":213,"summary_zh":214,"released_at":215},126810,"v1.9.2","修复因高基数类别特征导致的栈溢出问题。","2026-02-27T11:42:28",{"id":217,"version":218,"summary_zh":219,"released_at":220},126811,"v1.9.1","修复排序 bug。","2026-02-26T16:50:21",{"id":222,"version":223,"summary_zh":224,"released_at":225},126812,"v1.9.0","添加更多目标","2026-02-22T21:04:38",{"id":227,"version":228,"summary_zh":229,"released_at":230},126813,"v1.8.0","Data drift and concept drift support without retraining and without ground truth.","2026-02-20T20:37:19",{"id":232,"version":233,"summary_zh":234,"released_at":235},126814,"v1.7.0","Continual learning support.","2026-02-19T18:43:40",{"id":237,"version":238,"summary_zh":239,"released_at":240},126815,"v1.6.0","- Add support for calibration without re-training\r\n- Implement meta-learners in Rust\r\n- Update tutorials and docs\r\n- Update Rust folder and file naming","2026-02-15T22:23:31",{"id":242,"version":243,"summary_zh":244,"released_at":245},126816,"v1.5.0","Fixed tutorials.","2026-02-11T12:01:57",{"id":247,"version":248,"summary_zh":249,"released_at":250},126817,"v1.4.0","Improved performance.","2026-02-09T07:35:52",{"id":252,"version":253,"summary_zh":254,"released_at":255},126818,"v1.3.0","Add more causal ml methods.\r\nFix docs.","2026-02-07T15:18:23",{"id":257,"version":258,"summary_zh":259,"released_at":260},126819,"v1.2.0","Causal ML support.","2026-02-06T20:46:00",{"id":262,"version":263,"summary_zh":264,"released_at":265},126820,"v1.1.2","Update docs.yml dependencies.","2026-02-01T21:17:02",{"id":267,"version":268,"summary_zh":269,"released_at":270},126821,"v1.1.1","Fix docs.","2026-02-01T21:09:24",{"id":272,"version":273,"summary_zh":274,"released_at":275},126822,"v1.1.0","Improve numerical stability and docs.\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fperpetual-ml\u002Fperpetual\u002Fcompare\u002Fv1.0.43...v1.1.0","2026-02-01T20:58:17"]