0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DeepMind又放福利:開源了一個內部的分布式機器學習庫TF-Replicator

DPVg_AI_era ? 來源:lp ? 2019-03-10 09:41 ? 次閱讀

今天,DeepMind又放福利:開源了一個內部的分布式機器學習TF-Replicator,可以幫助研究人員將TensorFlow模型輕松部署到GPU、TPU,并實現(xiàn)不同類型加速器之間的無縫切換。

最近AI領域的突破,從AlphaFold到BigGAN再到AlphaStar,一個反復出現(xiàn)的主題是,對方便、可靠的可擴展性的需求。

研究人員已經能夠獲取越來越多計算能力,得以訓練更大的神經網絡,然而,將模型擴展到多個設備并不是一件容易的事情。

今天,DeepMind又將其內部一個秘密武器公之于眾——TF-Replicator,一個可以幫助研究人員將他們的TensorFlow模型輕松部署到GPU、Cloud TPU的分布式機器學習框架,即使他們之前完全沒有使用分布式系統(tǒng)的經驗。

TF-Replicator由DeepMind的研究平臺團隊開發(fā),初衷是為DeepMind的研究人員提供一個簡單的接入TPU的API,現(xiàn)在,TF-Replicator已經是DeepMind內部最廣泛使用的TPU編程接口。

TF-Replicator允許研究人員針對機器學習定位不同的硬件加速器進行,將工作負載擴展到許多設備,并在不同類型的加速器之間無縫切換。

雖然它最初是作為TensorFlow上面的一個庫開發(fā)的,但目前TF-Replicator的API已經集成到TensorFlow 2.0新的tf.distribute.Strategy中,作為 tf.distribute.Strategy的一部分開源:

https://www.tensorflow.org/alpha/guide/distribute_strategy

團隊還公開了相關論文:TF-Replicator: Distributed Machine Learning for Researchers,全面描述了這個新框架的技術細節(jié)。

https://arxiv.org/abs/1902.00465

接下來,我們將介紹TF-Replicator背后的想法和技術挑戰(zhàn)。

構建一個分布式機器學習庫

雖然TensorFlow為CPU、GPU和TPU設備都提供了直接支持,但是在目標之間切換需要用戶付出大量的努力。這通常涉及為特定的硬件目標專門編寫代碼,將研究想法限制在該平臺的功能上。

一些構建在TensorFlow之上的現(xiàn)有框架,例如Estimators,已經試圖解決這個問題。然而,它們通常針對生產用例,缺乏快速迭代研究思路所需的表達性和靈活性。

我們開發(fā)TF-Replicator的初衷是為DeepMind的研究人員提供一個使用TPU的簡單API。TPU為機器學習工作負載提供了可擴展性,實現(xiàn)了許多研究突破,例如使用我們的BigGAN模型實現(xiàn)了最先進的圖像合成。

TensorFlow針對TPU的原生API與針對GPU的方式不同,這造成了使用TPU的障礙。TF-Replicator提供了一個更簡單、更用戶友好的API,隱藏了TensorFlow的TPU API的復雜性。此外,研究平臺團隊與不同機器學習領域的研究人員密切合作,開發(fā)了TF-Replicator API,以確保必要的靈活性和易用性。

TF-Replicator API

使用TF-Replicator編寫的代碼與使用TensorFlow中為單個設備編寫的代碼類似,允許用戶自由定義自己的模型運行循環(huán)。用戶只需要定義(1)一個公開數據集的輸入函數,以及(2)一個定義其模型邏輯的step函數(例如,梯度下降的單個step):

# Deploying a model with TpuReplicator.repl = tf_replicator.TpuReplicator( num_workers=1, num_tpu_cores_per_worker=8)with repl.context(): model = resnet_model() base_optimizer = tf.train.AdamOptimizer() optimizer = repl.wrap_optimizer(base_optimizer)# ... code to define replica input_fn and step_fn.per_replica_loss = repl.run(step_fn, input_fn)train_op = tf.reduce_mean(per_replica_loss)with tf.train.MonitoredSession() as session: repl.init(session) for i in xrange(num_train_steps): session.run(train_op) repl.shutdown(session)

將計算擴展到多個設備需要設備之間進行通信。在訓練機器學習模型的背景下,最常見的通信形式是累積梯度(accumulate gradients)以用于優(yōu)化算法,如隨機梯度下降。

因此,我們提供了一種方便的方法來封裝TensorFlow Optimizers,以便在更新模型參數之前在設備之間累積梯度。對于更一般的通信模式,我們提供了類似于MPI的原語,如“all_reduce”和“broadcast”。這些使得實現(xiàn)諸如全局批標準化之類的操作變得非常簡單,這是擴展BigGAN模型訓練的關鍵技術。

輸入數據從主機發(fā)送到各個GPU, GPU立即開始處理。當需要在GPU之間交換信息時,它們會在發(fā)送數據之前進行同步。

