天天看點

開源後 5 個月,Google 的深度學習系統都有哪些改變?

google昨日釋出分布式tensorflow版本!

即 便tensorflow在2015年底才出現,它已經吸引了全球機器學習開發者的目光。google創始人eric schmidt堅信tensorflow是google的未來。深度學習引擎+雲服務平台,将會帶來程式設計範式的改變:不僅給電腦程式設計,而且讓電腦擁有一定 的自主能力。

根據github的資料統計,tensorflow成為了2015年最受關注的六大開源項目之一。考慮到tensorflow僅僅在12月才釋出,一個月的時間就讓它成為世界關注的焦點。

不過那時候的tensorflow,還僅僅是隻能在一個機器上運作的單機版本。這意味着它雖然設計精巧,但很難被公司、組織大規模的使用,也很難對産業造成實質的影響。

但昨天釋出的分布式tensorflow,最突出的特征是能夠在不同的機器上同時運作。雖然說并不是所有人都需要在幾千台伺服器上運作tensorflow,但研究者和創業公司的确能在多台機器運作的tensorflow中獲益。

tensorflow技術負責人rajat monga解釋了分布式tensorflow的延期釋出:“我們内部使用的軟體棧(software stack),和外部人們使用的非常不同......是以要讓它變得開源,對于我們來說是極其困難的事情。”

經過5個月的等待,分布式 tensorflow 終于到來了。

tennsorflow 0.8釋出了,它有一些很好的改進。它為分布式的版本做了一些改變,而且把它們包裹起來使之更容易使用。這篇部落格還介紹了用分布式系統訓練卷積圖像識别模型的一些可擴充的數字。

| google 官方部落格介紹

tensorflow:

tensorflow 是為使用資料流程圖的數值計算開發的開源軟體庫。圖中的節點表示數學運算,而圖的邊代表着彼此溝通的多元資料陣列(tensors)。在隻使用單個api 的情況下,靈活的架構可以讓你在桌面、伺服器或者移動裝置的單個或多個cpus和gpus部署計算。tensorflow最早由google brain團隊的研究人員和工程師研發,目的是管理機器學習和深度神經網絡的研究工作,但是這個系統也足夠通用,适用于其他的應用領域。

開源後5個月,google的深度學習系統都有哪些改變?

tensorflow 0.8:支援分布式計算

google 在很多的産品中都使用了機器學習技術。為了不斷改進我們的模型,最為重要的是訓練速度要盡可能的快。要做到這一點,其中一個辦法是在幾百台機器中運作 tensorflow,這能夠把部分模型的訓練過程從數周縮短到幾個小時,并且能夠讓我們在面對不斷增加的規模和複雜性的模型時,也能夠進行實驗。自從我 們開源了tensorflow,分布式的版本就成為最需要的功能之一了。現在,你不需要再等待了。

今天(4月14日),我們很興奮地推出了 tensorflow 0.8,它擁有分布式計算的支援,包括在你的基礎設施上訓練分布式模型的一切支援。分布式的tensorflow由高性能的grpc 庫支援,也能夠支援在幾百台機器上并行訓練。它補充了我們最近的公布的google雲機器學習,也能夠使用google雲平台訓練和服務你的 tensorflow模型。

為了和tensorflow 0.8版本的推出保持一緻,我們已經發表了一個“分布式訓練”給tensorflow模型庫的生成圖像分類的神經網絡。使用分布式訓練,我們訓練了生成網 絡(inception network),在100個gpus和不到65小時的訓練時間下,達到了78%的正确率。即便是更小的叢集,或者隻是你桌子下面的幾台機器,都可以受益 于分布式的tensorflow,因為增加了更多的 gpus 提升了整體的吞吐量,并且更快生成準确的結構。

圖:tensorflow 可以加快訓練生成網絡的速度,使用 100 個 gpus 能達到 56 倍。來源:google

分布式訓練也支援你使用像kubernetes這樣的叢集管理系統,以進行擴大規模的訓練。更進一步說,一旦你已經訓練了模型,就可以部署到産品并且加快在kubernetes使用tensorflow服務的推理速度。

除 了分布式生成器,tensorflow 0.8還釋出了定義你自己分布式模型的新庫。tensorflow分布式架構允許很靈活的定義模型,因為叢集中的每個程序都可以進行通用的計算。我們之前 的系統distbelief(像很多追随它的系統)使用特殊的“參數伺服器”來管理共享的模型參數,其中的參數伺服器有簡單的讀/寫接口,以更新共享的參 數。在tensorflow中,所有的計算,包括參數的管理,都會在資料流的圖中呈現,并且系統會把資料流映射到不同裝置的可用處理器中(例如多核 cpus,一般用途的gpus,手機處理器等)。為了讓tensorflow更好使用,我們也推出了python的庫,使之更容易寫模型,在一個處理器中 運作,并且擴充到使用多個副本以進行訓練。

這種架構使得它可以更容易的擴大單程序的工作到叢集中,同時還可以進行新穎的分布式訓練架構的實 驗。舉個例子,我的同僚最近展示了“重新通路分布式同步 sgd”(revisiting distributed synchronous sgd),在tensorflow圖部署,實作了在圖像模型訓練中更好的“時間-精度”。

目前支援分布式計算的tensorflow版本還僅僅是個開始。我們将繼續研究提高分布式訓練表現的方法,既有通過工程的,也有通過算法的改進,我們也會在github社群分享這些改進。

搶先嘗試

來源:tensorflow

如果你想跳過複雜的按照過程,感受tensorflow,google提供了一個基于浏覽器的模拟器,能讓你感受基本的tensorflow和深度學習。

首先在左邊選擇你要分析的資料,然後在中間選擇群組合道具,最後看輸出的結果是如何和最早的資料相比對。最開始看起來會顯得很可笑,但是這很好了解,而且能在抽象層面了解神經網絡是如何運作的。

tensorflow 更新曆史

2016.4.13

announcing tensorflow 0.8 – now with distributed computing support!

2016.3.23

machine learning in the cloud, with tensorflow

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

====================================分割線================================

繼續閱讀