NAS 的目的是发现神经网络的最佳架构。Torch 与 Ax 的整合为多方针探究神经架构的研讨供给辅佐。本文将展示用 Multi-objective Bayesian NAS 运转彻底主动的神经架构查找。
Ax 中的多方针优化 (Multi-Objective Optimization) 能够有效地探究神经架构查找 (Neural Architecture Search) 中的 tradeoff ,比方模型功用和模型巨细或推迟之间的 tradeoff。
这种办法已经在 Meta 公司成功使用于各种产品,如 On-Device AI。
本文供给了一个端到端的教程,协助运用 TorchX。
Ax 简介
**神经网络的规划和杂乱性都在持续增加。**开发最先进的架构通常是一个繁琐和耗时的进程,需求范畴的专业知识和很多的工程尽力。
为了克服这些应战,人们提出了几种神经架构查找 (NAS) 办法,以主动规划功用杰出的架构,而不再需求人为监督 (human in the loop,HITL) 。
虽然样本功率很低,但像随机查找和网格查找这样的朴素法在超参数优化和 NAS 方面依然很受欢迎。 NeurIPS 2019 和 ICLR 2020 进行的一项研讨发现,80% 的 NeurIPS 论文和 88% 的 ICLR 论文运用 manual tuning 、随机查找或网格查找来调整 ML 模型超参数。
因为模型练习常常很耗时,而且可能需求很多的核算资源,所以尽量削减评价的 configurations 数量是非常重要的。
Ax 是一个用于黑箱优化的通用工具,答使用户运用贝叶斯优化等最先进的算法,在探究大型查找空间时达到 sample efficient。
**Meta 将 Ax 用于各种范畴,**包含超参数调整、NAS、用大规划 A/B 测试确认最佳产品设置、基础设施优化和规划尖端的 AR/VR 硬件范畴。
**许多 NAS 使用中,在多个 interest 的方针之间存在着天然的 tradeoff。**例如,当在设备上布置模型时,会期望最大极限地进步模型功用(如准确率),同时尽量削减 competing metrics,如功耗、推理推迟或模型巨细,以满意布置约束。
在许多情况下,模型功用的小幅下降换取大幅降低核算要求或猜测的推迟是能够被承受的(在某些情况下能够同时进步准确率和降低推迟!)。
Sustainble AI 的要害推动力就是有效探究这种权衡蕴含的原则性办法。
**Meta 使用 Ax 中的多方针贝叶斯 NAS (multi-objective Bayesian NAS) 成功地去探究这种权衡,**而且该办法已经是用于优化 AR/VR 设备上的 ML 模型的例行用法。
除了 NAS 使用,Meta 还开发了可被用于 AR 光学系统的高维多方针优化的办法 MORBO。
Ax 中的 multi-objective Bayesian NAS:
research.facebook.com/blog/2021/0…
用 Ax 实现彻底主动多方针 Nas
**Ax 的 Scheduler 答应以闭环的办法异步运转试验,**办法是不断将试验布置到外部系统,轮询成果,使用获取的数据生成更多的试验,并重复这一进程,直到满意停止条件。不需求人工干预或监督。这个 Scheduler 的特征有:
-
可定制并行性、故障容忍度和许多其他设置。
-
很多挑选最先进的优化算法。
-
保存正在进行的试验(SQL DB 或 json),并从存储中康复试验。
-
易于扩展到新的后端,以便长途运转试验评价。
下面是 Ax scheduler Tutorial 中的插图,总结了 Sceduler 怎么与任何用于运转试验评价的外部系统互动。
Ax sceduler Tutorial:
ax.dev/tutorials/s…
运用 Scheduler 运转主动 NAS,需求以下预备:
-
**界说一个 Runner,**担任发送一个具有特定架构的模型,在咱们挑选的平台上进行练习。(比方 Kubernetes,也可能只是本地上的 Docker 镜像)。下面的教程将用 TorchX 来处理练习作业的布置。
-
**界说一个 Metric,**担任从练习任务中获取客观方针(如准确度、模型巨细、推迟)。下面的教程将用 Tensorboard 来记录数据,因此能够运用与 Ax 捆绑的 Tensorboard metric。
教程
教程展示怎么运用 Ax 在盛行的 MNIST 数据集上为一个简略的神经网络模型运转多方针 NAS。
虽然基本的办法论可用于更杂乱的模型和更大的数据集,但这儿挑选了一个可在笔记本电脑上轻松运转的教程,可在一个小时内完结端到端的操作。
该例中,将会调整两个躲藏层的宽度、学习率、dropout probability、批尺度和练习迭代的数量。方针是使用多方针贝叶斯优化来 trade off 功用(验证集的准确率)和模型巨细(模型参数的数量)。
本教程运用了以下 PyTorch 库:
- PyTorch Lightnig(用于指定模型和练习循环)
github.com/Lightning-A…
- TorchX(用于长途/异步运转练习工作)
github.com/pytorch/tor…
- BoTorch(为 Ax 的算法供给动力的贝叶斯优化库)
github.com/pytorch/bot…
完整可运转实例见:
pytorch.org/tutorials/i…
成果
**教程中进行的 NAS 优化的终究成果能够鄙人面的 tradeoff plot 中看到。**这儿,每个点都对应一个试验的成果,颜色代表其迭代数,星星表示对方针施加的阈值界说的参考点。
**能够看到这种办法能够成功地探究验证精度和参数数量之间的 tradeoff,**既能找到验证精度高的大模型,也能找到验证精度低的小模型。
根据功用要求和模型巨细的约束,决策者现在能够挑选运用或进一步分析哪个模型。
可视化
**Ax 供给了一些可视化的东西协助分析和了解试验成果。**请重点重视对未知方针建模的高斯进程模型的功用,这些模型能够用来辅佐更快地发现 promising configurations。
Ax 辅佐更好地了解这些模型的准确率,以及它们在未见过的数据上的体现经过 leave-one-out cross-validation。
**鄙人面的数字中,能够看出模型拟合的相当好–猜测成果挨近实践成果,**猜测的 95% 置信区间很好地覆盖了实践成果。
此外,能够看出模型巨细 **(**num_params) 方针比验证精度 (val_acc) 方针更容易建模。
对 Ax 总结
-
教程展示了怎么运用 Ax 运转一个彻底主动的多方针神经架构查找。
-
运用 Ax 调度器,以彻底异步的办法主动运转优化(这能够在本地完结),也能够经过长途布置试验到集群中(只需改动 TorchX 的 Scheduler 配置)。
-
Ax 中供给的最先进的多方针贝叶斯优化算法协助有效地探究验证准确率和模型巨细之间的 tradeoff。
高档功用
Ax 还有一些其他高档功用,上述教程中没有讨论。包含以下内容:
Early Stopping
在评价一个新的 candidate configutation 时,部分学习曲线通常在 NN 练习工作运转时就能够得到。
经过部分曲线中包含的信息来识别体现不佳的试验,以便及早停止,从而为更有期望的 promising candidate 释放核算资源。虽然在上述教程中没有演示,但 Ax 支持开箱即用的 Early Stopping。
[ax.dev/versions/la…ax.dev/versions/la… 高维查找空间)
高维查找空间
教程中运用了带有标准高斯进程的贝叶斯优化,以坚持低运转时刻。
但是,这些模型通常只能扩展到大约 10-20 个可调整的参数。新的 SAASBO 办法非常 sample-efficient 而且能够调整数百个参数。经过向 select_generation_strategy 传递 use_saasbo=True ,能够很容易地启用 SAASBO。
以上就是 TorchX 的介绍,之后 PyTorch 开发者社区将持续重视使用 Graph Transformations 优化生产型 PyTorch 模型的功用。
****查找 Hyperai01,备注「****PyTorch」参加 PyTorch 技术交流群,了解 PyTorch 最新进展、最佳实践吧!