實現(xiàn)

對于多GPU計算,TF-Replicator依賴于“圖內復制”(“in-graph replication)模式,其中每個設備的計算在同一個TensorFlow graph中復制。設備之間的通信是通過連接設備對應子圖中的節(jié)點來實現(xiàn)的。在TF-Replicator中實現(xiàn)這一點很具挑戰(zhàn)性,因為在TensorFlow graph中的任何位置都可能發(fā)生通信。因此,構造計算的順序至關重要。

我們的第一個想法是在一個單獨的Python線程中同時構建每個設備的子圖。當遇到通信原語時,線程同步,主線程插入所需的跨設備計算。之后,每個線程將繼續(xù)構建其設備的計算。

然而,在我們考慮這種方法時,TensorFlow的圖形構建API不是線程安全的,這使得在不同線程中同時構建子圖非常困難。相反,我們使用圖形重寫(graph rewriting)在所有設備的子圖構建完成后插入通信。在構造子圖時,占位符被插入到需要通信的位置。然后,我們跨設備收集所有匹配占位符,并用適當的跨設備計算替換它們。

當TF-Replicator構建一個in-graph replicated計算時,它首先獨立地為每個設備構建計算,并將占位符留給用戶指定的跨設備計算。構建好所有設備的子圖之后,TF-Replicator通過用實際的跨設備計算替換占位符來連接它們。

為AI研究構建一個平臺

通過在TF-Replicator的設計和實現(xiàn)過程中與研究人員密切合作,我們最終構建一個庫,讓用戶能夠輕松地跨多個硬件加速器進行大規(guī)模計算,同時讓他們擁有進行前沿AI研究所需的控制和靈活性。

例如,在與研究人員討論之后,我們添加了MPI風格的通信原語,如all-reduce。TF-Replicator和其他共享基礎架構使我們能夠在穩(wěn)健的基礎上構建越來越復雜的實驗,并在整個DeepMind快速傳播最佳實踐。

在撰寫本文時,TF-Replicator已經成為DeepMind應用最廣泛的TPU編程接口。雖然這個庫本身并不局限于訓練神經網絡,但它最常用來訓練大量數據。例如,BigGAN模型是在一個512核的TPUv3 pod訓練的,batch size為2048。

在采用分布式actor-learner設置的增強學習智能體中,例如我們的重要性加權actor-learner架構,可擴展性是通過讓許多actor通過與環(huán)境的交互生成新的體驗來實現(xiàn)的。然后,learner對這些數據進行處理,以改進agent的策略,表示為一個神經網絡。為了應對越來越多的actor,TF-Replicator可以很輕松地將learner分布在多個硬件加速器上。

這些以及更多例子在我們的arXiv論文中有更詳細的描述。

Blog:

https://deepmind.com/blog/tf-replicator-distributed-machine-learning/

Paper:

https://arxiv.org/abs/1902.00465

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4773

    瀏覽量

    100878
  • 機器學習
    +關注

    關注

    66

    文章

    8423

    瀏覽量

    132757
  • DeepMind
    +關注

    關注

    0

    文章

    130

    瀏覽量

    10879

