1
本文作者: 新智元 | 2016-04-15 15:52 |
編者按:本文作者Simon,來(lái)自新智元(微信號(hào):AI_era)
【導(dǎo)讀】2016年4月14日,Google發(fā)布了分布式TensorFlow。Google的博文介紹了TensorFlow在圖像分類(lèi)的任務(wù)中,在100個(gè)GPUs和不到65小時(shí)的訓(xùn)練時(shí)間下,達(dá)到了78%的正確率。在激烈的商業(yè)競(jìng)爭(zhēng)中,更快的訓(xùn)練速度是人工智能企業(yè)的核心競(jìng)爭(zhēng)力。而分布式TensorFlow意味著它能夠真正大規(guī)模進(jìn)入到人工智能產(chǎn)業(yè)中,產(chǎn)生實(shí)質(zhì)的影響。
即便TensorFlow在2015年底才出現(xiàn),它已經(jīng)吸引了全球機(jī)器學(xué)習(xí)開(kāi)發(fā)者的目光。Google創(chuàng)始人Eric Schmidt堅(jiān)信TensorFlow是Google的未來(lái)。深度學(xué)習(xí)引擎+云服務(wù)平臺(tái),將會(huì)帶來(lái)編程范式的改變:不僅給電腦編程,而且讓電腦擁有一定的自主能力。
根據(jù)Github的數(shù)據(jù)統(tǒng)計(jì),TensorFlow成為了2015年最受關(guān)注的六大開(kāi)源項(xiàng)目之一。考慮到TensorFlow僅僅在12月才發(fā)布,一個(gè)月的時(shí)間就讓它成為世界關(guān)注的焦點(diǎn)。
不過(guò)那時(shí)候的TensorFlow,還僅僅是只能在一個(gè)機(jī)器上運(yùn)行的單機(jī)版本。這意味著它雖然設(shè)計(jì)精巧,但很難被公司、組織大規(guī)模的使用,也很難對(duì)產(chǎn)業(yè)造成實(shí)質(zhì)的影響。
但昨天發(fā)布的分布式TensorFlow,最突出的特征是能夠在不同的機(jī)器上同時(shí)運(yùn)行。雖然說(shuō)并不是所有人都需要在幾千臺(tái)服務(wù)器上運(yùn)行TensorFlow,但研究者和創(chuàng)業(yè)公司的確能在多臺(tái)機(jī)器運(yùn)行的TensorFlow中獲益。
TensorFlow技術(shù)負(fù)責(zé)人Rajat Monga解釋了分布式TensorFlow的延期發(fā)布:“我們內(nèi)部使用的軟件棧(Software Stack),和外部人們使用的非常不同......所以要讓它變得開(kāi)源,對(duì)于我們來(lái)說(shuō)是極其困難的事情?!?/p>
經(jīng)過(guò)5個(gè)月的等待,分布式 TensorFlow 終于到來(lái)了。
TennsorFlow 0.8發(fā)布了,它有一些很好的改進(jìn)。它為分布式的版本做了一些改變,而且把它們包裹起來(lái)使之更容易使用。這篇博客還介紹了用分布式系統(tǒng)訓(xùn)練卷積圖像識(shí)別模型的一些可擴(kuò)展的數(shù)字。
TensorFlow是為使用數(shù)據(jù)流程圖的數(shù)值計(jì)算開(kāi)發(fā)的開(kāi)源軟件庫(kù)。圖中的節(jié)點(diǎn)表示數(shù)學(xué)運(yùn)算,而圖的邊代表著彼此溝通的多維數(shù)據(jù)陣列(Tensors)。在只使用單個(gè)API的情況下,靈活的架構(gòu)可以讓你在桌面、服務(wù)器或者移動(dòng)設(shè)備的單個(gè)或多個(gè)CPUs和GPUs部署計(jì)算。TensorFlow最早由Google Brain團(tuán)隊(duì)的研究人員和工程師研發(fā),目的是管理機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)的研究工作,但是這個(gè)系統(tǒng)也足夠通用,適用于其他的應(yīng)用領(lǐng)域。
Google 在很多的產(chǎn)品中都使用了機(jī)器學(xué)習(xí)技術(shù)。為了不斷改進(jìn)我們的模型,最為重要的是訓(xùn)練速度要盡可能的快。要做到這一點(diǎn),其中一個(gè)辦法是在幾百臺(tái)機(jī)器中運(yùn)行TensorFlow,這能夠把部分模型的訓(xùn)練過(guò)程從數(shù)周縮短到幾個(gè)小時(shí),并且能夠讓我們?cè)诿鎸?duì)不斷增加的規(guī)模和復(fù)雜性的模型時(shí),也能夠進(jìn)行實(shí)驗(yàn)。自從我們開(kāi)源了TensorFlow,分布式的版本就成為最需要的功能之一了?,F(xiàn)在,你不需要再等待了。
今天(4月14日),我們很興奮地推出了TensorFlow 0.8,它擁有分布式計(jì)算的支持,包括在你的基礎(chǔ)設(shè)施上訓(xùn)練分布式模型的一切支持。分布式的TensorFlow由高性能的gRPC 庫(kù)支持,也能夠支持在幾百臺(tái)機(jī)器上并行訓(xùn)練。它補(bǔ)充了我們最近的公布的Google云機(jī)器學(xué)習(xí),也能夠使用Google云平臺(tái)訓(xùn)練和服務(wù)你的TensorFlow模型。
為了和TensorFlow 0.8版本的推出保持一致,我們已經(jīng)發(fā)表了一個(gè)“分布式訓(xùn)練”給TensorFlow模型庫(kù)的生成圖像分類(lèi)的神經(jīng)網(wǎng)絡(luò)。使用分布式訓(xùn)練,我們訓(xùn)練了生成網(wǎng)絡(luò)(Inception Network),在100個(gè)GPUs和不到65小時(shí)的訓(xùn)練時(shí)間下,達(dá)到了78%的正確率。即便是更小的集群,或者只是你桌子下面的幾臺(tái)機(jī)器,都可以受益于分布式的TensorFlow,因?yàn)樵黾恿烁嗟?GPUs 提升了整體的吞吐量,并且更快生成準(zhǔn)確的結(jié)構(gòu)。
圖:TensorFlow 可以加快訓(xùn)練生成網(wǎng)絡(luò)的速度,使用 100 個(gè) GPUs 能達(dá)到 56 倍。來(lái)源:Google
分布式訓(xùn)練也支持你使用像Kubernetes這樣的集群管理系統(tǒng),以進(jìn)行擴(kuò)大規(guī)模的訓(xùn)練。更進(jìn)一步說(shuō),一旦你已經(jīng)訓(xùn)練了模型,就可以部署到產(chǎn)品并且加快在Kubernetes使用TensorFlow服務(wù)的推理速度。
除了分布式生成器,TensorFlow 0.8還發(fā)布了定義你自己分布式模型的新庫(kù)。TensorFlow分布式架構(gòu)允許很靈活的定義模型,因?yàn)榧褐械拿總€(gè)進(jìn)程都可以進(jìn)行通用的計(jì)算。我們之前的系統(tǒng)DistBelief(像很多追隨它的系統(tǒng))使用特殊的“參數(shù)服務(wù)器”來(lái)管理共享的模型參數(shù),其中的參數(shù)服務(wù)器有簡(jiǎn)單的讀/寫(xiě)接口,以更新共享的參數(shù)。在TensorFlow中,所有的計(jì)算,包括參數(shù)的管理,都會(huì)在數(shù)據(jù)流的圖中呈現(xiàn),并且系統(tǒng)會(huì)把數(shù)據(jù)流映射到不同設(shè)備的可用處理器中(例如多核CPUs,一般用途的GPUs,手機(jī)處理器等)。為了讓TensorFlow更好使用,我們也推出了Python的庫(kù),使之更容易寫(xiě)模型,在一個(gè)處理器中運(yùn)行,并且擴(kuò)展到使用多個(gè)副本以進(jìn)行訓(xùn)練。
這種架構(gòu)使得它可以更容易的擴(kuò)大單進(jìn)程的工作到集群中,同時(shí)還可以進(jìn)行新穎的分布式訓(xùn)練架構(gòu)的實(shí)驗(yàn)。舉個(gè)例子,我的同事最近展示了“重新訪問(wèn)分布式同步 SGD”(Revisiting Distributed Synchronous SGD),在TensorFlow圖部署,實(shí)現(xiàn)了在圖像模型訓(xùn)練中更好的“時(shí)間-精度”。
目前支持分布式計(jì)算的TensorFlow版本還僅僅是個(gè)開(kāi)始。我們將繼續(xù)研究提高分布式訓(xùn)練表現(xiàn)的方法,既有通過(guò)工程的,也有通過(guò)算法的改進(jìn),我們也會(huì)在GitHub社區(qū)分享這些改進(jìn)。
來(lái)源:TensorFlow
如果你想跳過(guò)復(fù)雜的按照過(guò)程,感受TensorFlow,Google提供了一個(gè)基于瀏覽器的模擬器,能讓你感受基本的TensorFlow和深度學(xué)習(xí)。
首先在左邊選擇你要分析的數(shù)據(jù),然后在中間選擇和組合道具,最后看輸出的結(jié)果是如何和最早的數(shù)據(jù)相匹配。最開(kāi)始看起來(lái)會(huì)顯得很可笑,但是這很好理解,而且能在抽象層面理解神經(jīng)網(wǎng)絡(luò)是如何運(yùn)作的。
TensorFlow 更新歷史
2016.4.13
Announcing TensorFlow 0.8 – now with distributed computing support!
2016.3.23
Machine Learning in the Cloud, with TensorFlow
2016.3.23
Scaling neural network image classification using Kubernetes with TensorFlow Serving
2016.3.9
Train your own image classifier with Inception in TensorFlow
2016.2.16
Running your models in production with TensorFlow Serving
2016.1.21
Teach Yourself Deep Learning with TensorFlow and Udacity
2015.12.7
How to Classify Images with TensorFlow
2015.11.9
Google’s latest machine learning system, open sourced for everyone
資料來(lái)源:Google
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。