閱讀945 返回首頁    go 阿裏雲 go 技術社區[雲棲]


【TensorFlow開源2年官方回顧】下一個重要方向是分布式模型服務

 TensorFlow Serving 開源的一年半時間裏取得了許多進展和性能提升,包括開箱即用的優化服務和可定製性,多模型服務,標準化模型格式,易於使用的推理API等。本文是研究團隊撰寫的回顧,並提出接下來創新的方向是Granular batching和分布式模型服務。

自從2016年2月 TensorFlow Serving 開源以來,我們做了一些重大改進。現在,讓我們再回到這個項目開始的地方,回顧我們的進展過程,並分享我們下一步的方向。

在 TensorFlow Serving 啟動之前,穀歌公司內的 TensorFlow 用戶也必須從頭開始創建自己的服務係統。雖然一開始服務看起來很容易,但一次性服務解決方案很快就會變得更複雜。機器學習(ML)服務係統需要支持模型版本控製(對於具有回滾選項的模型更新)和多個模型(通過A/B測試進行試驗),同時確保並發模型在硬件加速器(GPU和TPU)上實現高吞吐量和低延遲。因此,我們開始創建一個獨立、通用的 TensorFlow Serving 軟件棧。

我們從一開始據決定將其開源,開發工作是從2015年9月開始。幾個月後,我們創建了最初的端到端工作係統,並在2016年2月釋出第一個開源版本。

在過去一年半的時間裏,在我們的用戶和公司內外的合作夥伴的幫助下,TensorFlow Serving 得以提供先進的性能、最佳的實踐和標準:

  • 開箱即用的優化服務和可定製性:我們現在提供一個預構建的規範服務二進製文件,針對帶 AVX 的現代CPU進行了優化,因此開發人員不需要從我們的庫中自己組裝二進製文件,除非他們有特殊需求。同時,我們添加了一個基於注冊表的框架,允許我們的庫被用於定製(甚至是非TensorFlow)的服務場景。
  • 多模型服務:從一個模型擴展到多個並行服務的模型,會出現一些性能上的阻礙。我們通過(1)在隔離的線程池中加載多個模型,以避免在其他模型中出現延遲峰值;(2)在服務器啟動時,並行加速所有模型的初始加載;(3)多模型批交錯以複用硬件加速器(GPU/TPU)。
  • 標準化模型格式:我們將 SavedModel 添加到 TensorFlow 1.0,為社區提供了一種單一標準的模型格式,可以跨訓練和服務工作。
  • 易於使用的推理API:我們為常見的推理任務(分類、回歸)發布了易於使用的API,這些API適用於廣泛的應用程序。為了支持更高級的用例,我們支持一個較低級的基於 tensor 的API(預測)和一個允許多任務建模的新的多重推理API。


我們的所有工作都通過與以下各方的密切合作實現的:(a)穀歌的 ML SRE 團隊確保了我們團隊的強壯並滿足內部SLA; (b)穀歌其他機器學習基礎架構團隊,包括廣告服務和TFX; (c)Google Play等應用程序的團隊;(d)我們在加州大學伯克利分校RISE實驗室的合作夥伴,他們研究與Clipper服務係統互補的問題; (e)我們的開源用戶群和貢獻者。

TensorFlow Serving 目前正在為1100多個我們自己的項目,包括穀歌雲的ML預測,每秒處理數千萬次的推理任務。核心服務代碼可以通過開源版本獲得:https://github.com/tensorflow/serving/releases

展望未來,我們的工作還遠未完成,我們正在探索一些創新的途徑。今天,我們很高興在兩個實驗領域分享早期進展:

  • Granular batching:我們在專用硬件(GPU和TPU)上實現高吞吐量的關鍵技術是“批處理”(batching):聯合處理多個樣本以實現高效。我們正在開發技術和最佳實踐來改進批處理:(a)使批處理能夠僅針對計算的GPU / TPU部分,以獲得最高效率; (b)允許在遞歸神經網絡進行batching,用於處理序列數據,例如文本和事件序列。我們正在嚐試使用Batch/Unbatch對任意子圖進行batching。
  • 分布式模型服務:我們將模型分片(model sharding)技術作為處理模型的一種方法,這些模型由於太大而無法適應一個服務器節點,或者不能以節省內存的方式共享子模型。我們最近在生產中推出了一個1TB+的模型,並取得了良好的效果,希望很快開源。


原文鏈接:【TensorFlow開源2年官方回顧】下一個重要方向是分布式模型服務

最後更新:2017-11-03 15:04:04

  上一篇:go  手把手教你利用命令行工具創建LinuxMac係統下的網站備份
  下一篇:go  不使用三方包時,如何在ThinkSNS中建立優雅的用戶權限管理