请选择 进入手机版 | 继续访问电脑版

AutoML 助力 AI 性能调优

[复制链接]
钟启航 发表于 2021-1-1 17:46:47 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

文 / Suyog Gupta 与 Mingxing Tan 
          数十年来,正如摩尔定律所述,通过缩小每个芯片内的晶体管尺寸,盘算机处理器的性能每隔几年便可提升一倍。随着缩小晶体管尺寸的难度愈来愈大,业界开始将重点聚焦于开发针对特定范畴的架构(如硬件加快器),以继承提升盘算本领。呆板学习范畴尤为如此,人们致力于为神经网络加快构建专门的架构。讽刺的是,这些架构虽已在数据中心以及边缘盘算平台稳步发展,但是很少有神经网络会特定优化,以充实使用这些底层硬件。 
   
    本日,我们高兴地宣布推出 EfficientNet-EdgeTPU,这是一系列源自 EfficientNets 的图像分类模块,颠末自界说,可在 Google 的 Edge TPU(一个高能效的硬件加快器,开发者可通过 Coral Dev Board 和 USB 加快器使用)上运行,发挥最佳性能。通过此类模块自界说,Edge TPU 不光可以提供实时图像分类性能,同时可以实现堪比数据中心中大尺寸盘算麋集型模型所能提供的精度。 
    注:EfficientNet-EdgeTPU
    https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/edgetpu
   
   
              使用 AutoML 为 Edge TPU 自界说 EfficientNets
              经证明,EfficientNets 可以或许在图像分类任务中取得 SOTA(State Of The Art) 精度,同时大幅缩减模型大小,低落盘算复杂性。为了构建专为使用 Edge TPU 的加快器架构而设计的 EfficientNets,我们调用了 AutoML MNAS 框架,并使用在 Edge TPU 上高效执行的构件块扩增了 EfficientNet 的初始神经网络架构搜索空间(下文详述)。我们还构建并集成了一个“延迟时间预测器”模块,通过在周期准确的架构模仿器上运行模型,可估算模型在 Edge TPU 上执行时的延迟时间。AutoML MNAS 控制器通过实现强化学习算法来搜索此空间,同时试图使嘉奖最大化,这是一个预测延迟时间和模型准确性的联合函数。根据以往履历,我们知道,当模型适合芯片上内存时,Edge TPU 的能效和性能往往可以最大化。因此,我们还修改了嘉奖函数,以便为满足此约束的模型提供更高的嘉奖。 
    注:AutoML MNAS 框架 链接
    https://ai.googleblog.com/2018/08/mnasnet-towards-automating-design-of.html
    强化学习 链接
    https://en.wikipedia.org/wiki/Reinforcement_learning
   
              
              用于设计自界说 EfficientNet-EdgeTPU 模型的 AutoML 总体流程
   
   
              搜索空间设计
              执行上述架构搜索时,必须思量到 EfficientNets 主要依靠深度可分卷积 (depthwise-separable convolutions),这种卷积可对通例卷积进行分解,从而淘汰参数数量和盘算量。然而,针对某些设置,虽然盘算量更大,但通例卷积可更高效地使用 Edge TPU 架构,且执行速度也更快。虽然手动制作使用不同构建块最佳组合的网络不无大概(尽管很枯燥),但使用这些经加快器优化的块扩增 AutoML 搜索空间是一种更具扩展性的方法。 
    注:深度可分卷积 链接
    https://arxiv.org/abs/1610.02357
   
              
              通例 3x3 卷积(右图)的盘算(乘法和加法 (mac) 运算)量比深度可分卷积(左图)更多,但对于某些输入/输出形状,前者由于使用具有约三倍效果的硬件,因而在 Edge TPU 上的执行速度更快
   
    有些模块,如 swish 非线性和 squeeze-and-excitation 块,是需要需要修改 Edge TPU 编译器才华得到完全支持。在搜索空间中移除它们,就可以产生很容易移植到 Edge TPU 硬件的模型。这些操纵往往会略微提高模型质量,因此,从搜索空间将其清除后,我们可以有效指示 AutoML 去发现可补充任何潜在质量损失的替代网络架构。
    注:swish 非线性 链接
    https://arxiv.org/pdf/1710.05941.pdf
    squeeze-and-excitation 块 链接
    https://arxiv.org/abs/1709.01507
   
   
              模型性能
              上述神经架构搜索 (Neural Architecture Search,NAS) 生成一个基准模型,即 EfficientNet-EdgeTPU-S,该模型随后使用 EfficientNet 的 复合扩缩法 进行扩展,从而生成 -M 和 -L 模型。复合扩缩法选择最佳的输入图像分辨率扩缩、网络宽度和深度扩缩组合,从而构建更大、更准确的模型。-M 和 -L 模型可实现更高的精度,但延迟时间有所提高,拜见下图。 
              
              通过为 Edge TPU 硬件提供专门的网络架构,EfficientNet-EdgeTPU-S/M/L 模型在延迟时间和精度方面的体现均超越 EfficientNets (B1)、ResNet 和 Inception。尤其是,我们的 EfficientNet-EdgeTPU-S 可以实现更高的精度,而其运行速度比 ResNet-50 快 10 倍
    注:ResNet 链接 
    https://arxiv.org/abs/1512.03385
    Inception 链接
    https://arxiv.org/abs/1602.07261
   
    有趣的是,NAS 生成的模型在网络初始部分十分广泛地使用了通例卷积,在初始部分,深度可分卷积在加快器上执行时往往有效性不如通例卷积。显然,这突出了一个事实:在优化通用 CPU 模型(例如淘汰运算总数)时通常进行的取舍并不一定是硬件加快器的最佳选择。别的,纵然不使用高深运算,这些模型也可以得到高精度。与其他图像分类模型(如 Inception-resnet-v2 和 Resnet50)相比,EfficientNet-EdgeTPU 模型不光更准确,而且在 Edge TPU 上的运行速度也更快。 
   
    这是首次使用 AutoML 构建经加快器优化的模型的实验。基于 AutoML 的模型自界说不光可扩展至各种硬件加快器,还可用于依靠神经网络的不同应用。
   
   
              从 Cloud TPU 训练到 Edge TPU 部署
              我们已在 GitHub 代码库中公开 EfficientNet-EdgeTPU 的训练代码和预训练模型。我们使用 TensorFlow 的训练后量化工具(post-training quantization tool )将浮点训练模型转化为兼容 Edge TPU 的整型量化模型。对于这些模型,训练后量化效果很好,精度损失微乎其微(约 0.5%)。如需从训练检查点导出量化模型的脚本,请于文末获取。如需相识 Coral 平台的更新,请参阅 Google 开发者博客中的博文。如需完整参考材料和详细说明,请查看 Coral 网站。 
   
   
              致谢
              特别感谢 Google Brain 团队的 Quoc Le、Hongkun Yu、Yunlu Li、Ruoming Pang 和 Vijay Vasudevan;Google Coral 团队的 Bo Wu、Vikram Tank 和 Ajay Nair;Google Edge TPU 团队的 Han Vanholder、Ravi Narayanaswami、John Joseph、Dong Hyuk Woo、Raksit Ashok、Jason Jong Kyu Park、Jack Liu、Mohammadali Ghodrat、Cao Gao、Berkin Akin、Liang-Yun Wang、Chirag Gandhi 和 Dongdong Li。
   
                   如果您想详细相识 EfficientNet-EdgeTPU 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:        

  • EfficientNets 
    https://ai.googleblog.com/2019/05/efficientnet-improving-accuracy-and.html
  • Edge TPU
    https://coral.withgoogle.com/docs/edgetpu/faq/
  • Coral Dev Board
    https://coral.withgoogle.com/products/dev-board
  • USB 加快器
    https://coral.withgoogle.com/products/accelerator
  • GitHub 代码库
    https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/edgetpu
  • 训练后量化工具
    https://www.tensorflow.org/model_optimization/guide/quantization
  • 获取模型脚本
    https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/edgetpu/README.md
  • Coral 平台更新相关
    https://developers.googleblog.com/2019/08/coral-summer-updates-post-training.html
  • Coral 网站
    https://coral.withgoogle.com/docs/
              
   

   

来源:https://blog.csdn.net/jILRvRTrc/article/details/100972516
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )