Wednesday, April 13, 2016
Posted by Derek Murray, Software Engineer
TensorFlow0.8釋出——目前可以支援分布式計算!
Google在一系列的産品中都使用了機器學習。為了繼續發展我們的模式,訓練過程盡可能的快就顯得十分重要。其中的一個辦法就是在成百上千台機器上運作TensorFlow,這将把一些模型的訓練時間從幾周縮短到幾個小時,并且能有條件讓我們去試驗更大和更複雜的模型。甚至當我們把TensorFlow開源之後,對分布式訓練的支撐也成為了呼聲最高的特征之一。現在,等待結束了。
今天,我們非常興奮的釋出可以支援分布式計算的TensorFlow0.8,包含了你在自己的架構上去訓練分布式模型所需的一切。分布式的TensorFlow是通過高性能的gPRC庫驅動的,它可以支援數以百計的機器并行進行訓練。它補充了我們最近宣布的Google雲機器學習,這将確定你可以使用Google雲平台的力量去訓練和服務你的TensorFlow模型。
為了和TensorFlow0.8的釋出相呼應,我們釋出了一個分布式的訓練者,為了TensorFlow模型包裡的Inception圖檔分類神經網絡。使用分布式的訓練者,我們訓練開始網絡達到78%的精确度,在采用100個GPU的情況下隻用了不到65個小時。甚至更小的叢集,或者是你書桌下的幾台機器也可以從分布式TensorFlow裡擷取益處,是以添加更多的GPU可以增加吞吐量,并且可以更快的産生更精确的結果。
TensorFlow can speed up Inception training by a factor of 56, using 100 GPUs.
分布式訓練者也可以確定你使用一個像Kubernets的叢集管理系統去度量我們的訓練。此外,一旦你已經訓練好你的模型,你可以部署為産品,并且可以使用TensorFlow在Kubernetes上的服務去加速推理。
超過分布式的開端的是,0.8的釋出包括了定義你自己的分布式模型的一些新庫。TensorFlow的分布式架構允許定義你自己的模型的時候有一系列的可伸縮性,因為叢集裡的每一個程序都可以表現為特殊目的的計算。我們之前的系統DistBelief(像很多跟随它的系統一樣)使用特殊的參數服務者去管理共享的模型參數,這種參數服務者有一個簡單的讀/寫接口用來擷取和更新共享的參數。在TensorFlow裡,所有的計算包含參數的管理,都表現在資料流圖裡,并且系統規劃這些圖到異構裝置上(像多核的CPU,特殊目的的GPU,和移動處理器)在可獲得程序裡。為了確定TensorFlow更容易使用,我們已經包含了一些Python庫,這些庫将很容易編寫一個運作在單獨程序上,并且可以通過多個副本進行訓練以擴大訓練規模的模型。
這個架構使得它可以更加容易的從運用單程序擴大到使用叢集,并且易于使用新架構去試驗分布式訓練。作為一個例子,我的大學同學最近展示了使用備份功能的同步SGD,它是用TensorFlow圖實作的,成功的提高了圖像模型訓練的時間和精确比。
TensorFlow所支援的目前的分布式計算版本才剛剛開始。我們将繼續研究提高分布式訓練的性能的方法,從工程和算法的兩個角度推動,并且将這些進展在GitHub的社群分享出來。不管怎麼說,達到目前這樣的程度,無論如何也是少不了如下這些人的幫助:
TensorFlow training libraries - Jianmin Chen, Matthieu Devin, Sherry Moore and Sergio Guadarrama
TensorFlow core - Zhifeng Chen, Manjunath Kudlur and Vijay Vasudevan
Testing - Shanqing Cai
Inception model architecture - Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Jonathon Shlens and Zbigniew Wojna
Project management - Amy McDonald Sandjideh
Engineering leadership - Jeff Dean and Rajat Monga
TensorFlow訓練庫——Jianmin Chen, Matthieu Devin, Sherry Moore and Sergio Guadarrama
TensorFlow核心——Zhifeng Chen, Manjunath Kudlur and Vijay Vasudevan
測試——Shanqing Cai
Inception模型架構——Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Jonathon Shlens and Zbigniew Wojna
項目管理——Amy McDonald Sandjideh
工程上司——Jeff Dean and Rajat Monga