Google開源新TensorFlow運行時TFRT,將取代現有進行時

4月30日,谷歌宣佈開源TensorFlow RunTime (TFRT),這是其TensorFlow機器學習框架的一個新運行時,它提供了統一的、可擴展的基礎架構層,在各種硬件上都具有高性能。TFRT可以減少開發、驗證和部署企業級模型所需的時間。並且,谷歌方面透露TFRT未來有望取代現有 TensorFlow 運行時。

現有 TensorFlow 運行時將被取代

TensorFlow的根本意義,在於簡化用戶在多種設備之上構建以及部署機器學習模型的具體流程。但“構建及部署ML模型”的具體含義會隨時間發生變化,並不斷受到機器學習生態系統發展與演進的影響。

在TensorFlow堆棧的上半部分,持續出現的創新成果帶來了更復雜的模型與部署方案。越來越多需要巨量算力的全新算法從研究人員手中誕生,並由應用程序開發者在跨邊緣/服務器層面用於增強自己的開發成果。

而在堆棧的下半部分,由於摩爾定律逐漸失效,計算需求與計算成本增長帶來的壓力逼近各半導體廠商不得不針對特定ML用例開發新型硬件。時至今日,各大傳統芯片製造商、初創企業以及軟件公司(包括谷歌)都已經在投資研發自己的AI專用型芯片。

結果就是,機器學習生態系統的需求與4到5年之前TensorFlow剛剛誕生時完全不同。雖然我們從2.x版本開始就一直在保持項目迭代,但目前的TensorFlow堆棧纔剛剛針對圖執行進行過優化,且在分派單一操作時會產生不小的資源開銷。

很明顯,要延續當前發展趨勢並在未來繼續支撐各類創新舉措,用戶們迫切需要一套高性能的低級運行時。

因此,谷歌今天宣佈開源了新的運行時 TFRT。

GitHub開源地址:https://github.com/tensorflow/runtime

作爲新的TensorFlow運行時,TFRT的核心目標,是爲各類專用性質的AI硬件提供具有上佳性能水平的統一、可擴展基礎架構層。TFRT能夠高效利用多線程CPU、支持全異步編程模式,同時專注於低級執行效率。

谷歌表示,TFRT將能夠滿足研究人員在急切模式下開發複雜的新模型時希望獲得更快的迭代速度與更好的錯誤報告的需求,以及助力應用程序開發人員在模型的訓練與生產支持過程中獲得更好的性能表現。此外,它還能幫助硬件製造商以模塊化方式將邊緣與數據中心內設備整合至TensorFlow當中。

簡而言之就是,TFRT可以減少開發、驗證和部署企業級模型所需的時間,調查顯示,這種模型的時間從幾周到幾個月(或幾年)不等。

它還可能擊敗Facebook的PyTorch框架。後者是OpenAI、Preferred Networks和優步(Uber)等公司廣泛使用的框架。

TFRT在GitHub上以開源的形式發佈之前,在今年早些時候舉行的2020 TensorFlow開發峯會上,TFRT在一次關鍵的基準測試中加速了核心循環。

TFRT 產品經理 Eric Johnson 表示,TFRT 將取代現有的 TensorFlow 運行時。

TFRT是什麼?

TFRT是一種新的運行時方案。它負責在目標硬件上高效執行內核(特定於某些設備的低級基元)。

通過以下TensorFlow訓練堆棧簡化圖,可以看到TFRT在急切執行與圖執行當中都扮演着至關重要的角色:

TFRT在TensorFlow訓練堆棧的圖與急切執行中扮演的角色

請注意,所有灰色元素都屬於TFRT的組成部分。

在急切執行時,TensorFlow API會在TFRT中直接調用;而在圖執行中,程序的計算圖會轉化爲針對特定目標進行優化的專用程序,並被分派給TFRT。

在這兩種執行路徑當中,新的運行時都會調用一組內核,這些內核負責調用底層硬件以完成模型執行,具體如黑色箭頭所示。

設計要點

現有TensorFlow運行時最初是專爲圖執行與訓練類工作負載所構建的;而在新的運行時中,急切執行與推理則成爲核心負載類型,執行需求放在第一位,同時高度強調架構的可擴展性與模塊化要素。

更具體地講,TFRT在設計當中包含以下關注要點:

  • 爲了獲得更高性能,TFRT採用無鎖圖執行器。該執行器能夠以較低的同步開銷支持併發操作執行,並可憑藉經過簡化的急切操作調度堆棧異步執行急切API調用,同時顯著提高執行效率。

  • 爲了降低TensorFlow堆棧的擴展難度,TFRT將設備運行時與主機運行時(分別負責驅動主機CPU與I/O工作負載的核心TFRT組件)區分開來。

  • 爲了保證行爲一致性,TFRT在急切執行與圖執行之間使用通用抽象定義,包括形狀函數及內核等。

藉助 MLIR的力量

TFRT亦與MLIR緊密集成。例如:

  • TFRT利用MLIR編譯器基礎架構爲運行時執行的計算圖生成針對特定目標經過優化的表示。

  • 利用MLIR的可擴展類型系統,TFRT得以在運行時中支持任意C++類型,消除了以往只支持特定張量的侷限性。

TFRT與MLIR的結合,將改善TensorFlow的統一性、靈活性以及可擴展性。

初步成果

從結果來看,推理與服務用例的初步性能表現令人振奮。

作爲TensorFlow Dev Summit 2020基準測試研究的一部分,谷歌將TFRT與TensorFlow Serving集成起來,並測量了向模型發送請求並返回預測結果的具體時長。

在測試中,谷歌選擇了通用型MLPerf模型ResNet-50,並將批處理大小設定爲1、數據精度設定爲FP16,藉此保證將研究重點放在與運行時相關的操作調度開銷身上。

谷歌表示,在性能測試中,TFRT將訓練過的ResNet-50模型(一種流行的圖像識別算法)在顯卡上的平均推理時間與TensorFlow當前運行時相比提高了28%。

TFRT產品經理Eric Johnson和TFRT技術負責人Mingsheng Hong在博客中表示,“這一早期結果驗證了TFRT的不俗實力,我們希望它能大大提高性能”,“高性能、低水平的運行時是實現當今趨勢和推動未來創新的關鍵,TFRT將使廣大用戶受益“。

下一步目標

據瞭解,TFRT已經被集成在TensorFlow當中,初步以可選形式啓用,確保開發團隊能有時間繼續修復錯誤並進一步完成性能調優。

目前,TFRT 仍處在早期開發階段,目前對TFRT GitHub存儲庫的貢獻有限,且在穩定的TensorFlow版本中尚不提供TFRT。但谷歌表示,它將很快通過一個opt-in標誌實現。

最終,TFRT將成爲TensorFlow的默認運行時。

延伸閱讀:

https://blog.tensorflow.org/2020/04/tfrt-new-tensorflow-runtime.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章