Optuna:一个专注超参数优化的 Python 框架

Optuna 在 GitHub 上已经拿到 14,307 Star 了。

它是一个面向机器学习的自动超参数优化框架,核心卖点是 define-by-run 风格的 API。用户可以用平常的 Python 代码动态定义搜索空间,不需要像传统工具那样预先写死参数配置。

正文顶部截图

1、这玩意儿是干嘛的

机器学习模型的效果很大程度上取决于超参数选择。学习率、树的深度、正则化系数……这些参数组合起来几乎是无穷的,手动调参既慢又容易陷入局部最优。

Optuna 把这件事自动化了。它把一次完整的优化过程叫做 study,把每次目标函数的执行叫做 trial。一个 study 包含若干 trial,框架会自动在这些 trial 里找出表现最好的那组超参数。

代码层面,Optuna 的做法很直接:

import optuna

def objective(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)
    else:
        rf_max_depth = trial.suggest_int("rf_max_depth", 2, 32)
    # ... 训练并返回误差

study = optuna.create_study()
study.optimize(objective, n_trials=100)

注意搜索空间是动态构建的:选择 SVR 才需要 C,选择 RandomForest 才需要 max_depth。这种条件分支在传统预定义搜索空间的工具里往往很难表达。

2、为什么要用它

市面上做超参数优化的工具不少,Optuna 的优势可以概括为几点:

第一,安装和使用门槛低。支持 Python 3.9 及以上,一行 pip install optuna 就能跑起来。

第二,算法层面跟得上。内置了多种采样器和剪枝策略,能在训练过程中自动砍掉没有潜力的 trial,省下大量计算资源。

第三,并行扩展简单。官方文档提到,把任务扩展到几十上百个 worker,代码通常不需要大改。

第四,可视化工具齐全。除了代码里的 plot 函数,还有独立的 Optuna Dashboard,可以实时查看优化历史、超参数重要性等信息。

README区域截图

3、支持哪些框架

Optuna 不是单打独斗。它提供了大量第三方集成,覆盖主流机器学习库:

  • CatBoost、LightGBM、XGBoost
  • PyTorch、PyTorch Lightning、PyTorch Ignite
  • TensorFlow、Keras、fastai
  • Dask、scikit-learn

这些集成示例集中在 optuna-examples 仓库里,README 里有对应链接,可以直接参考。

4、安装和使用

最方便的安装方式是通过 PyPI:

pip install optuna

如果用 conda:

conda install -c conda-forge optuna

Optuna Dashboard 需要单独安装:

pip install optuna-dashboard

启动时指定 storage 即可:

optuna-dashboard sqlite:///db.sqlite3

默认监听 localhost:8080,打开浏览器就能看到图表和表格。

5、OptunaHub 是什么

OptunaHub 是官方推出的特性共享平台。用户可以从上面加载别人封装好的 sampler 或可视化组件,也可以把自己的包提交上去。

加载方式类似这样:

import optunahub

module = optunahub.load_module(package="samplers/auto_sampler")
study = optuna.create_study(sampler=module.AutoSampler())

这降低了尝试新算法的成本,也避免了每个人都重复造轮子。

6、适合哪些人用

  • 正在训练机器学习模型、需要系统调参的算法工程师
  • 做 AutoML 相关项目、需要可扩展优化后端的开发者
  • 用 scikit-learn 或 PyTorch 生态、希望减少手动调参时间的研究人员

Optuna 的代码是 MIT 协议,可以直接商用。如果你平时调参还靠网格搜索或者手动试,值得花半小时跑一遍官方 quickstart。

t-learn 或 PyTorch 生态、希望减少手动调参时间的研究人员

Optuna 的代码是 MIT 协议,可以直接商用。如果你平时调参还靠网格搜索或者手动试,值得花半小时跑一遍官方 quickstart。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