OpenAI 研究員最新博客:如何在多GPU上訓(xùn)練真正的大模型?

極市導(dǎo)讀
?本文回顧了幾種流行的并行訓(xùn)練范例,以及各種模型結(jié)構(gòu)和內(nèi)存節(jié)省設(shè)計(jì),使跨大量GPU訓(xùn)練大型神經(jīng)網(wǎng)絡(luò)成為可能。?>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺(jué)的最前沿
近年來(lái),在大規(guī)模預(yù)訓(xùn)練語(yǔ)言模型的幫助下,許多NLP模型在基準(zhǔn)測(cè)試任務(wù)中取得了更好的結(jié)果。如何訓(xùn)練大而深的神經(jīng)網(wǎng)絡(luò)是一個(gè)挑戰(zhàn),需要大量的GPU內(nèi)存和很長(zhǎng)的訓(xùn)練時(shí)間。
然而,單個(gè)GPU卡的內(nèi)存有限,許多大模型的大小已經(jīng)超過(guò)了單個(gè)GPU,目前,為解決此類問(wèn)題,訓(xùn)練深且大的神經(jīng)網(wǎng)絡(luò)的主要方法有訓(xùn)練并行加速、各種模型架構(gòu)以及內(nèi)存節(jié)省設(shè)計(jì)等。常見的并行加速方法有以下幾種:數(shù)據(jù)并行性、模型并行性、流水線并行以及張量平行。模型架構(gòu)方面主要有專家混合(MoE)方法。此外,還有其他節(jié)省內(nèi)存的設(shè)計(jì)方法,如:CPU卸載、激活重新計(jì)算、混合精度訓(xùn)練、壓縮以及內(nèi)存高效優(yōu)化器等等。
本文編譯自O(shè)penAI科學(xué)家Lilian Weng(翁荔)最新博客文章(lilianweng.github.io/lil-log/2021/09/24/train-large-neural-networks.html),智源社區(qū)已經(jīng)獲得翻譯授權(quán)
01 訓(xùn)練并行性
訓(xùn)練大模型的主要瓶頸是對(duì)大量GPU內(nèi)存的強(qiáng)烈需求,遠(yuǎn)遠(yuǎn)高于單個(gè)GPU上的內(nèi)存。大模型在訓(xùn)練過(guò)程中,GPU內(nèi)存主要用在模型權(quán)重參數(shù)存儲(chǔ)(例如數(shù)百億個(gè)浮點(diǎn)數(shù)),中間計(jì)算輸出存儲(chǔ)(例如梯度和優(yōu)化器狀態(tài),例如Adam中的動(dòng)量和變化),這使得GPU成本十分昂貴。除此之外,訓(xùn)練一個(gè)大模型通常時(shí)通常需要與一個(gè)大型訓(xùn)練語(yǔ)料庫(kù)配對(duì),因此單個(gè)過(guò)程可能需要很長(zhǎng)時(shí)間。
因此,并行性是必要的,同時(shí),并行可以使用在不同的維度上,包括數(shù)據(jù)、模型架構(gòu)和張量操作等。
數(shù)據(jù)并行性
數(shù)據(jù)并行性(Data parallelism (DP))最簡(jiǎn)單的方法是將相同的模型權(quán)重復(fù)制到多個(gè)worker中,并將一部分?jǐn)?shù)據(jù)分配給每個(gè)worker以同時(shí)進(jìn)行處理。
如果模型規(guī)模大于單個(gè)GPU的內(nèi)存,Naive DP無(wú)法正常工作時(shí)。GeePS(Cui 等人,2016 年)之類的方法將暫時(shí)未使用的參數(shù)卸載回 CPU,以使用有限的 GPU 內(nèi)存。數(shù)據(jù)交換傳輸在后端進(jìn)行,且不干擾訓(xùn)練計(jì)算。
在每個(gè)小批量結(jié)束時(shí),workers需要同步梯度或權(quán)重,以替換舊參數(shù)。常見有兩種主要的同步方法,它們都有明確的優(yōu)缺點(diǎn):
1)大容量同步并行( Bulk synchronous parallels (BSP)): workers在每個(gè)小批量結(jié)束時(shí)同步數(shù)據(jù)。這種方法可以防止模型權(quán)重過(guò)時(shí),同時(shí)獲得良好的學(xué)習(xí)效率,但每臺(tái)機(jī)器都必須停止并等待其他機(jī)器發(fā)送梯度。
2)異步并行(Asynchronous parallel (ASP)): 每個(gè)GPU工作進(jìn)程異步處理數(shù)據(jù),無(wú)需等待或暫停。然而,這種方法很容易導(dǎo)致網(wǎng)絡(luò)使用陳舊的權(quán)重參數(shù),從而降低統(tǒng)計(jì)學(xué)習(xí)效率。即使它增加了計(jì)算時(shí)間,也可能不會(huì)加快收斂的訓(xùn)練時(shí)間。
中間的某個(gè)地方是在每次x迭代時(shí),全局同步梯度(x>1)。自Pytorch v1.5版(Li等人,2021年)以來(lái),該特征在平行分布數(shù)據(jù)(DDP)中被稱為“梯度累積”。Bucket 梯度計(jì)算方法避免了梯度的立即AllReduce,而是將多個(gè)梯度變化值存儲(chǔ)到一個(gè)AllReduce中以提高吞吐量,可以基于計(jì)算圖進(jìn)行計(jì)算和通信調(diào)度優(yōu)化。

模型并行性
模型并行性(Model parallelism: MP)目的是解決模型權(quán)重不能適應(yīng)單個(gè)節(jié)點(diǎn)的情況,通過(guò)將計(jì)算和模型參數(shù)分布在多臺(tái)機(jī)器上進(jìn)行訓(xùn)練。在數(shù)據(jù)并行中,每個(gè)worker承載整個(gè)模型的完整副本,而在MP中,每個(gè)worker上只分配模型參數(shù)的一小部分,從而減少了內(nèi)存使用和計(jì)算。
由于深度神經(jīng)網(wǎng)絡(luò)通常包含一堆垂直層,因此將一個(gè)大型模型逐層拆分感覺(jué)很簡(jiǎn)單,其中一組連續(xù)的小層被分組到一個(gè)工作層上的一個(gè)分區(qū)中。然而,通過(guò)多個(gè)具有順序依賴性的工作線程來(lái)運(yùn)行每個(gè)數(shù)據(jù)批,會(huì)導(dǎo)致大量的等待時(shí)間和計(jì)算資源利用率低下的問(wèn)題。

流水線并行
通道并行(Pipeline parallelism: PP)將模型并行與數(shù)據(jù)并行相結(jié)合,以減少部分訓(xùn)練過(guò)程中出現(xiàn)的空閑時(shí)間。其主要思想是將一個(gè)小批量拆分為多個(gè)微批次,并使worker在每個(gè)階段中能夠同時(shí)處理一個(gè)微批次。需要注意的是,每個(gè)微批次需要兩次傳遞,一次向前,一次向后。worker之間的通信僅傳輸激活(向前)和梯度(向后)。這些通道的調(diào)度方式以及梯度的聚合方式在不同的方法中有所不同。分區(qū)(workers)的數(shù)量也稱為通道深度。
在GPipe(Huang et al.2019)中,來(lái)自多個(gè)微批次的梯度在最后聚合并同步應(yīng)用。同步梯度下降的操作,與workers數(shù)量無(wú)關(guān),可以保證學(xué)習(xí)的一致性和效率。如圖3所示,“間隔時(shí)間”的情況仍然存在,但比圖2中的少得多。設(shè)定m為平均分割微批次和d為分區(qū),假設(shè)每個(gè)微批次的向前和向后都需要一個(gè)單位的時(shí)間,“間隔時(shí)間”的分?jǐn)?shù)為:
GPipe論文觀察到,如果微組的數(shù)量超過(guò)分區(qū)數(shù)量的4倍(m>4d)(當(dāng)應(yīng)用激活重新計(jì)算時(shí)),則“間隔時(shí)間”幾乎可以忽略不計(jì)。

GPipe在吞吐量方面實(shí)現(xiàn)了幾乎與設(shè)備數(shù)量成線性關(guān)系的加速,但是,當(dāng)模型參數(shù)不能均勻地分布在workers中時(shí),GPipe的方法可能會(huì)失效。
PipeDream(Narayanan等人,2019)用每個(gè)worker交替處理向前和向后傳遞(1F1B)。
PipeDream將每個(gè)模型分區(qū)命名為“階段”,在這個(gè)過(guò)程中,PipeDream使用確定性循環(huán)負(fù)載平衡策略在多個(gè)階段副本之間分配工作,以確保同一個(gè)小批量的前向和后向傳遞發(fā)生在同一個(gè)副本上。

