optuna

GitHub
14k 1.3k 非常简单 1 次阅读 今天MIT开发框架
AI 解读 由 AI 自动生成,仅供参考

Optuna 是一款专为机器学习打造的自动超参数优化框架。在训练 AI 模型时,手动调整学习率、网络层数等超参数不仅耗时费力,还难以找到最优组合,而 Optuna 正是为了解决这一痛点而生。它能自动搜索并锁定最佳参数配置,显著提升模型性能与开发效率。

这款工具特别适合机器学习开发者、数据科学家及算法研究人员使用。无论是初学者还是资深专家,都能通过 Optuna 简化繁琐的调参工作,将更多精力投入到模型架构设计与业务逻辑中。

Optuna 的核心亮点在于其独特的“定义即运行”(define-by-run)API 设计。不同于传统静态配置方式,它允许用户使用标准的 Python 代码(包括条件判断和循环)动态构建搜索空间,极大地提高了代码的模块化程度与灵活性。此外,Optuna 架构轻量、跨平台兼容性强,并内置了多种前沿的高效优化算法,支持多目标优化与约束处理。只需简单安装,即可轻松集成到现有的 Python 项目中,帮助团队快速实现自动化调优。

使用场景

某电商数据团队正在构建用户流失预测模型,急需通过调整随机森林算法的超参数来提升准确率。

没有 optuna 时

  • 人工试错效率极低:数据科学家只能凭经验手动修改树的数量、最大深度等参数,每次调整都需重新运行耗时数小时的训练脚本。
  • 搜索空间僵化:难以动态处理参数间的依赖关系(例如仅当“分裂策略”为特定值时才调整“最大特征数”),导致大量无效组合被重复测试。
  • 资源浪费严重:缺乏智能剪枝机制,即使某些参数组合在早期迭代中表现极差,程序仍会固执地跑完全部流程,白白消耗算力。
  • 结果不可复现:手工记录的参数表格混乱且易出错,难以追溯哪组配置产生了最佳模型,协作沟通成本高昂。

使用 optuna 后

  • 自动化高效寻优:optuna 自动调度数百次试验,利用贝叶斯优化算法在短短几小时内就找到了比人工调优准确率高出 3% 的最佳参数组合。
  • 动态定义搜索空间:借助 Python 原生语法,团队轻松构建了包含条件判断的灵活搜索空间,确保只生成逻辑合法的参数组合。
  • 智能提前终止:通过内置的剪枝器,optuna 实时监测中间结果,自动杀掉表现不佳的试验,将整体计算资源消耗降低了 60%。
  • 可视化与可追溯:optuna 自动生成参数重要性图表和历史轨迹,团队能清晰看到决策路径,快速锁定关键影响因子并复用最佳配置。

optuna 将原本需要数周的人工调参工作压缩至一天内完成,让数据团队能从繁琐的实验中解放出来,专注于业务逻辑的创新。

运行环境要求

操作系统
  • 未说明
GPU
  • 非必需(框架本身为纯 Python 实现,不依赖特定 GPU
  • 若配合 PyTorch/TensorFlow 等深度学习库使用,则需遵循相应库的 GPU 要求)
内存

未说明

依赖
notesOptuna 是一个轻量级、跨平台的超参数优化框架,核心安装无特殊硬件要求。若使用 AutoSampler 功能,需额外安装 cmaes、scipy 和 torch(CPU 版本即可满足基本需求)。支持通过 SQLite 等存储后端实现分布式优化和 Web 仪表盘监控。
python3.9, 3.10, 3.11, 3.12, 3.13, 3.14
scikit-learn (示例依赖)
cmaes (AutoSampler 依赖)
scipy (AutoSampler 依赖)
torch (可选,用于 AutoSampler 及深度学习集成)
optuna-dashboard (可选,可视化面板)
optunahub (可选,功能共享平台)
optuna hero image

快速开始

Optuna:超参数优化框架

Python pypi conda GitHub license Read the Docs

:link: 官网 | :page_with_curl: 文档 | :gear: 安装指南 | :pencil: 教程 | :bulb: 示例 | Twitter | LinkedIn | Medium

Optuna 是一个自动超参数优化软件框架,专为机器学习设计。它采用命令式、即“运行时定义”的用户 API。得益于这种“运行时定义”的 API,使用 Optuna 编写的代码具有很高的模块化特性,用户可以动态地构建超参数的搜索空间。

:loudspeaker: 最新消息

帮助我们打造 Optuna 的下一个版本!

Optuna 5.0 路线图已发布,欢迎审阅。请查看 Optuna 计划中的改进内容,并在 GitHub 问题页面上分享您的反馈。我们也欢迎 PR 贡献!

请您抽出几分钟时间填写 这份调查问卷,告诉我们您目前如何使用 Optuna,以及您希望看到哪些改进。🤔 全部问题均为可选。🙇‍♂️

:fire: 核心功能

Optuna 具备以下现代化功能:

基本概念

我们使用以下术语:studytrial

  • Study:基于目标函数的优化
  • Trial:目标函数的一次执行

请参考下面的示例代码。Study 的目标是通过多次 Trial(例如 n_trials=100)找到最优的超参数组合(如 regressorsvr_c)。Optuna 是一个旨在自动化和加速优化 Study 的框架。

使用 scikit-learn 的示例代码

在 Colab 中打开

import optuna
import sklearn


