ITBear旗下自媒體矩陣:

GTC大會飛槳專家演講實錄:簡單易用的飛槳分布式訓練功能升級

   時間:2020-12-25 11:09:08 來源:互聯(lián)網(wǎng)編輯:星輝 發(fā)表評論無障礙通道

有著“年度 AI 風向標”之稱GTC 大會是英偉達每年最重要的發(fā)布平臺之一,廣納當今計算領域最熱門話題的相關培訓和見解,并為廣大開發(fā)者創(chuàng)造與頂級專家交流的機會。12月15日-19日,GTC中國大會首次以線上大會的形式與開發(fā)者相見,共組織265場技術演講,演講者分別來自百度、阿里、騰訊、字節(jié)跳動等眾多知名企業(yè)與清華大學、中科院計算所等知名高校。百度飛槳也貢獻了四個主題演講,現(xiàn)在為您帶來飛槳大規(guī)模分布式訓練進展與應用的演講實錄。

課程鏈接:https://nvidia.gtcevent.cn/forum/watch?session_id=CNS20351

AI Studio鏈接:https://aistudio.baidu.com/aistudio/education/group/info/2099

大規(guī)模分布式訓練作為飛槳的重要功能模塊,在并行訓練API、并行策略、框架基礎架構都有了相應的更新升級。在一小時的演講中,百度主任研發(fā)架構師董大祥圍繞飛槳框架新版本的大規(guī)模訓練與應用展開,介紹了大規(guī)模分布式訓練的功能、性能、以及在產(chǎn)業(yè)中的實踐。

以下為演講實錄部分:

飛槳的這次改動中主要是對并行訓練API進行了全面更新,使代碼變得更加簡潔,也更方便調(diào)試,另外也對并行訓練的策略進行了進一步的升級,可以適用于更大規(guī)模的模型參數(shù)。

飛槳的分布式訓練API——Fleet的1.X版本已經(jīng)投入使用,但一直在內(nèi)部不斷地打磨優(yōu)化和一些升級,所以在文檔中處于面向用戶隱藏的狀態(tài)。新版本中,我們固定了分布式訓練API,正式面向外部的開發(fā)者開放,同時也把一些主流的訓練模式,包括集合通信訓練和參數(shù)服務器訓練,做成統(tǒng)一的Fleet API(paddle.distributed.fleet),并在集合通信訓練功能下實現(xiàn)了動態(tài)圖和靜態(tài)圖訓練API的統(tǒng)一。

如下三份代碼分別展示了采用參數(shù)服務器訓練、集合通信訓練的動態(tài)圖和靜態(tài)圖方式訓練模型的示例代碼,可以看到僅需要幾行代碼的新增即可完成單機轉(zhuǎn)化為分布式訓練的目標。

為了讓用戶能夠靈活定義不同的分布式訓練模式,我們開放了分布式加速策略distributed strategy類供用戶定義并行訓練的策略,比如我們可以去定義同步訓練或者異步訓練,可以去定義自動和精度訓練等等。如下是distributed strategy類涵蓋的一些分布式加速策略API,幾乎囊括了所有能夠用到的分布式訓練加速策略。

另外我們考慮到用戶的調(diào)試體驗,也在執(zhí)行方式上做了改進,如果用戶采用Fleet去寫分布式訓練的代碼,在單機和多機上都可以執(zhí)行訓練。Fleet API識別出來用戶在跑單機訓練,就會在底層屏蔽掉一些多機的邏輯,另一個就是用戶可以去使用fleetrun的啟動接口執(zhí)行單機多卡的任務或多機多卡的任務,需要強調(diào)的就是這兩種執(zhí)行方式都是同一份代碼,也就是用戶可以很容易的在多機多卡和單機單卡之間做切換和調(diào)試。

飛槳新版本也開放了分布式通信的底層API,面向高級用戶提供了可微分的分布式編程能力,開放了比如broadcast、all_reduce、reduce、all_gather等操作的前向與反向操作,還會開放更多的底層接口來滿足開發(fā)者修改底層通信邏輯的需求。

