全網(wǎng)最全-超大模型+分布式訓練架構和經(jīng)典論文

如何利用計算中心成千上百的AI加速芯片的集群,訓練參數(shù)量超過百億的大規(guī)模模型柱查?并行計算是一種行之有效的方法甩苛,除了分布式并行計算相關的技術之外逻悠,其實在訓練大模型的過程還會融合更多的技術,如新的算法模型架構和內(nèi)存/計算優(yōu)化技術等夺衍。

這篇文章梳理我們在大模型訓練中使用到的相關技術點狈谊,主要分為三個方面來回顧現(xiàn)階段使用多AI加速芯片訓練大模型的主流方法。

  1. ****分布式并行加速:****并行訓練主要分為數(shù)據(jù)并行沟沙、模型并行、流水線并行壁榕、張量并行四種并行方式矛紫,通過上述四種主要的分布式并行策略來作為大模型訓練并行的主要策略。

  2. ****算法模型架構:****大模型訓練離不開Transformer網(wǎng)絡模型結(jié)構的提出牌里,后來到了萬億級稀疏場景中經(jīng)常遇到專家混合模型MoE都是大模型離不開的新算法模型結(jié)構颊咬。

  3. ****內(nèi)存和計算優(yōu)化:****關于內(nèi)存優(yōu)化技術主要由激活Activation重計算务甥、內(nèi)存高效的優(yōu)化器、模型壓縮喳篇,而計算優(yōu)化則集中體現(xiàn)在混合精度訓練敞临、算子融合、梯度累加等技術上麸澜。

大模型訓練的目標公式

超大模型訓練的總體目標就是提升總的訓練速度挺尿,減少大模型的訓練時間,你知道啦炊邦,畢竟訓練一個大模型基本上從按下回車的那一刻開始要1到2個月编矾,是很蛋疼的。下面主要看一下在大模型訓練中的總訓練速度的公式:

總訓練速度 ∝ 單卡速度 * 加速芯片數(shù)量 * 多卡加速比

上面公式當中馁害,單卡速度主要由單塊AI加速芯片的運算速度窄俏、數(shù)據(jù)IO來決定;而加速芯片數(shù)量這個很清楚碘菜,數(shù)量越多增加訓練速度凹蜈;而多卡加速比則是有計算和通訊效率決定。

我們再把使用到技術跟這個公式關聯(lián)在一起:

image

1忍啸、單卡速度:單卡速度既然是運算速度和數(shù)據(jù)IO的快慢來決定踪区,那么就需要對單卡訓練進行優(yōu)化,于是主要的技術手段有精度訓練吊骤、算子融合缎岗、梯度累加來加快單卡的訓練性能。

2白粉、加速芯片數(shù)量:理論上传泊,AI芯片數(shù)量越多,模型訓練越快鸭巴。但是眷细,隨著訓練數(shù)據(jù)集規(guī)模的進一步增長,加速比的增長并不明顯鹃祖。如數(shù)據(jù)并行就會出現(xiàn)局限性溪椎,當訓練資源擴大到一定規(guī)模時,由于通信瓶頸的存在恬口,增加計算資源的邊際效應并明顯校读,甚至增加資源也沒辦法進行加速。這時候需要通訊拓撲進行優(yōu)化祖能,例如通過ring-all-reduce的通訊方式來優(yōu)化訓練模式歉秫。

3、多卡加速比:多卡加速比既然由計算养铸、通訊效率決定雁芙,那么就需要結(jié)合算法和集群中的網(wǎng)絡拓撲一起優(yōu)化轧膘,于是有了數(shù)據(jù)并行DP、模型并行MP兔甘、流水線并行PP相互結(jié)合的多維度混合并行策略谎碍,來增加多卡訓練的效率。

總的來說呢洞焙,超大模型訓練的目標就是優(yōu)化上面的公式蟆淀,提升總訓練速度。核心思想是將數(shù)據(jù)和計算有關的圖/算子切分到不同設備上闽晦,同時盡可能降低設備間通信所需的代價扳碍,合理使用多臺設備的計算資源,實現(xiàn)高效的并發(fā)調(diào)度訓練仙蛉,最大化提升訓練速度笋敞。


大模型訓練的集群架構

