TensorFlow为M1芯片提供7倍加速,还新增了GPU支持
共 3470字,需浏览 7分钟
·
2020-11-24 16:23
极市导读
今年的TensorFlow不仅发展迅猛,还已经被部署到许多丰富的场景当中。近日,TensorFlow宣布为M1芯片提供7倍加速,还新增了GPU支持。最新发布的TensorFlow2.3也解决了输入管道瓶颈,我们更加期待TensorFlow2.4的到来。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
TensorFlow官方宣布,对苹果开发的最新M1芯片提供TensorFlow加速支持。
与此同时,苹果也在GitHub上发布了名为“tensorflow_macos”的项目,包含forked版本的TensorFlow 2.4和新的ML Compute框架,其针对MacBook上的TensorFlow进行了优化。
项目地址:https://github.com/apple/tensorflow_macos
1、7倍加速
这项更新对于喜欢使用Mac又纠结于训练速度的用户来说,真是个天大的好消息。
ML Compute是苹果今年推出的新框架,可直接在Mac上训练TensorFlow模型,优化后的TensorFlow 2.4则可以大幅加速MacBook的ML模型训练,无论是配置了M1芯片还是Intel芯片。
在更新之前,Mac上的TensorFlow仅支持CPU训练,而新的ML Compute将支持GPU的训练。
谷歌表示,这些改进,加上苹果开发人员能够通过TensorFlow Lite在iOS上执行TensorFlow,展示了TensorFlow在支持苹果硬件高性能机器学习的广度和深度。
forked版本的TensorFlow 2.4应用的是更高级别的优化方法,例如融合神经网络的层,选择合适的设备类型,以及将计算图编译并执行为由CPU上的BNNS、GPU上的Metal Performance Shaders加速的图元。
具体加速效果如何呢?据TensorFlow在推特上发布的消息,“可以在配置M1芯片的13英寸MacBook Pro上获得多达7倍的训练加速。”
下图展示了2020版13英寸MacBook Pro的三种配置在多种TensorFlow模型上的训练时间。其中灰色为优化前的版本(Intel),黄色(Intel)和橙色(M1)为优化后的版本。
可以看到,通过优化,配置了M1芯片的Mac达到了数倍加速的效果,配置了Intel芯片的Mac则得到了少量优化。但这只是2020版的测试结果,在2019版上,配置了Intel芯片的Mac得到了大幅加速。
配置了Intel芯片和M1的13英寸MacBook Pro的加速训练效果,数字越小表明训练时间越短(second/batch)。
测试结果表明,MobileNetV3在新配置(M1)的训练时间仅为1秒,相对而言,如果是配置Intel芯片和旧版TensorFlow,则需要2秒。
此外,在配置Intel芯片和新版TensorFlow的2019 Mac Pro上训练风格迁移算法可以在大约2秒钟内完成,而在旧版TensorFlow版本上则需要6秒。
配置了Intel芯片的2019 Mac Pro的加速训练效果,数字越小表明训练时间越短。
苹果和谷歌表示,用户无需更改现有的TensorFlow脚本即可将ML Compute用作TensorFlow的后端。在不久的将来,两家公司计划将TensorFlow 2.4的forked版本集成到TensorFlow master分支中,使用户更容易获得更新。
2、背景介绍 2020年的TensorFlow
今天恰好也是谷歌开发者大会的TensorFlow主题日,一起来回顾一下今年的TensorFlow都有哪些新进展吧。
如今,TensorFlow已经被部署到丰富的应用场景中。比如蔚来汽车的车载人工智能NOMI背后就使用了TensorFlow来训练模型,并用TensorFlow Lite来部署人机对话等AI系统;网易伏羲实验室使用TensorFlow实现分布式训练,结合实际游戏工业场景,开发了用于线上游戏的强化学习AI,并上线到了《逆水寒》,其中最高难度AI对战人类玩家的胜率可达到90%。
今年以来,TensorFlow依然发展迅猛,下载次数超过1.37亿,教程和指南观看次数超过4500万,博客文章阅读次数和在YouTube上的观看次数分别超过了800万和830万。
在3月份的TensorFlow开发者峰会上,谷歌宣布了TensorFlow2.2的新功能,此次版本更新强调了性能的重要性,与TensorFlow生态系统其余部分的兼容性,以及在核心库中的稳定性。
在峰会中,谷歌还发布了性能剖析器,从而提供了模型性能概览和更易用的调试指南。他们还更新了数十个附加组件和扩展程序,如今大多数的库都已经支持TensorFlow2.x。另外还有一些实验性质的新库,比如可以帮助研究人员探索和构建混合量子和经典机器学习的TF Quantum。
针对工业界的用户,TensorFlow2.2也有一些实用的更新。TensorFlow Lite现在已经支持大量的移动端机器学习模型,如下图所示。
在TensorFlow Lite中,谷歌提供了最佳的加速器性能,并在不需要修改模型的前提下,大大缩短了模型延迟。谷歌还集成了Android Studio和支持库,从而能够便捷生成TensorFlow Lite模型的Java Classes。此外,全新的TensorFlow Lite转换器可以支持更多的模型类,Model Maker让开发人员可以微调现有的模型,而无需做复杂的机器学习操作。
在TensorFlow.js中,谷歌发布了两个新的模型,分别是FaceMesh和MobileBERT,FaceMesh可用于定位人脸关键点,并进一步开发好玩的AR应用。
此外,Hugging Face的NPM软件包适用于在Node.js中提供问答功能,新的WebAssembly则用来提升CPU性能。
7月份的开发者峰会上,谷歌发布了TensorFlow2.3,该版本使用户能更轻松地进行数据预处理,并解决输入管道瓶颈。这是通过tf.data中的两个新的API即Service和Snapshot完成的。此外,TensorFlow2.3还新增了TensorFlow Profiler功能,其可随着时间推移可视化模型内存使用情况,并且能跟踪模型中的Python函数调用,从而发现性能瓶颈。
在即将到来的TensorFlow2.4中,重点是分布式训练,这将使具有镜像策略的多工作器同步训练更加强大;而在tf.Keras中,将提供对参数服务器训练的实验支持。
TensorFlow2.4还将增加对CUDA11的支持,从而支持英伟达最新的GPU。tf.numpy则允许在numpy代码中使用TensorFlow API。
参考资料:
推荐阅读