项目地址 http://github.com/awslabs/autogluon

项目文档 https://autogluon.mxnet.io/

扫描二维码加入开发者微信群


看到灵魂调参师 @Justin ho 的朋友圈顺手转了下,结果被报道了 https://mp.weixin.qq.com/s/ChYLuxGxsQK0g6MImimSDQ

不过我们确实观察到了相似的结论。AutoML使用大概15倍於单次训练的代价,得到的结果可能比手调的要好。这个主要是对于CV而言,尤其是detection模型,预计GluonCV里面模型很快赢来一大波提升。

但更一般的AutoML还是比较难。例如Tabular数据的,很多时候手工设计的特征还是挺好。

AutoGluon取了一个巧,我们目前只支持GluonCV和GluonNLP里面的任务,和额外的Tabular数据(因为一个小哥之前有过经验)。所以我们可以把以前的很有经验东西放进去来减小搜参空间,从而提升速度。

当然AutoGluon还是早期项目,我本来想是让团队再开发一些时间再公开。还有太多有意思的应用、演算法、硬体加速可以做的。非常欢迎小伙伴能一起贡献。


AutoGluon 这个项目是我在产假期间开始做的,所以对她的感情像我的女儿一样。第一个commit基本上包含了 AutoGluon 这个项目的整体设计。个人认为从 API 角度,AutoGluon 是调参工具里面设计最为精巧的,可以通过加几行代码,就可以轻松地将已有的 python 代码转化为可以搜索的主函数,并且开始搜索:

@ag. args(
batch_size=128,
lr=ag.Real(1e-4, 1e-2))
def train_fn(args, reporter=None):
print(args.lr, args.batch_size)
reporter(epoch=0, accuracy=0.9)

myscheduler = ag.scheduler.FIFOScheduler(train_fn, num_trials=25)
myscheduler.run()

系统里面每一个部分都是模块化的,便于扩展,下面给一个系统图:

每一个任务都由:1. 主函数,2. 参数,3. 计算资源 组成。其中搜索演算法可以提供参数优化,资源管理器动态管理分发计算资源,任务调度器来管理任务调度和提前终止。

AutoGluon的另外一个优势就是分散式训练,不管你有没有分散式训练的经验,只需要提供一个 IP 地址,autogluon会自动地把任务分发到远端的机器上:

ip_addrs = [35.166.23.232』, 35.166.30.159』]
myscheduler = ag.scheduler.FIFOScheduler(train_fn, num_trials=25, remote_ips=ip_addrs)

后台系统会自动地根据不同机器的计算资源,自动调配,下面是分散式的资源管理流程图:

AutoGluon 的兼容性和扩展性,可以很容易地将科研演算法 开展到大规模实验中。在 AutoGluon 开发的之初就吸引到了亚马逊内部的 AutoML 大佬 Matthias ,他们团队使用 AutoGluon 做了 multi-fidelity 的搜索演算法,有兴趣的小伙伴可以关注一下他们最新的论文:Model-based Asynchronous Hyperparameter Optimization https://arxiv.org/abs/2003.10865 。 这个演算法也很快会开源到 AutoGluon 项目里。

最后提一下我们刚刚开源了 RegNet 的搜索,以及 Fast AutoAugment 的实现,这些将会用来作为我们 CVPR tutorial 的资料,提前打个广告。


AutoGluon特点总结如下。

  • 三大应用领域
    • image(image classification、object detection)
    • text(text classification)
    • tabular data(tabular prediction)
  • 两大功能
    • 自动调参
      • 不仅支持mxnet,还支持PyTorch
      • 支持的搜索策略包括random search、grid search、RL、Bayesian optimization等
    • NAS(仅支持image classification,目前只有ENAS)

与AutoGluon类似的AutoML工具还有下图所示项目。

其中最值得一提的是微软的NNI。支持多种框架;包括四大功能:feature engineering、architecture search、hyperparameter tuning、model compression。其中architucture search包括5种演算法(AutoGluon当前包括ENAS),hyperparameter tuning包括12种演算法(AutoGluon当前是4种)。

相比NNI,AutoGluon当前还比较单薄,不过AutoGluon有一个优势——GluonCV和GluonNLP,基于这两个非常棒的工具箱,AutoGluon可以在CV和NLP两个领域做出自己的特色。但是这个优势同时又不算优势,因为GluonCV和GluonNLP是基于mxnet的,mxnet的用户量不够大。


题外话

Justin Ho的回答不太严谨,Justin Ho想对比手工调参与NAS谁更优,「手工调参」一方用的是GluonCV的Faster R-CNN,「NAS」一方用的是AutoGluon的检测demo(基于YOLOv3),但是AutoGluon的检测demo并没有使用NAS,搜索空间只针对LR(5e-4和1e-4)。Justin Ho的结论「被NAS打爆了」,「还爆了5个点」值得商榷。


