【LLM】對大語言模型微調(diào)優(yōu)化的研究
一、結(jié)論寫在前面
論文來自Microsoft。
微調(diào)大語言模型是用戶嘗試將其適應(yīng)特定應(yīng)用的流行選擇。然而,微調(diào)這些模型是一項艱巨的任務(wù),因為用戶必須考慮多種因素,如資源預(yù)算、運行時間、模型大小和上下文長度等。一個具體挑戰(zhàn)是微調(diào)過程對內(nèi)存的需求很大,這限制了所需的硬件內(nèi)存和能夠處理的訓(xùn)練數(shù)據(jù)上下文長度。
論文分享了針對不同微調(diào)場景的各種微調(diào)優(yōu)化的詳細研究。特別是,論文評估了梯度檢查點(Gradient Checkpointing)、低秩適應(yīng)(Low Rank Adaptation)、DeepSpeed的ZeRO冗余優(yōu)化器(ZeRO Redundancy Optimizer)和Flash Attention。
- 論文專注于內(nèi)存和運行時間,研究了不同優(yōu)化組合在微調(diào)階段對GPU內(nèi)存使用和執(zhí)行運行時的影響。
- 論文提供了針對不同模型大小平衡內(nèi)存和運行時的最佳默認優(yōu)化建議。論文分享了有效策略,用于微調(diào)擁有數(shù)十億或數(shù)百億參數(shù)的非常大型模型,并在微調(diào)過程中實現(xiàn)大型上下文長度。
- 此外,論文提出了在GPU資源限制下進行微調(diào)的適當優(yōu)化組合。
論文的結(jié)果表明:
- ZeRO-2 + LoRA是一個可靠的優(yōu)化默認選項,通常能提供內(nèi)存使用和微調(diào)運行時之間的最佳平衡。
- 通過使用正確的優(yōu)化組合,如ZeRO-3 + LoRA + GC,論文成功微調(diào)了高達Falcon-180B的模型。
- 鑒于在GPU受限環(huán)境下微調(diào)LLM的需求,論文引入了跨模型大小x上下文長度的優(yōu)化矩陣。該優(yōu)化矩陣可以指導(dǎo)用戶選擇適合特定用例的正確優(yōu)化組合。
- 論文得出結(jié)論,像DeepSpeed ZeRO這樣的優(yōu)化對于微調(diào)數(shù)十億參數(shù)模型至關(guān)重要,因為它們支持數(shù)據(jù)和模型并行,以及CPU卸載。
- 結(jié)合DeepSpeed ZeRO,選擇額外的優(yōu)化以避免內(nèi)存不足失敗同時平衡微調(diào)運行時變得必要。
二、論文的簡單介紹
2.1 論文的背景
遷移學(xué)習(xí)為專化大型語言模型(LLMs)到特定任務(wù)或領(lǐng)域提供了一種非常有效的方法。在微調(diào)過程中,預(yù)訓(xùn)練的LLMs通常在任務(wù)特定的數(shù)據(jù)集上進一步訓(xùn)練,使其知識適應(yīng)特定任務(wù)。盡管這是一種強大的技術(shù),但由于其巨大的內(nèi)存需求,微調(diào)具有數(shù)十億可訓(xùn)練參數(shù)的LLMs仍然具有挑戰(zhàn)性。例如,在全浮點精度(32位)下微調(diào)一個10億參數(shù)模型,每個GPU大約需要24GB的高帶寬內(nèi)存(HBM)。因此,在沒有任何內(nèi)存優(yōu)化的情況下,LLM微調(diào)過程中經(jīng)常會遇到內(nèi)存不足的失敗。
近年來,為優(yōu)化GPU內(nèi)存使用,提出了若干關(guān)鍵技術(shù)。然而,這些技術(shù)對許多用戶來說理解復(fù)雜,且其應(yīng)用往往需要通過實驗來找到避免內(nèi)存溢出錯誤的正確組合。這不僅需要人力資源(用于研究和實施這些優(yōu)化),還需要計算資源(大量的GPU小時)來為特定任務(wù)選擇合適的優(yōu)化策略。
為了簡化用戶的微調(diào)過程,諸如Azure Machine Learning等平臺提供了先進的GPU內(nèi)存優(yōu)化技術(shù),使得即使使用少量GPU也能進行大型語言模型(LLM)的微調(diào)。
論文詳細介紹了流行的LLM微調(diào)優(yōu)化技術(shù),深入探討了內(nèi)存與運行時間的權(quán)衡,提供了選擇最佳優(yōu)化配置的指導(dǎo),并分享了論文的實驗結(jié)果,這些結(jié)果可用于校準優(yōu)化默認設(shè)置。
2.2 優(yōu)化技術(shù)概述
論文簡要概述了四種優(yōu)化技術(shù),這些技術(shù)可用于減少微調(diào)過程中的內(nèi)存瓶頸。所有這些優(yōu)化技術(shù)都可以被用戶在其微調(diào)任務(wù)中,如Azure Machine學(xué)習(xí)和Hugging Face等平臺上使用。
2.2.1 Gradient Checkpointing
梯度檢查點(GC)(Chen et al., 2016)通過不在深度神經(jīng)網(wǎng)絡(luò)(DNN)前向傳播(FP)過程中保留所有計算出的激活來審慎地利用GPU內(nèi)存。相反,它在反向傳播過程中重新計算許多激活,這有助于節(jié)省GPU內(nèi)存。最節(jié)省內(nèi)存的策略是在每n步保存檢查點,其中n是DNN的層數(shù)(深度)。這種策略確保計算時間仍與DNN的深度成線性關(guān)系,同時將GPU內(nèi)存需求從線性減少到DNN深度的平方根。因此,梯度檢查點使得能夠微調(diào)比僅增加20%-30%微調(diào)時間更大的LLMs。
2.2.2 LoRA
低秩適應(yīng)(LoRA)通過減少可訓(xùn)練參數(shù)的數(shù)量,從而降低微調(diào)過程中對GPU內(nèi)存的需求。它通過凍結(jié)預(yù)訓(xùn)練模型的權(quán)重,并在Transformer架構(gòu)的每個選定層中注入可訓(xùn)練的秩分解矩陣來實現(xiàn)這一目標。可訓(xùn)練參數(shù)的數(shù)量減少了幾個數(shù)量級,降低了微調(diào)的成本,同時保持了結(jié)果的質(zhì)量。例如,使用LoRA進行微調(diào),將秩設(shè)置為64,一個700億參數(shù)模型的可訓(xùn)練參數(shù)數(shù)量減少到約1.31億參數(shù)(-0.19%的原始模型大小)。
2.2.3 DeepSpeed
DeepSpeed的ZeRO冗余優(yōu)化器(ZeRO)是一種內(nèi)存優(yōu)化技術(shù),它提供了模型和數(shù)據(jù)并行性的好處,同時緩解了兩者的局限性。ZeRO驅(qū)動的數(shù)據(jù)并行性(Zero-DP)將模型狀態(tài)——參數(shù)、梯度和優(yōu)化器狀態(tài)——跨數(shù)據(jù)并行進程進行分區(qū),并使用動態(tài)通信調(diào)度在進程之間共享必要的模型狀態(tài)。
ZeRO-DP提供了三個優(yōu)化階段,這些階段相繼提供越來越大的內(nèi)存減少,同時產(chǎn)生一些運行時開銷。基于ZeRO-DP的微調(diào)可以分別實現(xiàn)第1階段和第2階段的4到8倍的內(nèi)存減少,而對于第3階段(假設(shè)有大量GPU)則可以達到線性內(nèi)存減少。這確實是以運行時為代價的,尤其是對于ZeRO-DP第3階段。
ZeRO優(yōu)化通過包含ZeRO-Offload和ZeRO-Infinity(得到進一步增強,它們分別將優(yōu)化器狀態(tài)和模型參數(shù)卸載到CPU。雖然ZeRO-Offload在所有三個ZeRO-DP階段都可用,但ZeRO-infinity僅適用于第3階段。如果不使用DeepSpeed ZeRO這樣的優(yōu)化,許多大型模型(數(shù)十億參數(shù))實際上不可能僅使用少數(shù)幾個V100或A100 GPU進行訓(xùn)練。
2.2.4 快速注意力(Flash Attention)
快速注意力幫助實現(xiàn)注意力計算的復(fù)雜度從與序列/上下文長度相關(guān)的二次復(fù)雜度降為線性復(fù)雜度。它利用分塊和重計算技術(shù)顯著加速注意力計算。它明智地使用靜態(tài)隨機存取存儲器(SRAM),這是GPU中最昂貴但容量最小的存儲單元,最小化SRAM與高帶寬存儲器(HBM)之間的讀寫操作。在快速注意力版本2中,進一步優(yōu)化了減少較慢的非矩陣乘法操作,并沿著序列長度維度(除了批次和頭數(shù)維度外)并行化前向和后向傳播。
這些優(yōu)化中的一個關(guān)鍵特點是它們彼此正交。因此,它們可以組合起來為用戶帶來漸增的內(nèi)存和運行時效益。
2.3 理論分析GPU內(nèi)存需求
本節(jié)的目標是幫助讀者對影響訓(xùn)練過程中GPU內(nèi)存消耗的計算有一個基本的理解。以下三個變量主要影響訓(xùn)練期間的GPU內(nèi)存:
A. 模型狀態(tài) - 包括模型參數(shù)、梯度和優(yōu)化器狀態(tài)
B. 激活 - 表示中間計算結(jié)果
C. 臨時緩沖區(qū)和碎片
模型狀態(tài)內(nèi)存:論文使用Rajbhandari等人(2020)中的模型狀態(tài)內(nèi)存計算來估計(A)。這里論文簡要討論圖1中所示的模型狀態(tài)內(nèi)存計算。在混合精度訓(xùn)練中使用Adam優(yōu)化器時,可訓(xùn)練參數(shù)、動量和方差以全精度(32位)保持。假設(shè)有0個參數(shù),內(nèi)存總計為(0 + 0 + 0) x 4 = 120字節(jié)。因此,K-12是Adam優(yōu)化器特有的常數(shù)優(yōu)化器狀態(tài):可訓(xùn)練參數(shù) + 動量 + 方差梯度模型參數(shù)

圖1:使用Adam優(yōu)化器在混合精度設(shè)置下微調(diào)0參數(shù)模型時的模型狀態(tài)內(nèi)存。模型狀態(tài)包括優(yōu)化器狀態(tài)、梯度和模型參數(shù)。在未啟用任何優(yōu)化的情況下,總模型狀態(tài)內(nèi)存總計達到160字節(jié)
在內(nèi)存計算中使用的乘數(shù)項。此外,在前向和后向傳播過程中,參數(shù)和梯度以半精度維護,這導(dǎo)致額外的內(nèi)存需求為20 + 20 = 40字節(jié)。ZeRO-DP階段決定了哪些模型狀態(tài)(參數(shù)、梯度、優(yōu)化器狀態(tài))在GPU之間分區(qū),從而節(jié)省內(nèi)存。
激活內(nèi)存:在沒有模型并行性的情況下,每個transformer層的激活內(nèi)存可以使用論文第4節(jié)中的公式1(Korthikanti等人,2022)進行估計。論文依賴相同的計算來確定(B)激活內(nèi)存需求的近似上限。每層的激活內(nèi)存可以表示為:

其中,s是序列長度,b是微批次大小,h是隱藏維度,a是注意力頭的數(shù)量。總激活內(nèi)存計算為transformer層數(shù) × 每層激活內(nèi)存。

表1:ZeRO-DP三個階段理論與實測GPU內(nèi)存分配(以GB為單位)的比較。微調(diào)模型為LLaMA-2-7B,使用8個A100 GPU(每個具有80 GB HBM)。理論估計可用于在運行微調(diào)作業(yè)之前近似實測內(nèi)存需求
表 
展示了論文在比較理論上預(yù)期的和經(jīng)驗上分配給LLaMA-2-7B微調(diào)的GPU內(nèi)存方面的結(jié)果,涉及ZeRO-DP的不
同階段。論文使用ZeRO-1、ZeRO-2和ZeRO-3分別表示ZeRO-DP的第1、2和3階段。理論內(nèi)存是通過匯總模型狀態(tài)和激活的內(nèi)存來計算的。論文使用以下模型默認參數(shù):transformer層數(shù)=32,隱藏維度大小h=4096,注意力頭數(shù)a-32,理論上計算出總激活內(nèi)存為1.48 GB。經(jīng)驗GPU內(nèi)存指的是微調(diào)過程中分配的峰值GPU內(nèi)存。論文展示了有無CPU卸載優(yōu)化器狀態(tài)的經(jīng)驗內(nèi)存。
論文的結(jié)果表明,理論計算可以作為微調(diào)過程中GPU內(nèi)存消耗(無CPU卸載)的粗略估計。在運行微調(diào)任務(wù)之前計算這一估計有助于預(yù)測內(nèi)存需求并有效規(guī)劃資源分配。論文注意到,啟用CPU卸載優(yōu)化器狀態(tài)可以將內(nèi)存使用量減少至不啟用卸載時的四分之一。因此,CPU卸載可以允許對具有數(shù)十億參數(shù)的模型進行微調(diào)時,對GPU和CPU資源進行高效利用,這是一個內(nèi)存密集型過程。
需要注意的是,在沒有ZeRO-DP優(yōu)化的情況下,使用傳統(tǒng)數(shù)據(jù)并行性對70億參數(shù)模型進行完全微調(diào)將需要超過112(16 x 7)GB的GPU內(nèi)存。這樣的內(nèi)存需求遠遠超過了A100s提供的80 GB GPU HBM。
2.4 實驗
論文首先分析微調(diào)優(yōu)化對內(nèi)存和運行時的影響。論文的分析結(jié)果用于推薦一組優(yōu)化,這些優(yōu)化可以作為平衡默認值,以優(yōu)化微調(diào)期間的內(nèi)存和運行時。隨后,論文深入研究大型模型(具有數(shù)十億參數(shù))的微調(diào),并探索使這種微調(diào)成為可能的優(yōu)化。接著,論文檢查Flash Attention 2在LLMs微調(diào)長上下文數(shù)據(jù)中的作用。最后,論文研究在資源受限的GPU(特別是V100s)上進行微調(diào)的具體情況。論文的目標是識別能夠在各種模型大小和上下文長度下,甚至在有限資源下實現(xiàn)高效微調(diào)的優(yōu)化。
2.4.1 設(shè)置
論文在Causal Language Modeling任務(wù)上對LLaMA-2(7B、13B、70B)和Falcon(180B)系列的模型進行微調(diào)。以下是論文的實驗設(shè)置的詳細信息:
- 數(shù)據(jù):所有實驗中使用了Sampled Samsum數(shù)據(jù)集(Gli et al., 2019)進行微調(diào)。
- 計算:使用了標準ND4Ors v2(8xV100)(Azure, 2022)和標準ND96amsr A100 v4(8xA100)(Azure, 2024)作為GPU計算資源。
- 優(yōu)化器:所有實驗使用混合精度設(shè)置和AdamW優(yōu)化器(β1=0.9,β2=0.99),配合線性調(diào)度器和學(xué)習(xí)率4e-4。
- 序列長度、批次大小和周期:序列長度通常設(shè)置為256。在探索序列長度影響的研究中,通過填充擴展輸入序列的長度。所有實驗中使用的有效批次大小為8。注意,可以通過梯度累積來增加有效批次大小,同時實現(xiàn)對可用GPU內(nèi)存的高效利用。所有模型都進行單周期微調(diào)。
- LoRA:在使用LoRA的實驗中,LoRA的rank設(shè)置為64,alpha設(shè)置為32。
- CPU卸載:除非明確指出,論文使用ZeRO-Offload在微調(diào)過程中將優(yōu)化器狀態(tài)和計算卸載到CPU。這有助于使用可用的GPU和CPU的計算及內(nèi)存資源訓(xùn)練數(shù)十億參數(shù)的模型。
在論文的實驗中,GPU內(nèi)存使用量通過微調(diào)過程中所有使用的GPU上分配的峰值GPU內(nèi)存來衡量。
2.4.2 最佳默認優(yōu)化以平衡內(nèi)存和運行時間
論文已經(jīng)確定,對于相對較小的7B參數(shù)模型,即使使用A100,不進行任何優(yōu)化進行微調(diào)也是不可行的。因此,論文使用DeepSpeed ZeRO,它提供了模型和數(shù)據(jù)并行性。論文檢查了在微調(diào)框架中應(yīng)默認啟用的微調(diào)優(yōu)化集合。論文選擇這些優(yōu)化的標準是基于它們在ZeRO-DP結(jié)合下,能夠在內(nèi)存使用和運行時間之間達到最佳平衡的能力。
論文在一個節(jié)點(8x A100 GPU)上對LLaMA-2-7B進行了五種不同配置的微調(diào):(a) 未啟用優(yōu)化 (b) 啟用梯度檢查點 (c) 啟用LoRA (d) 啟用Flash Attention 2 (e) 未啟用CPU卸載。每種配置都啟用了所有三個ZeRO-DP階段。論文選擇A100 GPU進行這些實驗,因為它們具有80 GB的大內(nèi)存容量。這種充足的內(nèi)存使論文能夠通過開啟和關(guān)閉各種優(yōu)化來靈活地進行實驗,同時避免內(nèi)存不足的失敗。

圖2:LLaMA-2 7B在不同優(yōu)化配置下,使用ZeRO-1、ZeRO-2和ZeRO-3時的GPU內(nèi)存使用情況和微調(diào)運行時間。使用ZeRO-2結(jié)合LoRA提供了最佳的內(nèi)存使用與運行時間平衡
圖2展示了每種配置和ZeRO-DP階段下的GPU內(nèi)存使用和運行時間。根據(jù)結(jié)果,論文得出以下結(jié)論:
1.從運行時間和內(nèi)存使用的角度來看,最佳的優(yōu)化組合是配置(c),即ZeRO-DP + LoRA。由于LoRA減少了總的可訓(xùn)練參數(shù),它節(jié)省了內(nèi)存并縮短了運行時間。在Zero-DP + LoRA配置中,ZeRO-1和ZeRO-2階段的內(nèi)存使用及運行時間大致相似。當使用LoRA(rank=64)時,可訓(xùn)練參數(shù)減少到約3360萬個,對于7B模型而言。優(yōu)化器狀態(tài)和可訓(xùn)練參數(shù)的梯度占據(jù)了GPU內(nèi)存的極小部分。在ZeRO-1和ZeRO-2中,內(nèi)存消耗主要由總模型參數(shù)(70億)主導(dǎo),這些參數(shù)在半精度下占用14GB內(nèi)存。
1.配置(a)和(d)在ZeRO-DP階段的表現(xiàn)符合預(yù)期,即從階段1到2到3,內(nèi)存消耗下降,運行時間增加。對于配置(b)和(e),ZeRO-1的運行時間略高于ZeRO-2,內(nèi)存使用遵循隨著Zero-DP階段增加而減少的預(yù)期趨勢。
2.在(e)中禁用CPU卸載提供了最快的運行時間,但需要2-4倍更多的GPU內(nèi)存。
論文得出結(jié)論,ZeRO-2與LoRA的結(jié)合是維持內(nèi)存使用和運行時間平衡的優(yōu)秀默認選擇。此外,ZeRO-2能處理比ZeRO-1更大的模型,這有助于支持更廣泛的模型尺寸范圍。對于某些用例,如復(fù)雜的問答任務(wù)或構(gòu)建聊天機器人,用戶可能更喜歡完全微調(diào)模型。因此,是否使用LoRA由用戶自行決定。因此,論文建議在微調(diào)過程中默認激活ZeRO-2。
2.4.3 大型模型的微調(diào)
微調(diào)大型模型如LLaMA-2 70B或Falcon 180B時,如果沒有啟用正確的優(yōu)化設(shè)置,常常會遇到內(nèi)存不足(OOM)錯誤。在這種情況下,啟用ZeRO-3是一個可行的替代方案,盡管它會增加運行時間。論文來檢查在ZeRO-3中,經(jīng)過
個節(jié)點和每個節(jié)點
個GPU微調(diào)后的模型狀態(tài)內(nèi)存項:

這里,
表示總可訓(xùn)練參數(shù)(以十億計)。假設(shè)一個標準的配置,每個節(jié)點有
個GPU,這將隨著模型尺寸的增加而增加。例如,在
個節(jié)點上完全微調(diào)一個
億參數(shù)的模型,將占用40GB的模型狀態(tài)內(nèi)存,這可以在具有80GB HBM的A100上容納。在實踐中,具有數(shù)百億參數(shù)的大型模型通常與LoRA一起微調(diào),并使用ZeRO-3與CPU卸載。這進一步降低了內(nèi)存需求,使其達到可管理的規(guī)模。
論文能夠在單個節(jié)點上使用8xV100 GPU(32 GB HBM)結(jié)合ZeRO-3 + LoRA對LLaMA-2 70B進行微調(diào)。表
顯示,在論文的實驗中,70B模型的實際GPU內(nèi)存消耗約為15.54 GB。此外,可以看出,對于LLaMA-2 7B和13B這樣的較小模型,使用ZeRO-3 + LoRA會導(dǎo)致GPU內(nèi)存未充分利用。因此,論文的研究表明,對于微調(diào)具有數(shù)十億或數(shù)百億參數(shù)的大型模型,啟用ZeRO-3是必不可少的。此外,當與LoRA結(jié)合使用時,實際的總體內(nèi)存需求顯著減少。

表2:在8xV100 GPU上使用ZeRO-3 + LoRA對LLaMA-2模型進行微調(diào)的GPU內(nèi)存使用量和時間
對于較小模型,ZeRO-3 + LoRA顯然過于冗余,因為它可能導(dǎo)致GPU未充分利用以及運行時間增加。
2.4.4 長上下文微調(diào)

圖3:LLaMA-2 70B在不同上下文長度下,使用和不使用Flash-Attention 2對GPU內(nèi)存使用和微調(diào)時間的影響。在A100上啟用Flash-Attention 2顯著降低了較大上下文長度(如4096)的內(nèi)存消耗和運行時間
上下文長度是微調(diào)LLMs時的關(guān)鍵因素。特別是在使用包含非常長文本序列的數(shù)據(jù)集進行微調(diào)時尤為如此。沒有Flash-Attention 2(FA2),注意力計算隨著序列長度的平方增長而增加。由于V100 GPU不支持FA2,因此在使用較長上下文長度時,對GPU內(nèi)存消耗的影響可能很大。為了研究在微調(diào)過程中長上下文長度的影響,論文繪制了在A100(啟用和未啟用FA2)和V100(未啟用FA2)上不同上下文長度的內(nèi)存和運行時間。
具體來說,論文在8xV100和8xA100 GPU上分別使用1024、2048和4096的上下文長度對LLaMA-2 70B模型進行微調(diào)。在微調(diào)過程中啟用了LoRA和梯度檢查點技術(shù),并基于ZeRO-3進行優(yōu)化。
圖3展示了Flash-Attention 2對GPU內(nèi)存和運行時間的影響。論文的結(jié)果顯示,隨著上下文長度增加,至4096時,使用Flash-Attention 2相比于不使用,GPU內(nèi)存使用和運行時間有顯著減少。如圖3所示,在兩塊A100 GPU上或分別在A100和V100 GPU上比較使用和不使用Flash-Attention 2的運行時,這一趨勢是一致的。
論文的結(jié)論如下:高性能GPU如A100,由于其更大的HBM,可以在沒有Flash-Attention 2的情況下支持相對較長的上下文微調(diào)。然而,在兼容的GPU架構(gòu)上激活Flash-Attention 2是最優(yōu)的,因為它允許額外的內(nèi)存節(jié)省和減少運行時間。當使用允許較大上下文長度微調(diào)的模型訓(xùn)練長文本數(shù)據(jù)時,這一點變得尤為重要。
2.4.5 在GPU資源限制下的微調(diào)

圖4:使用V100 GPU時,不同大小LLMs微調(diào)的最佳配置。所有LLaMA-2實驗均使用8x V100進行,而Falcon-180B需要16xV100。由于V100不支持Flash-Attention 2,因此未包含在內(nèi)
本節(jié)討論在資源有限的情況下對LLMs(參數(shù)范圍從7B到180B)進行微調(diào)。論文將資源限制定義如下:
?可用的低資源GPU具有有限的HBM。
?可用的GPU數(shù)量較少。
論文對LLaMA-2 7B、13B、70B和Falcon-180B模型在五種不同的上下文長度上進行了微調(diào)。遵循資源約束規(guī)范,論文的實驗在一臺標準ND4Ors v2(8xV100 GPU)上進行,配備32 GB HBM。唯一例外的是Falcon-180B模型,由于其龐大的規(guī)模,論文在微調(diào)過程中使用了兩個節(jié)點(16x V100 GPU)。圖4展示了為滿足GPU內(nèi)存需求同時優(yōu)化運行時間應(yīng)啟用的首選優(yōu)化集合。
需要注意的是,雖然可能存在其他允許成功微調(diào)的組合,但論文選擇了那些最小化微調(diào)時間的組合。例如,用戶可以選擇啟用所有優(yōu)化,但通常并非所有優(yōu)化都是必要的,且可能會不必要地增加微調(diào)時間。
論文的結(jié)果中的關(guān)鍵見解包括:
- 即使是為了在有限數(shù)量的GPU上適配像7B參數(shù)這樣的小型模型,結(jié)合模型和數(shù)據(jù)并行是先決條件,除非論文利用量化技術(shù)。
- 隨著上下文長度或模型大小的增加,轉(zhuǎn)向更高階段的ZeRO-DP(零冗余優(yōu)化器-數(shù)據(jù)并行)以促進微調(diào)變得重要。這一趨勢在表格中清晰可見,從左到右或從上到下的移動對應(yīng)于更高階段的ZeRO-DP。
- 梯度檢查點(GC)是一種有效的內(nèi)存節(jié)省優(yōu)化技術(shù),尤其適用于大型模型。如圖4所示,為LLaMA-2 13B和70B啟用GC使得支持的上下文長度從512擴展到4096,否則這是不可能的。類似地,GC對于在論文檢查的所有上下文長度上啟用Falcon-180B的微調(diào)至關(guān)重要。
- 盡管Flash-Attention 2在V100 GPU上不支持,但論文的實驗結(jié)果表明,在支持的架構(gòu)上應(yīng)始終啟用它。值得一提的是,圖中概述的配置可用于在具有比V100更高HBM的GPU上進行微調(diào)。雖然這些配置可能不是所有GPU的最佳選擇,但論文的發(fā)現(xiàn)可以通過進一步的研究擴展到其他GPU。
論文標題:A Study of Optimizations for Fine-tuning Large Language Models
論文鏈接:???https://arxiv.org/pdf/2406.02290??
本文轉(zhuǎn)載自 ??AI帝國??,作者: 無影寺

