# 定义一个需要最小化的目标函数。
def objective(trial):

    # 调用 Trial 对象的建议方法生成超参数。
    regressor_name = trial.suggest_categorical("regressor", ["SVR", "RandomForest"])
    if regressor_name == "SVR":
        svr_c = trial.suggest_float("svr_c", 1e-10, 1e10, log=True)
        regressor_obj = sklearn.svm.SVR(C=svr_c)
    else:
        rf_max_depth = trial.suggest_int("rf_max_depth", 2, 32)
        regressor_obj = sklearn.ensemble.RandomForestRegressor(max_depth=rf_max_depth)

    X, y = sklearn.datasets.fetch_california_housing(return_X_y=True)
    X_train, X_val, y_train, y_val = sklearn.model_selection.train_test_split(X, y, random_state=0)

    regressor_obj.fit(X_train, y_train)
    y_pred = regressor_obj.predict(X_val)

    error = sklearn.metrics.mean_squared_error(y_val, y_pred)

    return error  # 与 Trial 对象关联的目标值.


study = optuna.create_study()  # 创建一个新的 study。
study.optimize(objective, n_trials=100)  # 调用目标函数的优化。

[!NOTE] 更多示例可在 optuna/optuna-examples 中找到。

这些示例涵盖了多种问题设置,如多目标优化、约束优化、剪枝以及分布式优化。

安装

Optuna 可在 Python 包索引Anaconda Cloud 上获取。

# PyPI
$ pip install optuna
# Anaconda Cloud
$ conda install -c conda-forge optuna

[!IMPORTANT] Optuna 支持 Python 3.9 及以上版本。

集成

Optuna 提供了与多种第三方库的集成功能。这些集成可以在 optuna/optuna-integration 中找到,相关文档请参见 这里

支持的集成库

Web 仪表盘

Optuna Dashboard 是一个用于 Optuna 的实时 Web 仪表盘。 您可以通过图表和表格查看优化历史、超参数重要性等信息。 无需编写 Python 脚本来调用 Optuna 的可视化 函数。 欢迎提出功能请求和报告 bug!

optuna-dashboard

optuna-dashboard 可以通过 pip 安装:

$ pip install optuna-dashboard

[!提示] 请使用下面的示例代码体验 Optuna Dashboard 的便捷性。

启动 Optuna Dashboard 的示例代码

将以下代码保存为 optimize_toy.py

import optuna


def objective(trial):
    x1 = trial.suggest_float("x1", -100, 100)
    x2 = trial.suggest_float("x2", -100, 100)
    return x1**2 + 0.01 * x2**2


study = optuna.create_study(storage="sqlite:///db.sqlite3")  # 创建一个新的带有数据库的研究
study.optimize(objective, n_trials=100)

然后尝试运行以下命令:

# 运行上述研究
$ python optimize_toy.py

# 基于存储 `sqlite:///db.sqlite3` 启动仪表盘
$ optuna-dashboard sqlite:///db.sqlite3
...
正在监听 http://localhost:8080/
按 Ctrl-C 退出。

OptunaHub

OptunaHub 是一个用于分享 Optuna 功能的平台。 您可以使用已注册的功能,并发布自己的软件包。

使用已注册的功能

optunahub 可以通过 pip 安装:

$ pip install optunahub
# 安装 AutoSampler 的依赖(对于 PyTorch 来说,仅 CPU 版本就足够了)
$ pip install cmaes scipy torch --extra-index-url https://download.pytorch.org/whl/cpu

您可以使用 optunahub.load_module 加载已注册的模块。

import optuna
import optunahub


def objective(trial: optuna.Trial) -> float:
    x = trial.suggest_float("x", -5, 5)
    y = trial.suggest_float("y", -5, 5)
    return x**2 + y**2


module = optunahub.load_module(package="samplers/auto_sampler")
study = optuna.create_study(sampler=module.AutoSampler())
study.optimize(objective, n_trials=10)

print(study.best_trial.value, study.best_trial.params)

更多详情,请参阅 optunahub 文档

发布您的软件包

您可以通过 optunahub-registry 发布您的软件包。 请参阅 OptunaHub 中的 贡献者教程

沟通

贡献

我们非常欢迎对 Optuna 的任何贡献!

如果您是 Optuna 的新手,请查看 good first issues。这些问题相对简单、定义明确,通常是您熟悉贡献流程和其他开发人员的好起点。

如果您已经为 Optuna 做过贡献,我们建议您关注其他 contribution-welcome issues

有关如何为项目做出贡献的通用指南,请参阅 CONTRIBUTING.md

参考文献

如果您在某个研究项目中使用了 Optuna,请引用我们的 KDD 论文 “Optuna:下一代超参数优化框架”

BibTeX
@inproceedings{akiba2019optuna,
  title={{O}ptuna: A Next-Generation Hyperparameter Optimization Framework},
  author={Akiba, Takuya and Sano, Shotaro and Yanase, Toshihiko and Ohta, Takeru and Koyama, Masanori},
  booktitle={The 25th ACM SIGKDD International Conference on Knowledge Discovery \& Data Mining},
  pages={2623--2631},
  year={2019}
}

许可证

MIT 许可证(详见 LICENSE)。

Optuna 使用了 SciPy 和 fdlibm 项目的代码(详见 LICENSE_THIRD_PARTY)。

版本历史

v4.8.02026/03/16
v4.7.02026/01/19
v3.2.02023/05/30
v4.6.02025/11/10
v4.5.02025/08/18
v4.4.02025/06/16
v4.3.02025/04/14
v4.2.12025/02/12
v3.5.12025/01/27
v3.6.22025/01/27
v3.4.12025/01/27
v4.2.02025/01/20
v4.1.02024/11/11
v4.0.02024/09/02
v4.0.0-b02024/07/16
v3.6.12024/04/01
v3.6.02024/03/18
v3.5.02023/12/11
v3.4.02023/10/17
v3.3.02023/08/07

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

159.6k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架