随着摩尔定律的放缓,人们逐渐将目光转向到基于专用架构的硬件加速器上,以继续提升各类应用的计算性能,特别对于机器学习和深度学习来说,针对神经网络等架构开发特定的加速芯片架构变得至关重要。
但放眼数据中心和边缘设备上,很少有网络模型针对硬件进行个性化的改造以释放硬件的最大计算能力。为了充分利用硬件特别是专用芯片的算力,来自谷歌的研究人员通过
改造EfficientNet在Edge TPU(ET)上取得可以与数据中心大型机相比拟的性能表现
。
模型的定制化改造使得Coral开发板和USB加速器的性能可以充分发挥,为机器学习软硬协同的高性能开发给出了新的可能。
基于AutoML为边缘计算TPU定制化高效网络模型
EfficientNet是谷歌在ICML2019中提出的新型模型架构,可以在保持优异精度表现的同时大幅度减小模型大小和计算复杂度。
为了充分利用ET加速架构的计算性能,研究人员引入了自动机器学习架构MNAS并利用ET中高效的执行模块增强了搜索空间。此外研究人员还构建了
延迟预测器
模块,通过运行循环架构模拟器来估计ET上执行模型的延迟时间。MNAS控制器中利用强化学习算法来进行空间搜索,而此时的奖励函数由模型的
精度
和
延迟
共同构成。先前的研究表明,模型大小和设备内存相适应可以发挥出更强的性能,所以将模型大小与内存的适配也集成到了搜索的奖励函数中。
下图显示了AutoML进行模型搜索的算法框架。
搜索空间设计
但在进行空间搜索时,必须考虑到原始版的
EfficientNet
主要是由深度可分离卷积构成的,这种模块可以分解通常的卷积模块以减小模型参数的操作。对于确定的配置,常规卷积虽然需要消耗更多的计算操作,但在ET架构中运行要更为高效和迅速。
在进行自动机器学习时针对这样的特点对搜索空间进行了有效的优化:
此外,研究人员还从搜索空间中移除了一些操作。例如swish非线性和序列激活模块这些操作在ET中已经有了充分高效的实现和支持,移除这些操作将使算法可以聚焦于搜索更为有效的的潜在架构模式。
模型性能
基于上面的搜索和改造,研究人员实现了第一个基准模型
EfficientNet-EdgeTPU-S
,以及混合尺度实现了
-M
和
-L
模型。复杂尺度通过结合输入图像的分辨率、模型宽度和深度来构建更大更精确的模型。
由下图可见M和L模型在一定延迟的代价下实现了更高的精度:
与Efficient基准模型B1相比,在边缘设备上实现的S,M,L模具有更高的精度。相比于Inception和ResNet50也有很大的提升,几乎比ResNet快了十倍。
研究人员还发现了一个有趣的现象,在模型的初始阶段,常规卷积在加速器上的执行要比深度可分离卷积更为有效,这意味着通用计算的优化模型
(例如减少操作总量)
对于专用计算的硬件加速已不再是必需。模型在无需特别复杂的操作下就能实现很高的精度,与其他分类模型相比针对TPU定制的
EfficientNet-EdgeTPU
模型更为高效高速。
这一工作证明了利用
AutoML
针对加速器优化构建的模型的方法,基于AutoML的定制化方法可以被拓展到多种硬件加速器和基于神经网络的应用中去。
从云端训练到边缘部署
研究人员在
Github
上发布了这一模型的预训练模型,可以在这里找到:
https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/edgetpu
在部署过程中,首先
使用了tensorflow后处理工具将模型由浮点数量化为整数,在量化过程中精度仅仅损失了0.5%。
如果想要学习模型量化和导出过程,可以从上面的代码里进行学习。
模型量化过程
如果想要了解更多边缘计算的能力细节可以参看下面的链接了解详细信息:
https://developers.googleblog.com/2019/08/coral-summer-updates-post-training.html
https://coral.withgoogle.com/docs/edgetpu/models-intro/
ref:
coral:
https://coral.withgoogle.com/
nona:
https://developer.nvidia.com/embedded/jetson-nano-developer-kit
movidiou:
https://software.intel.com/en-us/neural-compute-stick
AIY:
https://developers.googleblog.com/2017/05/aiy-projects-voice-kit.html
https://cloud.google.com/edge-tpu/
https://www.blog.google/products/google-cloud/bringing-intelligence-to-the-edge-with-cloud-iot/
img:https://dribbble.com/shots/4837695-Energy-Box