與友商的性能對比

GPU卡具有顯存限制,這使得模型大小及訓練的Batch大小存在上限。我們設計了低成本擴大Batch的方法,gradient_merge梯度累積,對于不含BatchNormalization的模型有較好擴展性,性能幾乎無損。另外我們還提供了半精度通信等橫向擴展的能力,假使我們在訓練的過程中使用的是一些比較老的GPU集群,比如p40不支持 FP16的計算,但是在通信的過程中是可以把 FP32精度量化為FP16精度后再進行通信,這樣可以在訓練精度幾乎無損的情況下降低網(wǎng)絡帶寬占用。通過實測,P40下單機八卡訓練VGG16模型,訓練吞吐可以提升70%。

在超大規(guī)模模型參數(shù)的GPU訓練支持上,飛槳框架2.0的RC版本推出sharding策略,開發(fā)者使用sharding策略即可訓練參數(shù)超過百億、甚至千億級別的模型,例如openAI的GPT-3模型,百度的Plato模型。sharding策略的原理是利用模型分片存儲,把超大規(guī)模模型參數(shù)的維護分布在各個GPU卡上,并通過集合通信操作All-Gather來實現(xiàn)模型參數(shù)的臨時獲取,在計算利用局部模型參數(shù)進行計算完成后即釋放臨時維護的模型參數(shù)。

飛槳當前的并行策略與選項開關較多,面向初級用戶的使用仍然存在一定的門檻,在新版本中,面向用戶提供可以自動并行的第一級(O1)功能,即并行策略組合功能,飛槳在用戶開啟自動并行選項時即可在底層自動打開盡可能幫助用戶加速的并行策略。在隨后的版本中,飛槳還會逐漸開放更高級的自動并行功能,例如在運行時動態(tài)調(diào)整并行策略等。

在適配多硬件進行分布式訓練方面,飛槳正式推出異構參數(shù)服務器訓練架構,充分利用AI芯片的計算能力提升訓練吞吐,并兼容新接入的硬件進行并行訓練,例如百度的XPU芯片。

飛槳框架新版本全面升級了面向開發(fā)者的編程接口,在分布式訓練方面也本著持續(xù)降低用戶使用門檻的方向進行編程接口的設計,同時也兼顧高級的開發(fā)者進行底層通信邏輯修改的需求開放底層API。在并行訓練的策略、功能升級方面,飛槳也持續(xù)提升了并行訓練的橫向擴展性和縱向擴展性,提供目前最火熱GPT家族模型訓練能力,支持千億模型參數(shù)的GPU訓練,在對接硬件生態(tài)方面也推出了大規(guī)模異構參數(shù)服務器訓練架構,方面更多的硬件快速接入飛槳分布式訓練能力。

【關于飛槳】

飛槳(PaddlePaddle)以百度多年的深度學習技術研究和業(yè)務應用為基礎,是中國首個開源開放、技術領先、功能完備的產(chǎn)業(yè)級深度學習平臺,包括飛槳開源平臺和飛槳企業(yè)版。飛槳開源平臺包含核心框架、基礎模型庫、端到端開發(fā)套件與工具組件,持續(xù)開源核心能力,為產(chǎn)業(yè)、學術、科研創(chuàng)新提供基礎底座。飛槳企業(yè)版基于飛槳開源平臺,針對企業(yè)級需求增強了相應特性,包含零門檻AI開發(fā)平臺EasyDL和全功能AI開發(fā)平臺BML。EasyDL主要面向中小企業(yè),提供零門檻、預置豐富網(wǎng)絡和模型、便捷高效的開發(fā)平臺;BML是為大型企業(yè)提供的功能全面、可靈活定制和被深度集成的開發(fā)平臺。

舉報 0 收藏 0 打賞 0評論 0
 
 
更多>同類資訊
全站最新
熱門內(nèi)容
網(wǎng)站首頁  |  關于我們  |  聯(lián)系方式  |  版權聲明  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報  |  開放轉(zhuǎn)載  |  滾動資訊  |  English Version