金庸迷来强答,在下乔峰(Amazon AI),习得降龙十八掌(Autogluon),前丐帮帮主南苑大王(HPONAS title),又称战神(ag),内功十分深厚(Dask),战无不胜无往不利,但谁知我就只有一招亢龙有悔(task.fit),而这一招实际上是基于多次的实战经验(num of trials)中返回的最优策略(best configuration),而大家只知道我武功超群(best performance),却不知道我经历(Search Space)了什么和如何面对国雠家恨(Search Strategy)。不同性质的事件可能对大侠的成就有好或坏的影响(Performance estimation),不能保证每次都是好的结果(best reward),但可以获知的是大侠的精神品质的塑造(hyperparameter optimization)和武功的精进(neural architecture search)是长期时间和经验的累积(gpu hours power use)。虽然小说中有很多武功秘籍(tricks)靠天赋和奇遇可以得到,但不是每个对手(task)都能正中下怀(cover),而大多数人的人生都要靠不断地试错(searcher)才到得到一个不错的水平(baseline)。


亚马逊最近宣布推出Autogluon,这是一个新的开源库,开发人员可以使用该库构建包含图像、文本或表格数据集的机器学习应用程序。使用AutoGluon,只需编写几行代码就可以利用深度学习的力量来构建应用程序。

「AutoGluon推动机器学习的普适化,并将深度学习的好处带给所有开发人员,」 亚马逊AWS应用科学家Jonas Mueller说。

AutoGluon:用更少的代码,打造更高的SOTA性能模型

深度学习是机器学习的一部分,深度学习模型是受到人脑结构的启发而生成的。深度学习演算法通常包含不少层,用于学习输入数据的有用表示。比如,在面向图像识别的深度学习模型中,较低的层可检测更多的基本特征(颜色或边缘),而较高的层可用于识别更复杂的特征(如数字或对象)。

一般来讲,部署深度学习模型,实现最先进的性能需要广泛的专业知识。目前来看深度学习的应用仍主要局限在有限数量的专家中,但在过去十年里,为了简化深度学习应用难度,降低门槛,让机器学习为更多的技术专业人员方便使用,研究人员的努力已经收到了明显成效。

比如,开发人员早先必须投入大量时间和专业知识,来计算训练深度学习模型所需的梯度。梯度是向量,可以标识出效果最好的参数更新,最大程度地减少训练数据中实例的错误。像Theano这样的软体库甚至可以自动计算高度复杂的神经网路的梯度,让开发人员通过样板代码使用日益复杂的神经体系结构。

像Keras这样的较新的库代表了深度学习普适化的又一次进步。它允许开发人员指定参数,比如输入数量,深度学习模型的层数,甚至仅需几行代码就能定义一个网路层,从而简化了现有库中的大量样板代码,而这部分代码在现在的库中是必不可少的。

不过,即使有了这些进步,今天的深度学习专家和开发人员仍必须解决许多麻烦的问题,包括超参数调整、数据预处理、神经体系结构搜索以及迁移学习有关的决策。

  • 超参数调整涉及到如何选择神经网路中的层数、如何连接这些层(即网路的体系结构)以及如何训练网路。
  • 数据处理,包括数据分类和正确格式化矢量的数据预处理也可能是一个非常麻烦的过程。
  • 神经架构搜索涉及自动化架构工程,能够使开发人员为其机器学习模型找到最佳设计。所有这些决定都需要相当多的专业知识,提高了深度学习的门槛。

三行代码自动生成高性能模型,让人工决策自动化

AutoGluon为开发人员自动化了许多决策,开发人员只需三行代码即可生成高性能的神经网路模型!

开发人员无需在设计深度学习模型时手动尝试必须做出的数百种选择,只需简单地指定让训练好的模型就绪的时间即可。作为响应,AutoGluon可以利用可用的计算资源在其分配的运行时间内找到最强大的模型。

AutoGluon可以通过自动调整默认范围内的选择来生成仅需三行代码的模型,而这些默认范围在已知范围内可以很好地完成给定任务。开发人员只需指定他们何时准备好训练后的模型,AutoGluon就会利用可用的计算资源来在分配的runtime中找到最强大的模型。

Mueller说:「由于深度学习固有的不透明性,深度学习专家做出的许多选择都是基于特殊的直觉,没有很严格的科学指导规范。AutoGluon解决了这个问题,因为所有选择都会在默认范围内自动调整,而且默认范围对于特定任务和模型表现良好。」

官网指南:AutoGluon快速上手

AutoGluon官方网站为开发人员提供了许多教程,可利用它们对表格,文本和图像数据进行深度学习(诸如涵盖分类/回归等基本任务以及对象检测等更高级的任务)。

对于经验丰富的开发人员,AutoGluon网站提供有关如何使用AutoGluon API来自动提高定制应用程序中的预测性能的自定义说明。

参考链接:

https://www.amazon.science/amazons-autogluon-helps-developers-get-up-and-running-with-state-of-the-art-deep-learning-models-with-just-a-few-lines-of-code?

关于Autogluon简明使用教程和官方安装指南等更多信息,请见官网:

https://autogluon.mxnet.io/


推荐阅读:
相关文章