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

  • 2020 年 11 月 27 日
  • AI

作者 | 青暮
TensorFlow官方宣布,對蘋果開發的最新M1芯片提供TensorFlow加速支持。
與此同時,蘋果也在GitHub上發佈了名為「tensorflow_macos」的項目,包含forked版本的TensorFlow 2.4和新的ML Compute框架,其針對MacBook上的TensorFlow進行了優化。
項目地址://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。

參考資料:
//blog.tensorflow.org/2020/11/accelerating-tensorflow-performance-on-mac.html
//machinelearning.apple.com/updates/ml-compute-training-on-mac

點擊閱讀原文,直達EMNLP小組!