這里的集群架構是為了機器學習模型的分布式訓練問題。深度學習的大模型目前主要是在集群中才能訓練出來啦荠瘪,而集群的架構也需要根據(jù)分布式并行夯巷、深度學習、大模型訓練的技術來進行合理安排哀墓。

在2012年左右Spark采取了簡單直觀的數(shù)據(jù)并行的方法解決模型并行訓練的問題趁餐,但由于Spark的并行梯度下降方法是同步阻斷式的,且模型參數(shù)需通過全局廣播的形式發(fā)送到各節(jié)點篮绰,因此Spark的并行梯度下降是相對低效的后雷。

2014年李沐提出了分布式可擴展的Parameter Server架構,很好地解決了機器學習模型的分布式訓練問題吠各。Parameter Server不僅被直接應用在各大公司的機器學習平臺上臀突,而且也被集成在TensorFlow,Pytroch贾漏、MindSpore候学、PaddlePaddle等主流的深度框架中,作為機器學習分布式訓練最重要的解決方案之一纵散。

目前最流行的模式有兩種:

1. 參數(shù)服務器模式(Parameter Server梳码,PS)

2. 集合通訊模式(Collective Communication,CC)

其中參數(shù)服務器主要是有一個或者多個中心節(jié)點伍掀,這些節(jié)點稱為PS節(jié)點掰茶,用于聚合參數(shù)和管理模型參數(shù)。而集合通信則沒有管理模型參數(shù)的中心節(jié)點硕盹,每個節(jié)點都是 Worker符匾,每個Worker負責模型訓練的同時,還需要掌握當前最新的全局梯度信息瘩例。

參數(shù)服務器模式

參數(shù)服務器架構Parameter Server啊胶,PS架構包括兩個部分,首先是把計算資源分為兩個部分垛贤,參數(shù)服務器節(jié)點和工作節(jié)點:1)參數(shù)服務器節(jié)點用來存儲參數(shù)焰坪;2)工作節(jié)點部分用來做算法的訓練。

第二個部分就是把機器學習算法也分成兩個方面聘惦,即1)參數(shù)和2)訓練某饰。

image

如圖所示,PS架構將計算節(jié)點分為server與worker善绎,其中黔漂,worker用于執(zhí)行網(wǎng)絡模型的前向與反向計算。而server則對各個worker發(fā)回的梯度進行合并并更新模型參數(shù)禀酱,對深度學習模型參數(shù)中心化管理的方式炬守,非常易于存儲超大規(guī)模模型參數(shù)。

但是隨著模型網(wǎng)絡越來越復雜剂跟,對算力要求越來越高减途,在數(shù)據(jù)量不變的情況下,單個GPU的計算時間是有差異的曹洽,并且網(wǎng)絡帶寬之間并不平衡鳍置,會存在部分GPU計算得比較快,部分GPU計算得比較慢送淆。這個時候如果使用異步更新網(wǎng)絡模型的參數(shù)税产,會導致優(yōu)化器相關的參數(shù)更新出現(xiàn)錯亂。而使用同步更新則會出現(xiàn)阻塞等待網(wǎng)絡參數(shù)同步的問題偷崩。

GPU 強大的算力毋庸置疑可以提升集群的計算性能辟拷,但隨之而來的是,不僅模型規(guī)模會受到機器顯存和內(nèi)存的制約环凿,而且通信帶寬也會由于集群網(wǎng)卡數(shù)量降低而成為瓶頸梧兼。

這個時候百度基于PS架構之上提出了Ring-All-Reduce新的通訊架構方式。

image

如圖所示智听,通過異步流水線執(zhí)行機制羽杰,隱蔽了 IO 帶來的額外性能開銷,在保證訓練速度的同時到推,使訓練的模型大小不再受制于顯存和內(nèi)存考赛,極大提升模型的規(guī)模。而 RPC&NCCL 混合通信策略可以將部分稀疏參數(shù)采用 RPC 協(xié)議跨節(jié)點通信莉测,其余參數(shù)采用卡間 NCCL 方式完成通信颜骤,充分利用帶寬資源。

集合通訊模式

image

大模型訓練相關論文