由于PipeDream沒(méi)有在所有workers之間進(jìn)行批處理結(jié)束后執(zhí)行全局梯度同步操作1F1B 的原生實(shí)現(xiàn)很容易導(dǎo)致一個(gè) microbatch 使用不同版本的模型權(quán)重進(jìn)行前向和后向傳遞,從而降低學(xué)習(xí)效率。
PipeDream提出了一些解決此問(wèn)題的設(shè)計(jì):
1)權(quán)重存儲(chǔ):每個(gè)worker跟蹤多個(gè)模型版本,并確保在給定一個(gè)數(shù)據(jù)批次的前向和后向傳遞中使用相同版本的權(quán)重。
2)垂直同步(可選):模型權(quán)重的版本與激活和梯度一起在不同階段的workers之間流動(dòng)。然后計(jì)算采用從前一個(gè)worker傳播的相應(yīng)隱藏版本。此過(guò)程可保持workers之間的版本一致性。需要注意的是,這種方法是異步的,與 GPipe 不同。
在訓(xùn)練運(yùn)行開始時(shí),PipeDream首先分析模型中每個(gè)層的計(jì)算內(nèi)存成本和時(shí)間,然后,優(yōu)化將層劃分為階段的解決方案,這是一個(gè)動(dòng)態(tài)規(guī)劃問(wèn)題。

Narayanan等人提出了PipeDream的兩種變體,通過(guò)隱藏模型版本來(lái)減少內(nèi)存占用(Narayanan等人,2021年)。
PipeDream-flush添加一個(gè)全局同步的通道更新操作,就像GPipe一樣。這種方法雖然會(huì)造成吞吐量的能力部分下降,但是大大減少了內(nèi)存占用(即只維護(hù)一個(gè)版本的模型權(quán)重)。

PipeDream-2BW僅維護(hù)兩個(gè)版本的模型權(quán)重,其中“2BW”是“雙緩沖權(quán)重”的縮寫。它每k個(gè)微批次生成一個(gè)新的模型版本,并且k應(yīng)大于通道深度(d,k>d)。由于一些剩余的向后傳遞仍然依賴于舊版本,新更新的模型版本無(wú)法立即完全替換舊版本,所以整個(gè)過(guò)程中總共只需要保存兩個(gè)版本,因此內(nèi)存成本大大降低。

張量平行
模型并行和流水線并行都將一個(gè)模型垂直分割,可以將一個(gè)張量操作的計(jì)算水平分割到多個(gè)設(shè)備上,稱為張量并行(tensor parallelism,TP)。
以當(dāng)下比較流行的transformer為例,transformer模型主要由多層MLP和自我注意塊組成。Megatron-LM(Shoeybi et al.2020)等人采用了一種簡(jiǎn)單的方法來(lái)并行多層計(jì)算MLP和自我注意。變壓器中的MLP層包含GEMM(通用矩陣乘法)和非線性GeLU傳輸,按列拆分權(quán)重矩陣A:
Split
注意塊根據(jù)上述分區(qū)并行運(yùn)行帶有查詢(Q)、鍵(K)和值權(quán)重(V)的GEMM,然后將它們與另一個(gè)GEMM組合以生成注意頭結(jié)果。

Narayanan等人(2021年)將通道、張量和數(shù)據(jù)并行性與一種新的通道調(diào)度策略相結(jié)合,并將其方法命名為PTD-P。不僅可以在設(shè)備上定位一組連續(xù)的層(“模型塊”),還可以為每個(gè)worker分配多個(gè)較小的連續(xù)層子集塊(例如,設(shè)備1有第1、2、9、10層;設(shè)備2有第3、4、11、12層;每個(gè)層有兩個(gè)模型塊)。一個(gè)批次中的微批次數(shù)量應(yīng)精確除以worker數(shù)量(m),如果每個(gè)worker有v個(gè)模型塊,與GPipe調(diào)度相比,通道間隔時(shí)間可以減少v倍。

