AutoML项目

本文罗列了一些热门的自动机器学习项目

1 AutoGluon

  • AutoGluon 更倾向于使用多模型的 ensemble,利用多层 stacking + k-fold bagging 来实现更好更稳定的模型效果。当然基本的超参优化也是具备的。

  • 自带了一系列的特征工程自动化组件,例如各种缺失值的预处理,日期特征,类别特征,文本特征处理等。但这部分功能相对基础

  • 针对部署时进行优化,比如训练子模型替代多模型;引入模型蒸馏

  • 代码整体的工程化考量感觉一般;支持分布式的执行,但略显简陋

  • 参考评价:目前最好的 domain specific autoML 框架方案

    官方文档 项目地址 相关论文

2 Optuna

  • 文档和代码设计清晰,工程质量上乘
  • 背后的调优pipeline是一个相对经验固化的流程
  • 参数搜索效率高(会提前终止过差的参数组合)
  • 搜参空间定义灵活(可动态定义,比如动态构建MLP的层数)
  • 支持增量训练( NN 按照 epoch 来训练,树模型按照 boost round 来训练)
  • 支持分布式的优化执行,对代码的侵入性低
  • 引入 dashboard 来展现优化过程的各类信息,方便分析
  • 参考评价:一个快速灵活的调参工具首选

3 TPOT

  • 比较早期的 autoML 框架;总体的流程是定义了一系列操作符和参数空间,然后根据定义的 template 来生成初代的 pipeline
  • 使用了遗传算法来做整体 pipeline 的生成优化/超参优化,pipeline 的长度和结构可以是非常灵活的;支持最终的pipeline export 为 Python 代码
  • 利用dask来实现了 sklearn pipeline 的并行化
  • 运行速度比较慢,最终效果一般;整体代码风格随意
  • 参考评价:可变 pipeline 的构建和代码生成值得学习

4 Ray Tune

  • 当下流行的autoML正规军,基于 Ray 来实现的 autoML 框架
  • scheduler模块实现了诸如 Hyperband 的调度策略,也包括很多高级算法,比如 async hyperband,population based training
  • searcher模块实现了参数的选择;在suggest模块中对接了很多成熟的超参优化库,如 hyperopt,optuna,skopt,dragonfly,ax,HpBandSter,hebo 等等
  • 框架兼容性好;主流训练框架支持 Lightgbm,PyTorch,PyTorch Lightening,Keras,Horovod ,训练过程支持 checkpointing 与 tensorboard 的对接,实验结果的记录也支持 MLflow 和 wandb,还包括底层架构 K8s,Docker 的对接支持等
  • 容错处理也相对更加完善,可以中途停止搜索,后续再继续优化
  • 生态环境成熟;分布式数据处理;完整性一致性体验好
  • 参考评价:当前分布式 autoML 的最佳选择

5 Katib

  • 真正的云原生超参优化框架(封装逻辑,容器化,只暴露yml配置文件)
  • 上手成本高,搭建复杂,没有解决核心痛点
  • 通过 CRD利用K8s的各种调度,监控,日志收集,容错等能力,支持语言灵活
  • 参考评价:代表未来的云原生 autoML 框架

6 NNI

  • 微软推出的通用框架;侧重于神经网络类的模型优化
  • 提升了 NAS 任务的抽象化与模块化,并提升训练过程的性能
  • 模型压缩方面也有很多自动优化的方法
  • 优化算法丰富;底层执行框架支持丰富
  • 文档完善,代码质量高
  • 参考评价:NN 模型的最佳 autoML 通用框架

7 GitHub集锦(20211201)

FLAML微软的研究团队-A Fast and Lightweight AutoML Library ⭐Star:1.6k ⚙Issue:16/99

Hypernets:A General Automated Machine Learning Framework ⭐Star:16k ⚙Issue:11/9

Vega:华为诺亚方舟实验室自研的AutoML算法工具链 ⭐Star:664 ⚙Issue:21/93

TransmogrifAI:用Scala编写的、运行在Apache Spark之上的AutoML库 ⭐Star:2.1k ⚙Issue:35/107

Model Search:一种实现AutoML算法的框架,用于大规模的模型体系结构搜索 ⭐Star:3.2k ⚙Issue:34/15

AutoGluon1 AutoGluon⭐Star:3.8k ⚙Issue:120/434

KerasTuner:一个易于使用、可伸缩的超参数优化框架,内置了贝叶斯优化、Hyperband和随机搜索算法。 ⭐Star:2.4k ⚙Issue:162/196

Torchmeta:基于PyTorch的少样本学习和元学习 ⭐Star:1.5k ⚙Issue:31/87

learn2learn:一个用于元学习研究的软件库 ⭐Star:1.6k ⚙Issue:17/138

Auto-PyTorch:联合并健壮地优化网络架构和训练超参数,以实现完全自动化的深度学习(AutoDL) ⭐Star:1.4k ⚙Issue:48/141

AdaNet:基于tensorflow的通用学习架构,轻量灵活 ⭐Star:3.3k ⚙Issue:65/47

NNI6 NNI ⭐Star:10.7k ⚙Issue:215/1214

H2O:H2O是一个用于分布式、可扩展的机器学习的内存平台。H2O使用熟悉的R、Python、Scala、Java、JSON和Flow笔记本/web界面,与Hadoop和Spark等大数据技术无缝对接。 ⭐Star:5.6k ⚙Issue:60/5788

Katib5 Katib ⭐Star:1.1k ⚙Issue:110/622

AutoKeras:由德州农工大学数据实验室开发的基于Keras的AutoML系统。 ⭐Star:8.2k ⚙Issue:59/726

auto-sklearn:一个自动化的机器学习工具包和scikit-learn估计器的简易替代 ⭐Star:5.9k ⚙Issue:97/709

Ludwig:Ludwig是一个基于PyTorch以数据为中心(data-centric)的深度学习框架,允许用户通过指定一个与数据模式匹配的声明性配置来训练和测试深度学习模型。 ⭐Star:8k ⚙Issue:146/475

automl-gs:原生Python代码管道,自动化训练高性能机器学习或深度学习模型(三年未更新) ⭐Star:2.1k ⚙Issue:24/6

TPOT3 TPOT ⭐Star:8.4k ⚙Issue:231/602

Optuna2 Optuna ⭐Star:5.6k ⚙Issue:120/872

Hyperopthyperopt-超参优化 ⭐Star:6k ⚙Issue:353/230

Featuretools:一个用于自动化特性工程的python库 ⭐Star:5.9k ⚙Issue:146/551

mljar-supervised: 抽象了预处理数据、构建机器学习模型和执行超参数调整以找到最佳模型的常用方法;并生成内容丰富的 Markdown 报告⭐Star:1.7k ⚙Issue:69/374

Determined:一个开源的深度学习训练平台 ⭐Star:1.5k ⚙Issue:27/98

AutoG:机器学习的autoML框架和工具箱-by 清华大学媒体与网络实验室 ⭐Star:513 ⚙Issue:3/11

8 参考

awesome-AutoML 主要摘自

往年同期文章