2022年學習大模型捣卤、分布式深度學習忍抽,不可能錯過的AI論文八孝,你都讀過了嗎?根據(jù)句上面的介紹鸠项,我們將會分為分布式并行策略相關的論文干跛、分布式框架相關的論文、通訊帶寬優(yōu)化相關的論文等不同的維度對論文進行整理祟绊。并給出一個簡單的解讀楼入,希望大家可以一起去分享好的思想。

分布式并行策略相關

數(shù)據(jù)并行(Data Parallel牧抽,DP):數(shù)據(jù)并行訓練加速比最高嘉熊,但要求每個設備上都備份一份模型,顯存占用比較高扬舒。

模型并行(Model Parallel阐肤,MP):模型并行,通信占比高呼巴,適合在機器內(nèi)做模型并行且支持的模型類型有限泽腮。

流水線并行(Pipeline Parallel,PP):流水線并行衣赶,訓練設備容易出現(xiàn)空閑狀態(tài)诊赊,加速效率沒有數(shù)據(jù)并行高;但能減少通信邊界支持更多的層數(shù)府瞄,適合在機器間使用碧磅。

混合并行(Hybrid parallel窜骄,HP):混合并行策略的思想神汹,集三種策略的優(yōu)勢于一身,實現(xiàn)取長補短溅蛉。具體來說货邓,先在單機內(nèi)使用模型并行和分組參數(shù)切片組合的策略秆撮,這么選擇的原因是這兩個策略通信量較大,適合使用機器內(nèi)的卡間通信换况。接著职辨,為了承載千億規(guī)模大模型,疊加流水線并行策略戈二,使用多臺機器共同分擔計算舒裤。最后,為了計算和通訊高效觉吭,在外層又疊加了數(shù)據(jù)并行來增加并發(fā)數(shù)量腾供,提升整體訓練速度。這就是我們目前在AI框架中添加的并行策略,業(yè)界基本上都是使用這種方式伴鳖。

image

****并行相關的論文****

下面就是并行相關的經(jīng)典推薦論文节值,首先就是Jeff Dean在2012年的開創(chuàng)文章,然后介紹Facebook Pytroch里面使用到的數(shù)據(jù)并行中DDP黎侈、FSDP的策略察署。然而這并不夠闷游,因為有多重并行策略峻汉,于是NVIDIA推出了基于GPU的數(shù)據(jù)、模型脐往、流水線并行的比較綜述文章休吠。實際上流水線并行會引入大量的服務器空載buffer,于是Google和微軟分別針對流水線并行優(yōu)化推出了GPipe和PipeDream业簿。最后便是NVIDIA針對自家的大模型Megatron瘤礁,推出的模型并行涉及到的相關策略。

image

- Large Scale Distributed Deep Networks

2012年的神作梅尤,要知道那個時候神經(jīng)網(wǎng)絡都不多柜思,這是出自于Google大神Jeff Dean的文章。主要是神經(jīng)網(wǎng)絡進行模型劃分巷燥,因為推出得比較早赡盘,所以會稍微Naitve一點,但是作為分布式并行的開創(chuàng)之作缰揪,稍微推薦一下陨享。

- Getting Started with Distributed Data Parallel

- PyTorch Distributed: Experiences on Accelerating Data Parallel Training.

Facebook為Pytorch打造的分布式數(shù)據(jù)并行策略算法 Distributed Data Parallel (DDP)。與 Data Parallel 的單進程控制多 GPU 不同钝腺,在 distributed 的幫助下抛姑,只需要編寫一份代碼,torch 就會自動將其分配給n個進程艳狐,分別在 n 個 GPU 上運行定硝。不再有主 GPU,每個 GPU 執(zhí)行相同的任務毫目。對每個 GPU 的訓練都是在自己的過程中進行的蔬啡。每個進程都從磁盤加載其自己的數(shù)據(jù)。分布式數(shù)據(jù)采樣器可確保加載的數(shù)據(jù)在各個進程之間不重疊蒜茴。損失函數(shù)的前向傳播和計算在每個 GPU 上獨立執(zhí)行星爪。因此,不需要收集網(wǎng)絡輸出粉私。在反向傳播期間顽腾,梯度下降在所有GPU上均被執(zhí)行,從而確保每個 GPU 在反向傳播結(jié)束時最終得到平均梯度的相同副本。