02 專家混合(MoE)
專家混合(MoE)方法最近吸引了很多關(guān)注,因?yàn)檠芯咳藛T(主要來(lái)自谷歌)試圖突破模型大小的限制。該想法的核心是整合學(xué)習(xí):多個(gè)弱學(xué)習(xí)模型組合以后會(huì)形成能力出眾的學(xué)習(xí)模型。
Shazeer 等人于2017年發(fā)表了名為“稀疏門控專家混合”(MoE)層的文章,提出了在一個(gè)深度神經(jīng)網(wǎng)絡(luò)中可以通過(guò)連接多個(gè)專家的門控機(jī)制來(lái)實(shí)現(xiàn)輸出控制的方法。門控機(jī)制可以控制網(wǎng)絡(luò)中需要激活的子集(例如哪些專家)以產(chǎn)生輸出。一個(gè)MoE層中包含:
1)n作為專家的前饋網(wǎng)絡(luò)
2)A是一個(gè)可訓(xùn)練的門控網(wǎng)絡(luò)G,用于學(xué)習(xí)n個(gè)專家的概率分布,以便將流量路由到幾個(gè)選定的專家。
根據(jù)門控輸出,不是每一個(gè)專家都必須被評(píng)估,當(dāng)專家的數(shù)量太大,可以考慮使用兩個(gè)層次的MoE。

G的一種計(jì)算方法可以是將輸入與可訓(xùn)練權(quán)重矩陣 相乘, 然后進(jìn)行 操作。然而,這會(huì)產(chǎn)生一個(gè)用于門控的密集控制向量并且會(huì)浪費(fèi)部分計(jì)算資源, 因?yàn)榫W(wǎng)絡(luò)不需要僅在 時(shí)評(píng)估專家。因此,MoE層僅保留topk值, 它還將可調(diào)高斯噪聲添加到G中以改善負(fù) 載平衡, 這種機(jī)制稱為嘈雜top-k門控機(jī)制。
其中, 表示向量 的第i維。函數(shù) 通過(guò)將其他維設(shè)置為來(lái)選擇 具有最高值的頂層k維。
為了避免門控網(wǎng)絡(luò)可能始終有利于少數(shù)強(qiáng)勢(shì)專家的自增強(qiáng)效應(yīng),Shazeer等人(2017)提出了一種通過(guò)額外重要性損失的軟約束,以鼓勵(lì)所有專家具有相同的權(quán)重。它相當(dāng)于每個(gè)專家的分批平均值變異系數(shù)的平方:
其中CV 是變異系數(shù),而損失權(quán)重是要調(diào)整的超參數(shù)。
由于每個(gè)專家網(wǎng)絡(luò)只獲得一小部分訓(xùn)練樣本(“收縮批量問(wèn)題”),在MoE中應(yīng)盡量使用大批量數(shù)據(jù)。但是,它受到GPU內(nèi)存的限制,可以應(yīng)用數(shù)據(jù)并行和模型并行來(lái)提高吞吐量。

GShard(Lepikhin等人,2020年)通過(guò)分片將MoE transformer模型的參數(shù)擴(kuò)展至6000億。MoE transformer用MoE層替換其他每一個(gè)前饋層。分片MoE transformer僅將MoE層分片到多臺(tái)機(jī)器上,而其他層只是復(fù)制。
GShard中的門控功能G有幾種改進(jìn)設(shè)計(jì):
1)專家能力: 通過(guò)一位專家的代幣數(shù)量不應(yīng)超過(guò)稱為“專家能力(expert capacity)”的閾值。如果令牌被路由到已達(dá)到其容量的專家,令牌將被標(biāo)記為“溢出”并且門控輸出更改為零向量。
2)本地組調(diào)度: 令牌被均勻地劃分到多個(gè)本地組中,并在組級(jí)別上強(qiáng)制執(zhí)行專家能力。
3)Auxiliary loss: 動(dòng)機(jī)類似于原來(lái)的 MoE aux loss,添加了一個(gè)輔助損失來(lái)最小化路由到每個(gè)專家的數(shù)據(jù)部分的均方。
4)隨機(jī)路由: 以與其權(quán)重成正比的概率選擇第二好的專家;否則,GShard 遵循隨機(jī)路由,以增加一些隨機(jī)性。

Switch Transformer(Fedus et al.2021)通過(guò)將密集前饋層替換為稀疏交換FFN層(其中每個(gè)輸入僅路由到一個(gè)專家網(wǎng)絡(luò)),將模型規(guī)模擴(kuò)展到數(shù)萬(wàn)億個(gè)參數(shù)。負(fù)載平衡的輔助損失是給定的n專家,其中是路由到第i個(gè)專家的令牌的分?jǐn)?shù),是門控網(wǎng)絡(luò)預(yù)測(cè)的專家i的路由概率。

