TensorFlow為M1芯片提供7倍加速,還新增了GPU支持

極市導(dǎo)讀
?今年的TensorFlow不僅發(fā)展迅猛,還已經(jīng)被部署到許多豐富的場(chǎng)景當(dāng)中。近日,TensorFlow宣布為M1芯片提供7倍加速,還新增了GPU支持。最新發(fā)布的TensorFlow2.3也解決了輸入管道瓶頸,我們更加期待TensorFlow2.4的到來(lái)。?>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺(jué)的最前沿
TensorFlow官方宣布,對(duì)蘋果開(kāi)發(fā)的最新M1芯片提供TensorFlow加速支持。

與此同時(shí),蘋果也在GitHub上發(fā)布了名為“tensorflow_macos”的項(xiàng)目,包含forked版本的TensorFlow 2.4和新的ML Compute框架,其針對(duì)MacBook上的TensorFlow進(jìn)行了優(yōu)化。
項(xiàng)目地址:https://github.com/apple/tensorflow_macos
1、7倍加速
這項(xiàng)更新對(duì)于喜歡使用Mac又糾結(jié)于訓(xùn)練速度的用戶來(lái)說(shuō),真是個(gè)天大的好消息。
ML Compute是蘋果今年推出的新框架,可直接在Mac上訓(xùn)練TensorFlow模型,優(yōu)化后的TensorFlow 2.4則可以大幅加速M(fèi)acBook的ML模型訓(xùn)練,無(wú)論是配置了M1芯片還是Intel芯片。
在更新之前,Mac上的TensorFlow僅支持CPU訓(xùn)練,而新的ML Compute將支持GPU的訓(xùn)練。
谷歌表示,這些改進(jìn),加上蘋果開(kāi)發(fā)人員能夠通過(guò)TensorFlow Lite在iOS上執(zhí)行TensorFlow,展示了TensorFlow在支持蘋果硬件高性能機(jī)器學(xué)習(xí)的廣度和深度。
forked版本的TensorFlow 2.4應(yīng)用的是更高級(jí)別的優(yōu)化方法,例如融合神經(jīng)網(wǎng)絡(luò)的層,選擇合適的設(shè)備類型,以及將計(jì)算圖編譯并執(zhí)行為由CPU上的BNNS、GPU上的Metal Performance Shaders加速的圖元。
具體加速效果如何呢?據(jù)TensorFlow在推特上發(fā)布的消息,“可以在配置M1芯片的13英寸MacBook Pro上獲得多達(dá)7倍的訓(xùn)練加速?!?/p>
下圖展示了2020版13英寸MacBook Pro的三種配置在多種TensorFlow模型上的訓(xùn)練時(shí)間。其中灰色為優(yōu)化前的版本(Intel),黃色(Intel)和橙色(M1)為優(yōu)化后的版本。
可以看到,通過(guò)優(yōu)化,配置了M1芯片的Mac達(dá)到了數(shù)倍加速的效果,配置了Intel芯片的Mac則得到了少量?jī)?yōu)化。但這只是2020版的測(cè)試結(jié)果,在2019版上,配置了Intel芯片的Mac得到了大幅加速。
配置了Intel芯片和M1的13英寸MacBook Pro的加速訓(xùn)練效果,數(shù)字越小表明訓(xùn)練時(shí)間越短(second/batch)。
測(cè)試結(jié)果表明,MobileNetV3在新配置(M1)的訓(xùn)練時(shí)間僅為1秒,相對(duì)而言,如果是配置Intel芯片和舊版TensorFlow,則需要2秒。
此外,在配置Intel芯片和新版TensorFlow的2019 Mac Pro上訓(xùn)練風(fēng)格遷移算法可以在大約2秒鐘內(nèi)完成,而在舊版TensorFlow版本上則需要6秒。
配置了Intel芯片的2019 Mac Pro的加速訓(xùn)練效果,數(shù)字越小表明訓(xùn)練時(shí)間越短。
蘋果和谷歌表示,用戶無(wú)需更改現(xiàn)有的TensorFlow腳本即可將ML Compute用作TensorFlow的后端。在不久的將來(lái),兩家公司計(jì)劃將TensorFlow 2.4的forked版本集成到TensorFlow master分支中,使用戶更容易獲得更新。
2、背景介紹 2020年的TensorFlow
今天恰好也是谷歌開(kāi)發(fā)者大會(huì)的TensorFlow主題日,一起來(lái)回顧一下今年的TensorFlow都有哪些新進(jìn)展吧。
如今,TensorFlow已經(jīng)被部署到豐富的應(yīng)用場(chǎng)景中。比如蔚來(lái)汽車的車載人工智能NOMI背后就使用了TensorFlow來(lái)訓(xùn)練模型,并用TensorFlow Lite來(lái)部署人機(jī)對(duì)話等AI系統(tǒng);網(wǎng)易伏羲實(shí)驗(yàn)室使用TensorFlow實(shí)現(xiàn)分布式訓(xùn)練,結(jié)合實(shí)際游戲工業(yè)場(chǎng)景,開(kāi)發(fā)了用于線上游戲的強(qiáng)化學(xué)習(xí)AI,并上線到了《逆水寒》,其中最高難度AI對(duì)戰(zhàn)人類玩家的勝率可達(dá)到90%。
今年以來(lái),TensorFlow依然發(fā)展迅猛,下載次數(shù)超過(guò)1.37億,教程和指南觀看次數(shù)超過(guò)4500萬(wàn),博客文章閱讀次數(shù)和在YouTube上的觀看次數(shù)分別超過(guò)了800萬(wàn)和830萬(wàn)。
在3月份的TensorFlow開(kāi)發(fā)者峰會(huì)上,谷歌宣布了TensorFlow2.2的新功能,此次版本更新強(qiáng)調(diào)了性能的重要性,與TensorFlow生態(tài)系統(tǒng)其余部分的兼容性,以及在核心庫(kù)中的穩(wěn)定性。
在峰會(huì)中,谷歌還發(fā)布了性能剖析器,從而提供了模型性能概覽和更易用的調(diào)試指南。他們還更新了數(shù)十個(gè)附加組件和擴(kuò)展程序,如今大多數(shù)的庫(kù)都已經(jīng)支持TensorFlow2.x。另外還有一些實(shí)驗(yàn)性質(zhì)的新庫(kù),比如可以幫助研究人員探索和構(gòu)建混合量子和經(jīng)典機(jī)器學(xué)習(xí)的TF Quantum。
針對(duì)工業(yè)界的用戶,TensorFlow2.2也有一些實(shí)用的更新。TensorFlow Lite現(xiàn)在已經(jīng)支持大量的移動(dòng)端機(jī)器學(xué)習(xí)模型,如下圖所示。