- Fully Sharded Data Parallel: faster AI training with fewer GPUs

Facebook發(fā)布的FSDP(Fully Sharded Data Parallel)抄肖,對標微軟在DeepSpeed中提出的ZeRO久信,F(xiàn)SDP可以看成PyTorch中的DDP優(yōu)化版本,本身也是數(shù)據(jù)并行漓摩,但是和DDP不同的是裙士,F(xiàn)SDP采用了parameter sharding,所謂的parameter sharding就是將模型參數(shù)也切分到各個GPUs上管毙,而DDP每個GPU都要保存一份parameter腿椎,F(xiàn)SDP可以實現(xiàn)更好的訓練效率(速度和顯存使用)。

- Efficient Large-Scale Language Model Training on GPU Clusters

很好的一篇綜述出品與NVIDIA夭咬,論文中啃炸, NVIDIA 介紹了分布式訓練超大規(guī)模模型的三種必須的并行技術:數(shù)據(jù)并行(Data Parallelism)、模型并行(Tensor Model Parallelism)和流水并行(Pipeline Model Parallelism)卓舵。

- Automatic Cross-Replica Sharding of Weight Update in Data-Parallel Training

在傳統(tǒng)的數(shù)據(jù)并行中南用,模型參數(shù)被復制并在每次訓練循環(huán)結(jié)束后被優(yōu)化器更新。然而掏湾,當每個核的批量數(shù)不夠大的時候裹虫,計算或許會變成一個瓶頸。例如融击,以MLPerf的BERT訓練為例筑公,在512個第三代TPU芯片上,LAMB優(yōu)化器的參數(shù)更新時間可以占到整個循環(huán)時間的18%砚嘴。Xu等人在2020年提出了參數(shù)更新劃分技術十酣,這種分布式計算技術首先執(zhí)行一個reduce-scatter操作,然后使得每個加速器有整合梯度的一部分际长。這樣每個加速器就可以算出相應的被更新的局部參數(shù)耸采。在下一步,每個被更新的局部參數(shù)被全局廣播到各個加速器工育,這樣使得每個加速器上都有被更新的全局參數(shù)虾宇。為了獲得更高的加速比,同時用數(shù)據(jù)并行和模型并行去處理參數(shù)更新劃分如绸。在圖像分割模型中嘱朽,參數(shù)是被復制的,這種情況下參數(shù)更新劃分類似于數(shù)據(jù)并行怔接。然后搪泳,當參數(shù)被分布后到不同的核之后,就執(zhí)行多個并發(fā)的參數(shù)更新劃分扼脐。

image

- PipeDream: Fast and Efficient Pipeline Parallel DNN Training

微軟研究院宣布了Fiddle項目的創(chuàng)立岸军,其包括了一系列的旨在簡化分布式深度學習的研究項目奋刽。PipeDreams是Fiddle發(fā)布的第一個側(cè)重于深度學習模型并行訓練的項目之一。其主要采用“流水線并行”的技術來擴展深度學習模型的訓練艰赞。在 PipeDream 中主要克服流水線并行化訓練的挑戰(zhàn)佣谐,算法流程主要如下。首先方妖,PipeDream 必須在不同的輸入數(shù)據(jù)間狭魂,協(xié)調(diào)雙向流水線的工作。然后党觅,PipeDream 必須管理后向通道里的權重版本雌澄,從而在數(shù)值上能夠正確計算梯度,并且在后向通道里使用的權重版本必須和前向通道里使用的相同仔役。最后掷伙,PipeDream 需要流水線里的所有 stage 都花費大致相同的計算時間,這是為了使流水線得到最大的通量又兵。

- GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism

GPipe是Google發(fā)明的論文,專注于通過流水線并行擴展深度學習應用程序的訓練負載卒废。GPipe 把一個L層的網(wǎng)絡沛厨,切分成 K個 composite layers。每個composite layer 運行在單獨的TPU core上摔认。這K個 core composite layers只能順序執(zhí)行逆皮,但是GPipe引入了流水并行策略來緩解這個順序執(zhí)行的性能問題,把 mini-batch細分為多個更小的macro-batch参袱,提高并行程度电谣。GPipe 還用recomputation這個簡單有效的技巧來降低內(nèi)存,進一步允許訓練更大的模型抹蚀。

- Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism.

- Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM.

出自NVIDIA剿牺,雖然這兩篇文章都是在講Megatron網(wǎng)絡模型,實際上里面展開的都是模型并行等多維度并行的相關的技術點环壤。其中第一篇論文共有兩個主要的結(jié)論:1晒来,利用數(shù)據(jù)和模型并行的分布式技術訓練了具有3.9B參數(shù)的BERT-large模型,在GLUE的很多數(shù)據(jù)集上都取得了SOTA成績郑现。同時湃崩,還訓練了具有8.3B參數(shù)的GPT-2語言模型,并在數(shù)據(jù)集Wikitext103接箫,LAMBADA攒读,RACE都上取得SOTA成績。這篇論文辛友,一方面體現(xiàn)了算力的重要性薄扁,另一方面體現(xiàn)了模型并行和數(shù)據(jù)并行技術關鍵性。這兩項優(yōu)化技術在加速模型訓練和推斷過程中至關重要。

image

大模型算法相關

****必須了解的基礎大模型結(jié)構****

基礎大模型結(jié)構基本上都是由Google貢獻的泌辫,首先要看17年只需要Attention替代RNN序列結(jié)構随夸,于是出現(xiàn)了第四種深度學習的架構Transformer。有了Transformer的基礎架構后震放,在18年推出了BERT預訓練模型宾毒,之后的所有大模型都是基于Transformer結(jié)構和BERT的預訓練機制。后面比較有意思的就是使用Transformer機制的視覺大模型ViT和引入專家決策機制的MoE殿遂。

- Attention is all you need.

Google首創(chuàng)的Transformer大模型诈铛,是現(xiàn)在所有大模型最基礎的架構,現(xiàn)在Transformer已經(jīng)成為除了MLP墨礁、CNN幢竹、RNN以外第四種最重要的深度學習算法架構。谷歌在arxiv發(fā)了一篇論文名字教Attention Is All You Need恩静,提出了一個只基于attention的結(jié)構來處理序列模型相關的問題焕毫,比如機器翻譯。傳統(tǒng)的神經(jīng)機器翻譯大都是利用RNN或者CNN來作為encoder-decoder的模型基礎驶乾,而谷歌最新的只基于Attention的Transformer模型摒棄了固有的定式邑飒,并沒有用任何CNN或者RNN的結(jié)構。該模型可以高度并行地工作级乐,所以在提升翻譯性能的同時訓練速度也特別快疙咸。

- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

Google發(fā)布的首個預訓練大模型BERT,從而引爆了預訓練大模型的潮流和趨勢风科,這個不用介紹大家肯定有所聽聞啦撒轮。BERT的全稱為Bidirectional Encoder Representation from Transformers,是一個預訓練的語言表征模型贼穆。它強調(diào)了不再像以往一樣采用傳統(tǒng)的單向語言模型或者把兩個單向語言模型進行淺層拼接的方法進行預訓練题山,而是采用新的masked language model(MLM),以致能生成深度的雙向語言表征扮惦。BERT論文發(fā)表時提及在11個NLP(Natural Language Processing臀蛛,自然語言處理)任務中獲得了新的state-of-the-art的結(jié)果,令人目瞪口呆崖蜜。

- An Image is Worth 16x16 Words: transformer for Image Recognition at Scale

ViT Google提出的首個使用Transformer的視覺大模型浊仆,基本上大模型的創(chuàng)新算法都是出自于Google,不得不服豫领。ViT作為視覺轉(zhuǎn)換器的使用抡柿,而不是CNN或混合方法來執(zhí)行圖像任務。結(jié)果是有希望的但并不完整等恐,因為因為除了分類之外的基于視覺的任務:如檢測和分割洲劣,還沒有表現(xiàn)出來备蚓。此外,與Vaswani等人(2017年)不同囱稽,與CNN相比郊尝,transformer 性能的提升受到的限制要大得多。作者假設進一步的預訓練可以提高性能战惊,因為與其他現(xiàn)有技術模型相比流昏,ViT具有相對可擴展性。

image

- GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding.