為提高訓(xùn)練穩(wěn)定性,Switch Transformer采用以下設(shè)計(jì):
1)可選擇的精度。 選擇性地僅將模型的局部部分投射到 FP32 精度可以提高穩(wěn)定性,同時(shí)避免 FP32 張量昂貴的通信成本。FP32 精度僅在路由器函數(shù)的主體內(nèi)使用,結(jié)果將重組為 FP16。
2)較小的初始化。 權(quán)重矩陣的初始化是從均值 和標(biāo)準(zhǔn)偏差 的截?cái)嗾龖B(tài)分布中采樣。同時(shí),將Transformer初始化比例參數(shù) s=1 減少到 s=0.1。
3)使用更高的專家剔除機(jī)制。 微調(diào)通常適用于小數(shù)據(jù)集, 為避免過(guò)度擬合,每個(gè)專家的剔除率都會(huì)顯著增加。作者發(fā)現(xiàn)所有層的 dropout 增加會(huì)導(dǎo)致性能不佳,在論文中,作者在非專家層使用了 0.1 的剔除率,但在專家 FF 層中使用了 0.4。
switch transformer論文總結(jié)了用于訓(xùn)練大型模型的不同數(shù)據(jù)和模型并行策略,并給出了一個(gè)很好的示例:

03 其他節(jié)省內(nèi)存的設(shè)計(jì)
CPU卸載
當(dāng)GPU內(nèi)存已滿時(shí),一種選擇是將暫時(shí)未使用的數(shù)據(jù)卸載到CPU,并在以后需要時(shí)將其讀回(Rhu等人,2016)。數(shù)據(jù)卸載到CPU 的想法很簡(jiǎn)單,但由于它會(huì)延長(zhǎng)訓(xùn)練時(shí)間,所以近年來(lái)不太流行。
激活重新計(jì)算
激 活 重 新 計(jì) 算 ( Activation recomputation (also known as "activation checkpointing" or "gradient checkpointing", Chen 等 人,2016 年 (https://arvix.org/abs/1604.06174)) 是一個(gè)以計(jì)算時(shí)間為代價(jià)減少內(nèi)存占用的聰明而 簡(jiǎn)單的想法。它將訓(xùn)練層深度神經(jīng)網(wǎng)絡(luò)的內(nèi)存成本降低到 ,每批僅額外消耗額外的前向傳遞計(jì)算。例如,將一個(gè)層網(wǎng)絡(luò)平均分為d分區(qū)。只保存分區(qū)邊界處的激活, 并在 workers之間進(jìn)行通信, 計(jì)算梯度仍然需要分區(qū)內(nèi)層的中間激活, 因此在向后傳遞過(guò)程中重新計(jì)算梯度,使用激活重新計(jì)算。訓(xùn)練 的內(nèi)存成本為:
最低成本為 處的 。激活重編譯技巧可以給出與模型大小有關(guān)的次線性內(nèi)存成本。

混合精度訓(xùn)練
Narang&Micikevicius等人(2018年)介紹了一種使用半精度浮點(diǎn)(FP16)數(shù)字訓(xùn)練模型而不損失模型精度的方法。

三種避免以半精度丟失關(guān)鍵信息的技術(shù):
1)全精度原始權(quán)重。維護(hù)累積梯度的模型權(quán)重的全精度 (FP32) 副本, 對(duì)于向前和向后傳遞,數(shù)字四舍五入到半精度。主要是為了防止每個(gè)梯度更新(即梯度乘以學(xué)習(xí)率)可能太小而無(wú)法完全包含在 FP16 范圍內(nèi)(即 2-24 在 FP16 中變?yōu)榱悖┑那闆r。
2)損失縮放。擴(kuò)大損失以更好地處理小幅度的梯度(見圖 16), 放大梯度有助于將權(quán)重移動(dòng)到可表示范圍的右側(cè)部分(包含較大值)占據(jù)更大的部分,從而保留否則會(huì)丟失的值。
3)算術(shù)精度。對(duì)于常見的網(wǎng)絡(luò)算法(例如向量點(diǎn)積,向量元素相加減少),可以將部分結(jié)果累加到 FP32 中,然后將最終輸出保存為 FP16,然后再保存到內(nèi)存中??梢栽?FP16 或 FP32 中執(zhí)行逐點(diǎn)操作。