原文標題:你的模型可以輕松使用TPU了!DeepMind 開源分布式機器學習庫TF-Replicator

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于ptp的分布式系統(tǒng)設計

    在現(xiàn)代分布式系統(tǒng)中,精確的時間同步對于確保數據致性、系統(tǒng)穩(wěn)定性和性能至關重要。PTP(Precision Time Protocol)是種網絡協(xié)議,用于在分布式系統(tǒng)中實現(xiàn)高精度的時
    的頭像 發(fā)表于 12-29 10:09 ?127次閱讀

    HarmonyOS Next 應用元服務開發(fā)-分布式數據對象遷移數據權限與基礎數據

    提供async版本供該場景使用。 當前,wantParams中“sessionId”字段在遷移流程中被系統(tǒng)占用,建議開發(fā)者在wantParams中定義其他key值存儲該分布式數據對象生成的id,避免
    發(fā)表于 12-24 09:40

    PingCAP推出TiDB開源分布式數據庫

    的性能表現(xiàn)。我們將繼續(xù)堅持開源的創(chuàng)新理念,將TiDB打造成領先的數據產品?!?部署新分布式數據
    的頭像 發(fā)表于 11-24 11:26 ?475次閱讀
    PingCAP推出TiDB<b class='flag-5'>開源</b><b class='flag-5'>分布式數據庫</b>

    分布式通信的原理和實現(xiàn)高效分布式通信背后的技術NVLink的演進

    大型模型的大小已經超出了單個 GPU 的范圍。所以就需要實現(xiàn)跨多個 GPU 的模型訓練,這種訓練方式就涉及到了分布式通信和 NVLink。 當談及分布式通信和 NVLink 時,我們進入了
    的頭像 發(fā)表于 11-18 09:39 ?494次閱讀
    <b class='flag-5'>分布式</b>通信的原理和實現(xiàn)高效<b class='flag-5'>分布式</b>通信背后的技術NVLink的演進

    分布式光纖測溫解決方案

    分布式光纖測溫解決方案
    的頭像 發(fā)表于 11-12 01:02 ?172次閱讀
    <b class='flag-5'>分布式</b>光纖測溫解決方案

    分布式光纖測溫是什么?應用領域是?

    分布式光纖測溫是種先進的溫度測量技術,它利用光纖的拉曼散射原理進行溫度監(jiān)測。以下是對分布式光纖測溫的詳細介紹: 、基本原理 分布式光纖測
    的頭像 發(fā)表于 10-24 15:30 ?408次閱讀
    <b class='flag-5'>分布式</b>光纖測溫是什么?應用領域是?

    分布式輸電線路故障定位中的分布式是指什么

    所謂分布式指的是產品的部署方式,是相對于集中式而言的。 、部署方式 分散安裝:分布式輸電線路故障定位系統(tǒng)中的采集裝置需要安裝在輸電線路的多個位置,通常是每隔定距離設置
    的頭像 發(fā)表于 10-16 11:39 ?286次閱讀
    <b class='flag-5'>分布式</b>輸電線路故障定位中的<b class='flag-5'>分布式</b>是指什么

    文講清什么是分布式云化數據!

    分布式云化數據種先進的數據管理系統(tǒng),它將傳統(tǒng)的數據技術與分布式計算、云計算和大數據處理技術相融合。這種數據
    的頭像 發(fā)表于 10-14 10:06 ?232次閱讀

    基于分布式存儲WDS的金融信創(chuàng)云承載數據類關鍵應用

    基于分布式存儲WDS的金融信創(chuàng)云承載數據類關鍵應用
    的頭像 發(fā)表于 08-16 09:42 ?286次閱讀
    基于<b class='flag-5'>分布式</b>存儲WDS的金融信創(chuàng)云承載數據<b class='flag-5'>庫</b>類關鍵應用

    鴻蒙開發(fā)接口數據管理:【@ohos.data.distributedData (分布式數據管理)】

    分布式數據管理為應用程序提供不同設備間數據分布式協(xié)同能力。通過調用分布式數據各個接口,應用程序可將數據保存到分布式數據庫中,并可對
    的頭像 發(fā)表于 06-07 09:30 ?1018次閱讀
    鴻蒙開發(fā)接口數據管理:【@ohos.data.distributedData (<b class='flag-5'>分布式</b>數據管理)】

    HarmonyOS開發(fā)實例:【分布式手寫板】

    使用設備管理及分布式鍵值數據能力,實現(xiàn)多設備之間手寫板應用拉起及同步書寫內容的功能。
    的頭像 發(fā)表于 04-17 21:45 ?517次閱讀
    HarmonyOS開發(fā)實例:【<b class='flag-5'>分布式</b>手寫板】

    鴻蒙HarmonyOS開發(fā)實例:【分布式關系型數據

    使用[@ohos.data.relationalStore]接口和[@ohos.distributedDeviceManager]?接口展示在eTS中分布式關系型數據的使用,在增、刪、改、查的基本操作外,還包括
    的頭像 發(fā)表于 04-11 09:52 ?953次閱讀
    鴻蒙HarmonyOS開發(fā)實例:【<b class='flag-5'>分布式</b>關系型數據<b class='flag-5'>庫</b>】

    分布式控制系統(tǒng)的七功能和應用

    分布式控制系統(tǒng)的七功能和應用? 分布式控制系統(tǒng)是種由多個獨立的控制單元組成的系統(tǒng),每個控制單元負責系統(tǒng)中的部分功能。它具有分散的、自治
    的頭像 發(fā)表于 02-01 10:51 ?1450次閱讀

    鴻蒙OS 分布式任務調度

    鴻蒙OS 分布式任務調度概述 在 HarmonyO S中,分布式任務調度平臺對搭載 HarmonyOS 的多設備構筑的“超級虛擬終端”提供統(tǒng)的組件管理能力,為應用定義統(tǒng)的能力基線、
    的頭像 發(fā)表于 01-29 16:50 ?511次閱讀

    什么是分布式架構?

    分布式架構是指將系統(tǒng)或應用拆分成多個獨立的節(jié)點,這些節(jié)點通過網絡連接進行通信和協(xié)作,以實現(xiàn)共同完成任務的種架構模式。這種架構模式旨在提高系統(tǒng)的可擴展性、可靠性和性能表現(xiàn)。
    的頭像 發(fā)表于 01-12 15:04 ?1270次閱讀
    什么是<b class='flag-5'>分布式</b>架構?