好像G開頭的模型都是Google的了一樣魔性吞获。在 ICLR 2021 上况凉,Google 的進一步將 MoE 應用到了基于 Transformer 的神經(jīng)機器翻譯的任務上。GShard 將 Transformer 中的 Feedforward Network(FFN)層替換成了 MoE 層各拷,并且將 MoE 層和數(shù)據(jù)并行巧妙地結(jié)合起來刁绒。在數(shù)據(jù)并行訓練時,模型在訓練集群中已經(jīng)被復制了若干份烤黍。GShard 通過將每路數(shù)據(jù)并行的 FFN 看成 MoE 中的一個專家來實現(xiàn) MoE 層知市,這樣的設計通過在多路數(shù)據(jù)并行中引入 All-to-All 通信來實現(xiàn) MoE 的功能。

****具有里程碑意義性的大模型****

- GPT-3: Language Models are Few-Shot Learners

OpenAI發(fā)布的首個百億規(guī)模的大模型蚊荣,應該非常具有開創(chuàng)性意義初狰,現(xiàn)在的大模型都是對標GPT-3。GPT-3依舊延續(xù)自己的單向語言模型訓練方式互例,只不過這次把模型尺寸增大到了1750億,并且使用45TB數(shù)據(jù)進行訓練筝闹。同時媳叨,GPT-3主要聚焦于更通用的NLP模型,解決當前BERT類模型的兩個缺點:對領域內(nèi)有標簽數(shù)據(jù)的過分依賴:雖然有了預訓練+精調(diào)的兩段式框架关顷,但還是少不了一定量的領域標注數(shù)據(jù)糊秆,否則很難取得不錯的效果,而標注數(shù)據(jù)的成本又是很高的议双。對于領域數(shù)據(jù)分布的過擬合:在精調(diào)階段痘番,因為領域數(shù)據(jù)有限,模型只能擬合訓練數(shù)據(jù)分布平痰,如果數(shù)據(jù)較少的話就可能造成過擬合汞舱,致使模型的泛華能力下降,更加無法應用到其他領域宗雇。

- T5: Text-To-Text Transfer Transformer

Google把T5簡單的說就是將所有 NLP 任務都轉(zhuǎn)化成Text-to-Text(文本到文本)任務昂芜。對于T5這篇論文,很Google的一篇文章啦赔蒲,讓我也很無力泌神,畢竟財大氣粗之外良漱,還有想法,這就是高富帥欢际∧甘校回到論文本身,T5意義不在燒了多少錢损趋,也不在屠了多少榜患久,其中idea創(chuàng)新也不大,它最重要作用是給整個NLP預訓練模型領域提供了一個通用框架舶沿,把所有任務都轉(zhuǎn)化成一種形式

- Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

微軟亞研提出的Swin Transformer的新型視覺Transformer墙杯,它可以用作計算機視覺的通用backbone。在兩個領域之間的差異括荡,例如視覺實體尺度的巨大差異以及與文字中的單詞相比高镐,圖像中像素的高分辨率,帶來了使Transformer從語言適應視覺方面的挑戰(zhàn)畸冲。

image

****超過萬億規(guī)模的稀疏大模型****

- Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts.

Google發(fā)布的多任務MoE嫉髓。多任務學習的目的在于用一個模型來同時學習多個目標和任務,但常用的任務模型的預測質(zhì)量通常對任務之間的關系很敏感(數(shù)據(jù)分布不同邑闲,ESMM 解決的也是這個問題)算行,因此,google 提出多門混合專家算法(Multi-gate Mixture-of-Experts)旨在學習如何從數(shù)據(jù)中權衡任務目標(task-specific objectives)和任務之間(inter-task relationships)的關系苫耸。所有任務之間共享混合專家結(jié)構(MoE)的子模型來適應多任務學習州邢,同時還擁有可訓練的門控網(wǎng)路(Gating Network)以優(yōu)化每一個任務。

- Switch transformers: Scaling to trillion parameter models with simple and efficient sparsity.

Google重磅推出首個萬億參數(shù)的超大規(guī)模稀疏語言模型Switch Transformer褪子。 聲稱他們能夠訓練包含超過一萬億個參數(shù)的語言模型的技術量淌。直接將參數(shù)量從GPT-3的1750億拉高到1.6萬億,其速度是Google以前開發(fā)的語言模型T5-XXL的4倍嫌褪。