在上述文章的實(shí)驗(yàn)中,某些網(wǎng)絡(luò)(例如圖像分類、Faster R-CNN)不需要損失縮放,但其他網(wǎng)絡(luò)(例如 Multibox SSD、大型 LSTM 語(yǔ)言模型)則需要。
壓縮
中間結(jié)果通常會(huì)消耗大量?jī)?nèi)存,盡管它們只在一次向前傳遞和一次向后傳遞中需要。這兩種使用之間存在明顯的時(shí)間差距。因此Jain等人(2018年)提出了一種數(shù)據(jù)編碼策略,將第一次使用后的中間結(jié)果在第一次傳遞中進(jìn)行壓縮,然后將其解碼回來(lái)進(jìn)行反向傳播。
Jain等人的系統(tǒng)Gist中,包含兩種編碼方案:特定于層的無(wú)損編碼;專注于ReLU池(“二進(jìn)制化”)和ReLU Conv(“稀疏存儲(chǔ)和密集計(jì)算”)模式。激進(jìn)的有損編碼;使用延遲精度降低(DPR)。作者觀察到,第一次立即使用特征圖應(yīng)該保持高精度,但第二次使用可以使用較低的精度。
實(shí)驗(yàn)表明,Gist可以在5個(gè)SOTA圖像分類DNN上減少2倍的內(nèi)存成本,平均減少1.8倍,而性能成本僅為4%。
內(nèi)存高效優(yōu)化器
優(yōu)化器內(nèi)存消耗。以流行的 Adam 優(yōu)化器為例,它內(nèi)部需要保持動(dòng)量和方差,兩者都與梯度和模型參數(shù)處于同一規(guī)模,但是需要節(jié)省 4 倍的模型權(quán)重內(nèi)存。
已經(jīng)提出了幾種優(yōu)化器來(lái)減少內(nèi)存占用。例如,Adafactor(Shazeer 等人,2018 年)不是像 Adam 那樣存儲(chǔ)完整的動(dòng)量和變化,而是僅跟蹤移動(dòng)平均線的每行和每列總和,然后根據(jù)這些總和估計(jì)二階矩。SM3 (Anil et al. 2019) 描述了一種不同的自適應(yīng)優(yōu)化方法,也導(dǎo)致內(nèi)存大幅減少。
ZeRO(Zero Redundancy Optimizer;Rajbhandari et al.2019)根據(jù)對(duì)大型模型訓(xùn)練的兩個(gè)主要內(nèi)存消耗的觀察,優(yōu)化用于訓(xùn)練大型模型的內(nèi)存:
1)大多數(shù)由模型狀態(tài)占據(jù),包括優(yōu)化器狀態(tài)(例如,Adam動(dòng)量和方差)、梯度和參數(shù)?;旌暇扔?xùn)練需要大量?jī)?nèi)存,因?yàn)閮?yōu)化器需要保留FP32參數(shù)和其他優(yōu)化器狀態(tài)的副本,F(xiàn)P16版本除外。
2)剩余的被激活、臨時(shí)緩沖區(qū)和不可用的碎片內(nèi)存(論文中稱為剩余狀態(tài))消耗。
ZeRO 結(jié)合了兩種方法,ZeRO-DP 和 ZeRO-R。ZeRO-DP 是一種增強(qiáng)的數(shù)據(jù)并行性,可避免模型狀態(tài)上的簡(jiǎn)單冗余。它通過(guò)動(dòng)態(tài)通信調(diào)度跨多個(gè)數(shù)據(jù)并行進(jìn)程劃分優(yōu)化器狀態(tài)、梯度和參數(shù),以最小化通信量。ZeRO-R 使用分區(qū)激活重新計(jì)算、恒定緩沖區(qū)大小和即時(shí)內(nèi)存碎片整理來(lái)優(yōu)化剩余狀態(tài)的內(nèi)存消耗。
引用為:
@article{weng2021large,??
??title?=?"How?to?Train?Really?Large?Models?on?Many?GPUs?",?
??author?=?"Weng,?Lilian",??
??journal?=?"lilianweng.github.io/lil-log",??
??year?=?"2021",??
??url?=?"https://lilianweng.github.io/lil-log/2021/09/24/train-large-neural-networks.html"}
參考文獻(xiàn):
本文亮點(diǎn)總結(jié)
1)全精度原始權(quán)重。2)損失縮放。3)算術(shù)精度。
如果覺(jué)得有用,就請(qǐng)分享到朋友圈吧!
公眾號(hào)后臺(tái)回復(fù)“CVPR21檢測(cè)”獲取CVPR2021目標(biāo)檢測(cè)論文下載~

#?CV技術(shù)社群邀請(qǐng)函?#

備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳)
即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群
每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與?10000+來(lái)自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺(jué)開發(fā)者互動(dòng)交流~

