谷歌automl学习(AutoML构建加速器优化模型首尝试)
谷歌automl学习(AutoML构建加速器优化模型首尝试)EfficientNet 已被证明能够在图像分类任务中实现 SOTA 准确率,同时能够显著降低模型大小和计算复杂度。为了创建旨在利用 Edge TPU 加速器架构的 EfficientNet,谷歌调用了 Auto MNAS 框架,并利用在 Edge TPU 上高效执行的构建块(building block)扩增了原始 EfficientNet 神经网络架构搜索空间。使用 AutoML 为 Edge TPU 定制化 EfficientNet几十年来,正如摩尔定律所描述的那样,通过缩小芯片内部晶体管的尺寸,计算机处理器的性能每隔几年就可以提升一倍。但随着缩小晶体管尺寸变得越来越困难,业界将重点放在了开发硬件加速器这样的特定于域的体系架构上面,从而继续提升计算能力。机器学习领域尤为如此,需要创建用于神经网络加速的专门架构。但讽刺的是,虽然这些架构在数据中心和边缘计算平台上取得了稳步扩展,但依托它
选自Googleblog
机器之心编译
参与:杜伟、李亚洲
今年 5 月份,谷歌提出了一种利用复合系数统一缩放模型所有维度的新型模型缩放方法,并基于这种模型缩放方法又推出了一种新型 CNN 网络 EfficientNet。今日,谷歌宣布推出一种衍生自 EfficientNet 的图像分类模型 EfficientNet-EdgeTPU,通过定制化在谷歌 Edge TPU 实现最佳运行。
几十年来,正如摩尔定律所描述的那样,通过缩小芯片内部晶体管的尺寸,计算机处理器的性能每隔几年就可以提升一倍。但随着缩小晶体管尺寸变得越来越困难,业界将重点放在了开发硬件加速器这样的特定于域的体系架构上面,从而继续提升计算能力。
机器学习领域尤为如此,需要创建用于神经网络加速的专门架构。但讽刺的是,虽然这些架构在数据中心和边缘计算平台上取得了稳步扩展,但依托它们运行的神经网络却很少定制化从而充分利用底层硬件。
谷歌 Edge TPU 是一个通过 Coral Dev Boardand 和 USB 加速器提供给开发人员的低能耗硬件加速器。通过这种模型自定义,Edge TPU 能够提供实时的图像分类性能,同时实现只有在数据中心运行尺寸更大、计算量更重的模型上才能看到的准确率。
使用 AutoML 为 Edge TPU 定制化 EfficientNet
EfficientNet 已被证明能够在图像分类任务中实现 SOTA 准确率,同时能够显著降低模型大小和计算复杂度。为了创建旨在利用 Edge TPU 加速器架构的 EfficientNet,谷歌调用了 Auto MNAS 框架,并利用在 Edge TPU 上高效执行的构建块(building block)扩增了原始 EfficientNet 神经网络架构搜索空间。
此外,通过在周期准确的架构模拟器上运行模型,谷歌还创建和集成了一个「延迟预测器」模块,该模块在 Edge TPU 执行操作时能够估计模型延迟时间。AutoML MNAS 控制器执行强化学习算法来搜索空间,同时试图实现奖励的最大化,这是预测延迟和模型准确率的共有功能。
根据以往的经验,当模型与芯片上内存匹配时,Edge TPU 功率效率和性能往往实现最大化。所以,谷歌还修改了奖励函数,从而为满足相关约束的模型生成更高奖励。
设计定制化 EfficientNet-EdgeTPU 模型的 AutoML 整体流程。
搜索空间设计
执行上述架构搜索时必须考虑到,EfficientNet 主要依赖深度可分离(depthwise-separable)卷积,这是一种能够因式分解常规卷积以减少参数数量和计算量的神经网络块。但是,对于某些配置而言,尽管需要更大的计算量,但常规卷积能够更高效地利用 Edge TPU 架构,执行速度也更快。尽管有可能手动创建一个能够利用不同构建块最优组合的网络,但利用这些加速器优化的块来扩增 AutoML 搜索空间是一种扩展性更强的方法。
3x3 常规卷积(右)较深度可分离卷积(左)的计算量更大(乘法累加运算),但对于某些输入/输出尺寸来说,由于前者的硬件利用率提升了 3 倍,所以其在 Edge TPU 上的执行速度更快。
此外,从搜索空间中移除需要修改 Edge TPU 编译器以完全支持的某些操作,如 swish 非线性和 squeeze-and-excitation 块,自然能够生成易于移植到 Edge TPU 硬件的模型。这些操作通常可以稍稍提升模型质量,所以通过从搜索空间删除它们,谷歌有效地指导 AutoML 去发现可替代的网络架构(它们可以对任何潜在的质量损失作出补偿)。
模型表现
前面描述的神经架构搜索(NAS)生成了基线模型 EfficientNet-EdgeTPU-S,随后使用 EfficientNet 的复合缩放方法对其进行放大,从而得到了-M 和-L 模型。复合缩放方法可以通过选择输入图像分辨率缩放、网络宽度和深度缩放的最佳组合,以构建出更大、更准确的模型。-M 和-L 模型以增加延迟为代价实现更高的准确性,如下图所示。
通过为 Edge TPU 硬件专门设计的网络架构,EfficientNet-EdgeTPU-S / M / L 模型在延迟和准确率上都要比 EfficientNets(B1)、ResNet 更好。特别是 EfficientNet-EdgeTPU-S 实现了更高的精度,且运行速度比 ResNet-50 快 10 倍。
有趣的是,NAS 生成的模型在网络的初始部分中非常大量地使用常规卷积,在加速器上执行时,深度可分离卷积往往不如常规卷积有效。这明显突出了一个事实,即在优化通用 CPU 模型(例如减少操作总数)时通常进行权衡并不一定是硬件加速器的最佳选择。而且,即使不使用高深的操作,这些模型也可以实现高精度。与其他图像分类模型(如 Inception-resnet-v2 和 Resnet50)相比,EfficientNet-EdgeTPU 模型不仅更精确,而且在 Edge TPU 上运行速度更快。
这项研究代表了首次使用 AutoML 构建加速器优化模型的尝试。基于 AutoML 的模型定制不仅可以扩展到各种硬件加速器,还可以扩展到依赖神经网络的多种不同应用。
从云 TPU 训练到 Edge TPU 部署
在 Github 上,谷歌发布了 EfficientNet-EdgeTPU 的训练代码和预训练模型。使用 TensorFlow 的后训练量化工具,谷歌将浮点训练模型转换为 Edge TPU 可兼容的整数量化模型。对于这些模型而言,后训练量化的效果非常好,仅产生非常轻微的精度损失(~0.5%)。
- Github 项目链接:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/edgetpu
- Coral 网页:https://coral.withgoogle.com/docs/