Google 推出分佈式深度學習系統TensorFlow,能像 Android 一樣帶來 AI 復興?

編者按:在激烈的商業競爭中,更快的訓練速度是人工智能企業的核心競爭力。2015年,Google 開源了其人工智能深度學習系統 TensorFlow,但該版本只能在一台機器上單獨運行。昨天,Google 發佈分佈式 TensorFlow,這意味着它能夠真正大規模進入到人工智能產業中,產生實質的影響。本文轉載自微信訂閲號“新智元”,36 氪稍做調整,您可關注 “新智元”(Al_era)了解更多人工智能最前沿資訊。

去年,Google向全世界開放了人工智能深度學習系統 TensorFlow。此前,TensorFlow 一直為像圖像識別和郵件自動回覆等Google各大產品提供相應的支持,而開源則意味着從此以後,所有的個 人、企業和組織都可以用站在Google的肩膀上,借用它的技術來開發自己的 AI 應用。



Google 創始人 Eric Schmidt 堅信 TensorFlow 是 Google 的未來。深度學習引擎 + 雲服務平台,將會帶來編程範式的改變:不僅給電腦編程,而且讓電腦擁有一定的自主能力。

根據 Github 的數據統計,TensorFlow 成為了 2015 年最受關注的六大開源項目之一。2015年12月,TensorFlow 發佈,僅一個月的時間就成為世界關注的焦點。

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

昨天發佈的分佈式 TensorFlow,最突出的特徵是能夠在不同的機器上同時運行。雖然説並不是所有人都需要在幾千台服務器上運行 TensorFlow,但研究者和創業公司的確能在多台機器運行的 TensorFlow 中獲益。

TensorFlow 技術負責人 Rajat Monga 解釋了分佈式 TensorFlow 的延期發佈:“我們內部使用的軟件棧(Software Stack),和外部人們使用的非常不同......所以要讓它變得開源,對於我們來説是極其困難的事情。”

經過 5 個月的等待,分佈式 TensorFlow 終於到來了。

昨天,Google 發佈了 TensorFlow 0.8,它有一些很好的改進。它為分佈式的版本做了一些改變,而且使之更容易使用。以下內容還介紹了用分佈式系統訓練卷積圖像識別模型的一些可擴展的數字。

TensorFlow:



TensorFlow 是為使用數據流程圖的數值計算開發的開源軟件庫。圖中的節點表示數學運算,而圖的邊代表着彼此溝通的多維數據陣列(Tensors)。在只使用單個 API 的情況下,靈活的架構可以讓你在桌面、服務器或者移動設備的單個或多個 CPUs 和 GPUs 部署計算。TensorFlow 最早由 Google Brain 團隊的研究人員和工程師研發,目的是管理機器學習和深度神經網絡的研究工作,但是這個系統也足夠通用,適用於其他的應用領域。

TensorFlow 0.8:支持分佈式計算


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

今天,我們很興奮的推出了 TensorFlow 0.8,它擁有分佈式計算的支持,包括在你的基礎設施上訓練分佈式模型的一切支持。分佈式的 TensorFlow 由高性能的 gRPC 庫支持,也能夠支持在幾百台機器上並行訓練。它補充了我們最近的公佈的 Google 雲機器學習,也能夠使用 Google 雲平台訓練和服務你的 TensorFlow 模型。

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

圖:TensorFlow 可以加快訓練生成網絡的速度,使用 100 個 GPUs 能達到 56 倍。


分佈式訓練也支持你使用像 Kubernetes 這樣的集羣管理系統,以進行擴大規模的訓練。更進一步説,一旦你已經訓練了模型,就可以部署到產品並且加快在 Kubernetes 使用 TensorFlow 服務的推理速度。

除了分佈式生成器,TensorFlow 0.8 還發布了定義你自己分佈式模型的新庫。TensorFlow 分佈式架構允許很靈活的定義模型,因為集羣中的每個進程都可以進行通用的計算。我們之前的系統 DistBelief(像很多追隨它的系統)使用特殊的 “參數服務器” 來管理共享的模型參數,其中的參數服務器有簡單的讀 / 寫接口,以更新共享的參數。在 TensorFlow 中,所有的計算,包括參數的管理,都會在數據流的圖中呈現,並且系統會把數據流映射到不同設備的可用處理器中(例如多核 CPUs,一般用途的 GPUs,手機處理器等)。為了讓 TensorFlow 更好使用,我們也推出了 Python 的庫,使之更容易寫模型,在一個處理器中運行,並且擴展到使用多個副本以進行訓練。

這種架構使得它可以更容易的擴大單進程的工作到集羣中,同時還可以進行新穎的分佈式訓練架構的實驗。舉個例子,我的同事最近展示了 “重新訪問分佈式同步 SGD”(Revisiting Distributed Synchronous SGD),在 TensorFlow 圖部署,實現了在圖像模型訓練中更好的 “時間-精度”。

目前支持分佈式計算的 TensorFlow 版本還僅僅是個開始。我們將繼續研究提高分佈式訓練表現的方法,既有通過工程的,也有通過算法的改進,我們也會在 GitHub 社區分享這些改進。


搶先嚐試



如果你想跳過複雜的按照過程,感受 TensorFlow,Google 提供了一個基於瀏覽器的模擬器,能讓你感受基本的 TensorFlow 和深度學習。

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


資料來源:36Kr

如果喜歡我們的文章,請即分享到︰

標籤: Google  TensorFlow  Android  AI