在机器学习的大多数漂亮的结果背后,是一个研究生(我)或工程师花费数小时训练模型和调整算法参数。正是这种乏味无聊的工作使得自动化调参成为可能。
这些算法提供了两个关键的好处:他们最大化模型的性能: 例如,DeepMind 使用 PBT在星际争霸中获得超人般的表现; Waymo 使用实现无人驾驶汽车的 PBT.
他们将训练成本降到最低: HyperBand 和 ASHA 覆盖到高质量的配置 以前的方法所需时间的一半; 基于总体的数据增强算法 实现指数级削减成本
然而,我们看到,绝大多数研究人员和团队没有利用这种算法。
为什么多数现有的超参数搜索框架没有这些新的优化算法。一旦达到一定的规模,大多数现有的并行超参数搜索解决方案可能会很难使用ーー您需要为每次运行配置每台机器,并经常管理一个单独的数据库。
实际上,实现和维护这些算法需要大量的时间和工程。
但事实并非如此。我们相信,没有理由说超参数调优需要如此困难。所有的人工智能研究人员和工程师都应该能够在8个 gpu 上无缝运行并行异步 格搜索,甚至可以扩展到利用基于分布的训练或者云上的任何贝叶斯优化算法。
在这篇博客文章中,我们将介绍 Tune, 一个基于 Ray 的强大的超参数调整库,旨在消除艰辛、设置实验执行和超参数调整过程中的难度。
搜索算法注意: 从2019年8月12日起,HpBandSter 支持 HyperBand、 Random Search 和 BOHB。支持随机搜索、 HyperBand 和 Bayesian 优化。Optuna 支持中位数(百分位数)停止,ASHA,随机搜索和贝叶斯优化(TPE)。HyperOpt 支持贝叶斯优化和随机搜索。Tune 支持 PBT,BOHB,ASHA,HyperBand,Median Stopping,Random Search,Bayesian Optimization (TPE,等等) ,以及许多其他由于库集成而产生的功能
Tune 简化了扩展
通过添加少于10行的 Python 代码,利用机器上的所有核心和 gpu 来执行并行异步超参数调优。
如果你遇到任何问题,请在评论中发表。
Tune 与 MLFlow 和 TensorBoard 等实验管理工具无缝集成。
Tune 为优化算法提供了一个灵活的接口,允许您轻松地实现和扩展新的优化算法。
您可以使用 Tune 来利用和扩展许多尖端优化算法和库,比如 HyperOpt (下面)和 Ax,而无需修改任何模型训练代码。
使用 Tune 很简单
现在让我们深入到一个具体的例子中,它展示了如何利用一个流行的早期停止算法(ASHA)。我们将首先在您的工作站上的所有核心上运行一个使用 Tune 的超参数调优脚本示例。然后,我们将使用10行代码使用 Ray 在云上进行同样的超参数优化实验。
您可以在这里下载超参数调优代码的完整版本(这里是分布式实验配置)。
我们将在这个例子中使用 PyTorch,但是我们也有 Tensorflow 和 Keras可用的例子。
Tune 被包装成 Ray 的一部分。要运行这个示例,您需要安装以下命令:pip install ray torch torchvision
让我们用 PyTorch 编写一个神经 络:
要开始使用 Tune,向下面的 PyTorch 培训函数添加一个简单的日志记录语句。
注意,在上面的培训脚本中有一些辅助函数; 您可以在这里看到它们的定义。
运行 Tune
让我们做一个试验,从学习率和动量的均匀分布中随机抽取样本。
现在,你已经跑完了你的第一个Tune!通过指定 GPU 资源 ,您可以很容易地启用 GPU 的使用ー参见文档了解更多细节。然后我们可以绘制这个试验的表现(需要 matplotlib)。
并行执行和提前停止
分布式执行
启动一个分布式超参数搜索通常工作量太大。但是 Ray 和 Tune 使得一切变得简单
使用简单的配置文件在云上启动
关于找一找教程
本站提供了软件编程、 站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[Ray Tune: 炼丹师的调参新姿势]http://www.zyiz.net/tech/detail-151045.html
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览210014 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!