image

內(nèi)存和計算優(yōu)化

最后就是優(yōu)化方面的呀枢,其中主要是并行優(yōu)化器、模型壓縮量化笼痛、內(nèi)存復用優(yōu)化裙秋、混合精度訓練等方面的優(yōu)化,下面各列了幾個最經(jīng)典的文章缨伊。

- Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour

一篇17年關于優(yōu)化器的老文章摘刑,文章的一個重要的結(jié)論很簡單,就是一個線性縮放原則倘核,但里面分析的不錯泣侮,講到了深度學習中很多基本知識的一個理解。本文從實驗的角度進行細致的分析紧唱。雖然文章分析的是如何在更大的batch上進行訓練活尊,但同樣的道理本文也可以用在像我一樣的貧民黨隶校,當我們沒有足夠的GPU或者顯存不足的時候到底該怎么調(diào)節(jié)一些參數(shù)。

內(nèi)存優(yōu)化相關論文:

- Training Deep Nets with Sublinear Memory Cost.

陳天奇這個名字可能圈內(nèi)人都會比較熟悉了蛹锰,在2016年的時候提出的深胳,主要是對神經(jīng)網(wǎng)絡做內(nèi)存復用。這篇文章提出了一種減少深度神經(jīng)網(wǎng)絡訓練時內(nèi)存消耗的系統(tǒng)性方法铜犬。主要關注于減少存儲中間結(jié)果(特征映射)和梯度的內(nèi)存成本舞终,因為在許多常見深度架構中,與中間特征映射的大小相比癣猾,參數(shù)的大小相對較小敛劝。使用計算圖分析來執(zhí)行自動原地操作和內(nèi)存共享優(yōu)化。更重要的是纷宇,還提出了一種新的以計算交換內(nèi)存的方法夸盟。

- Gist: Efficient data encoding for deep neural network training

Gist是ISCA'18的一篇頂會文章,不算是新文章了像捶,但是引用量在系統(tǒng)文章中算是非常高的上陕,看完之后發(fā)現(xiàn)實驗果然扎實,值得學習拓春。主要思想還是圍繞如何降低神經(jīng)網(wǎng)絡訓練時候的顯存使用量释簿。Gist面向數(shù)據(jù)壓縮,發(fā)掘訓練模式以及各個層數(shù)據(jù)的特征硼莽,對特定數(shù)據(jù)進行不同方案的壓縮庶溶,從而達到節(jié)省空間的目的。

image

- Adafactor: Adaptive learning rates with sublinear memory cost.

AdaFactor懂鸵,一個由Google提出來的新型優(yōu)化器渐尿,AdaFactor具有自適應學習率的特性,但比RMSProp還要省顯存矾瑰,并且還針對性地解決了Adam的一些缺陷。說實話隘擎,AdaFactor針對Adam所做的分析相當經(jīng)典殴穴,值得我們認真琢磨體味,對有興趣研究優(yōu)化問題的讀者來說货葬,更是一個不可多得的分析案例采幌。

- ZeRO: Memory Optimization Towards Training A Trillion Parameter Models Samyam.

微軟提出很經(jīng)典很經(jīng)典的一個算法了,為了這個算法還基于Pytroch開發(fā)了一個分布式并行DeepSpeed框架≌鹜埃現(xiàn)有普遍的數(shù)據(jù)并行模式下的深度學習訓練休傍,每一臺機器都需要消耗固定大小的全量內(nèi)存,這部分內(nèi)存和并不會隨著數(shù)據(jù)的并行而減小蹲姐,因而磨取,數(shù)據(jù)并行模式下機器的內(nèi)存通常會成為訓練的瓶頸人柿。這篇論文開發(fā)了一個Zero Redundancy Optimizer (ZeRO),主要用于解決數(shù)據(jù)并行狀態(tài)下內(nèi)存不足的問題忙厌,使得模型的內(nèi)存可以平均分配到每個gpu上凫岖,每個gpu上的內(nèi)存消耗與數(shù)據(jù)并行度成反比,而又基本不影響通信效率逢净。

image

- Mixed precision training.

混合精度的文章哥放,參考ZOMI醬寫得全網(wǎng)最全-混合精度訓練原理啦,里面的內(nèi)容都在文章中爹土。