在TensorFlow Lite中,谷歌提供了最佳的加速器性能,并在不需要修改模型的前提下,大大縮短了模型延遲。谷歌還集成了Android Studio和支持庫(kù),從而能夠便捷生成TensorFlow Lite模型的Java Classes。此外,全新的TensorFlow Lite轉(zhuǎn)換器可以支持更多的模型類,Model Maker讓開(kāi)發(fā)人員可以微調(diào)現(xiàn)有的模型,而無(wú)需做復(fù)雜的機(jī)器學(xué)習(xí)操作。
在TensorFlow.js中,谷歌發(fā)布了兩個(gè)新的模型,分別是FaceMesh和MobileBERT,F(xiàn)aceMesh可用于定位人臉關(guān)鍵點(diǎn),并進(jìn)一步開(kāi)發(fā)好玩的AR應(yīng)用。

此外,Hugging Face的NPM軟件包適用于在Node.js中提供問(wèn)答功能,新的WebAssembly則用來(lái)提升CPU性能。
7月份的開(kāi)發(fā)者峰會(huì)上,谷歌發(fā)布了TensorFlow2.3,該版本使用戶能更輕松地進(jìn)行數(shù)據(jù)預(yù)處理,并解決輸入管道瓶頸。這是通過(guò)tf.data中的兩個(gè)新的API即Service和Snapshot完成的。此外,TensorFlow2.3還新增了TensorFlow Profiler功能,其可隨著時(shí)間推移可視化模型內(nèi)存使用情況,并且能跟蹤模型中的Python函數(shù)調(diào)用,從而發(fā)現(xiàn)性能瓶頸。
在即將到來(lái)的TensorFlow2.4中,重點(diǎn)是分布式訓(xùn)練,這將使具有鏡像策略的多工作器同步訓(xùn)練更加強(qiáng)大;而在tf.Keras中,將提供對(duì)參數(shù)服務(wù)器訓(xùn)練的實(shí)驗(yàn)支持。
TensorFlow2.4還將增加對(duì)CUDA11的支持,從而支持英偉達(dá)最新的GPU。tf.numpy則允許在numpy代碼中使用TensorFlow API。
參考資料:
推薦閱讀