image

底層系統(tǒng)架構相關

- Parameter Server for Distributed Machine Learning

亞馬遜首席科學家李沐在讀書時期發(fā)表的文章甥雕。工業(yè)界需要訓練大型的機器學習模型,一些廣泛使用的特定的模型在規(guī)模上的兩個特點:1. 深度學習模型參數(shù)很大胀茵,超過單個機器的容納能力有限社露;2. 訓練數(shù)據(jù)巨大,需要分布式并行提速宰掉。這種需求下呵哨,當前類似Map Reduce的框架并不能很好適合。于是李沐大神在OSDI和NIPS上都發(fā)過文章轨奄,其中OSDI版本偏向于系統(tǒng)設計孟害,而NIPS版本偏向于算法層面。關于深度學習分布式訓練架構來說是一個奠基性的文章挪拟。

- More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server.

- GeePS: Scalable deep learning on distributed GPUs with a GPU-specialized parameter server

分布式深度學習可以采用BSP和SSP兩種模式挨务。1為SSP通過允許faster worker使用staled參數(shù),從而達到平衡計算和網(wǎng)絡通信開銷時間的效果玉组。SSP每次迭代收斂變慢谎柄,但是每次迭代時間更短,在CPU集群上惯雳,SSP總體收斂速度比BSP更快朝巫,但是在GPU集群上訓練,2為BSP總體收斂速度比SSP反而快很多石景。

- Bandwidth Optimal All-reduce Algorithms for Clusters of Workstations

- Bringing HPC Techniques toDeep Learning

百度在17年的時候聯(lián)合NVIDIA劈猿,提出了ring-all-reduce通訊方式,現(xiàn)在已經(jīng)成為了業(yè)界通訊標準方式或者是大模型通訊的方式潮孽。過去幾年中揪荣,神經(jīng)網(wǎng)絡規(guī)模不斷擴大,而訓練可能需要大量的數(shù)據(jù)和計算資源往史。 為了提供所需的計算能力仗颈,我們使用高性能計算(HPC)常用的技術將模型縮放到數(shù)十個GPU,但在深度學習中卻沒有充分使用椎例。 這種ring allreduce技術減少了在不同GPU之間進行通信所花費的時間挨决,從而使他們可以將更多的時間花費在進行有用的計算上请祖。 在百度的硅谷AI實驗室(SVAIL)中,我們成功地使用了這些技術來訓練最先進的語音識別模型凰棉。 我們很高興將Ring Allreduce的實現(xiàn)發(fā)布為TensorFlow的庫和補丁程序损拢,并希望通過發(fā)布這些庫,我們可以使深度學習社區(qū)更有效地擴展其模型撒犀。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末福压,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子或舞,更是在濱河造成了極大的恐慌荆姆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件映凳,死亡現(xiàn)場離奇詭異胆筒,居然都是意外死亡,警方通過查閱死者的電腦和手機诈豌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門仆救,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矫渔,你說我怎么就攤上這事彤蔽。” “怎么了庙洼?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵顿痪,是天一觀的道長。 經(jīng)常有香客問我油够,道長蚁袭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任石咬,我火速辦了婚禮揩悄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鬼悠。我一直安慰自己虏束,他們只是感情好,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布厦章。 她就那樣靜靜地躺著,像睡著了一般照藻。 火紅的嫁衣襯著肌膚如雪袜啃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天幸缕,我揣著相機與錄音群发,去河邊找鬼晰韵。 笑死,一個胖子當著我的面吹牛熟妓,可吹牛的內(nèi)容都是我干的雪猪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼起愈,長吁一口氣:“原來是場噩夢啊……” “哼只恨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抬虽,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤官觅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后阐污,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體休涤,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年笛辟,在試婚紗的時候發(fā)現(xiàn)自己被綠了功氨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡手幢,死狀恐怖捷凄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弯菊,我是刑警寧澤纵势,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站管钳,受9級特大地震影響钦铁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜才漆,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一牛曹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧醇滥,春花似錦黎比、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至不跟,卻和暖如春颓帝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工购城, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吕座,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓瘪板,卻偏偏與公主長得像吴趴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子侮攀,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容