650億參數,8塊GPU就能全參數微調:邱錫鵬團隊把大模型門檻打下來了
在大模型方向上,科技巨頭在訓更大的模型,學界則在想辦法搞最佳化。最近,優化算力的方法又上升到了新的高度。
大型語言模型(LLM)徹底改變了自然語言處理(NLP)領域,展現了湧現、頓悟等非凡能力。然而,若想建構出具備一定通用能力的模型,就需要數十億參數,這大幅提高了 NLP 研究的門檻。在 LLM 模型調優過程中通常又需要昂貴的 GPU 資源,例如 8×80GB 的 GPU 設備,這使得小型實驗室和公司很難參與這一領域的研究。
最近,人們正在研究參數高效的微調技術(PEFT),例如 LoRA 和 Prefix-tuning,為利用有限資源對 LLM 進行調優提供了解決方案。然而,這些方法並沒有為全參數微調提供實用的解決方案,而全參數微調已被公認為比參數高效微調更強大的方法。
在上週復旦大學邱錫鵬團隊提交的論文《Full Parameter Fine-tuning for Large Language Models with Limited Resources》中,研究人員提出了一種新的優化器LOw- Memory Optimization(LOMO)。
透過將 LOMO 與現有的記憶體節省技術集成,與標準方法(DeepSpeed 解決方案)相比,新方法將記憶體使用量減少到了先前的 10.8%。因此,新方法能夠在一台具有 8×RTX 3090 的機器上對 65B 模型進行全參數微調,每個 RTX 3090 具有 24GB 記憶體。
論文連結:https://arxiv.org/abs/2306.09782
#在該工作中,作者分析了LLM 中記憶體使用的四個面向:啟動、最佳化器狀態、梯度張量和參數,並對訓練過程進行了三方面的最佳化:
- 從演算法的角度重新思考了優化器的功能,發現SGD 在微調LLM 完整參數方面是一種很好的替代品。這使得作者可以刪除優化器狀態的整個部分,因為 SGD 不會儲存任何中間狀態。
- 新提出的優化器 LOMO 將梯度張量的記憶體使用量減少到 O (1),相當於最大梯度張量的記憶體使用量。
- 為了使用 LOMO 穩定混合精度訓練,作者整合了梯度歸一化、損失縮放,並在訓練期間將某些計算轉換為全精度。
新技術讓記憶體的使用等於參數使用加上啟動和最大梯度張量。全參數微調的記憶體使用被推向了極致,其僅等同於推理的使用。這是因為 forward backward 過程的記憶體佔用應該不會比單獨的 forward 過程少。值得注意的是,在使用 LOMO 節省記憶體時,新方法確保了微調過程不受影響,因為參數更新過程仍然等同於 SGD。
該研究評估了 LOMO 的記憶體和吞吐量效能,顯示借助 LOMO,研究者在 8 個 RTX 3090 GPU 上就可以訓練 65B 參數的模型。此外,為了驗證 LOMO 在下游任務上的效能,他們應用 LOMO 來調優 SuperGLUE 資料集集合上 LLM 的全部參數。結果顯示了 LOMO 對具有數十億參數的 LLM 進行最佳化的有效性。
方法介紹
在方法部分,本文詳細介紹了 LOMO(LOW-MEMORY OPTIMIZATION)。一般而言,梯度張量表示一個參數張量的梯度,其大小與參數相同,這樣一來記憶體開銷較大。而現有的深度學習框架如 PyTorch 會為所有參數儲存梯度張量。現階段,儲存梯度張量有兩方面原因:計算最佳化器狀態以及歸一化梯度。
由於研究採用 SGD 作為最佳化器,因此沒有依賴梯度的最佳化器狀態,並且他們有一些梯度歸一化的替代方案。
他們提出了 LOMO,如演算法 1 所示,LOMO 將梯度計算與參數更新融合在一個步驟中,從而避免了梯度張量的儲存。
下圖為 SGD 和 LOMO 在反向傳播和參數更新階段的比較。 Pi 為模型參數,Gi 為 Pi 對應的梯度。 LOMO 將梯度計算和參數更新整合到一個步驟中,使梯度張量最小。
LOMO 對應的演算法偽代碼:
,這是一個兩步驟過程,首先是計算梯度,然後更新參數。融合版本為
此研究的關鍵想法是在計算梯度時立即更新參數,這樣就不會在記憶體中儲存梯度張量。這一步可以透過在向反向傳播中註入 hook 函數來實現。 PyTorch 提供了注入 hook 函數的相關 API,但卻無法以目前的 API 實現精確的即時更新。相反,該研究在記憶體中最多儲存一個參數的梯度,並隨著反向傳播逐一更新每個參數。本文方法減少了梯度的記憶體使用,從儲存所有參數的梯度到只儲存一個參數的梯度。
大部分 LOMO 記憶體使用與參數高效微調方法的記憶體使用一致,這表明 LOMO 與這些方法結合只會導致梯度佔用記憶體的輕微增加。這樣就可以為 PEFT 方法調優更多的參數。
實驗結果
在實驗部分,研究者從三個方面評估了他們提出的方法,即記憶體使用情況、吞吐量和下游性能。如果不作進一步解釋,所有的實驗都是用 7B 到 65B 的 LLaMA 模型進行的。
記憶體使用情況
#研究者首先剖析了,在不同設定下,訓練期間的模型狀態和啟動的記憶體使用情況。如表1 所示,與AdamW 優化器相比,LOMO 優化器的使用導致記憶體佔用大幅減少,從102.20GB 減少到14.58GB;與SGD 相比,在訓練LLaMA-7B 模型時,記憶體佔用從51.99GB減少到14.58GB。記憶體用量的大幅減少主要歸因於梯度和優化器狀態的記憶體需求減少。因此,在訓練過程中,記憶體大部分被參數佔據,與推理過程中的記憶體用量相當。
如圖2 所示,若採用AdamW 最佳化器進行LLaMA-7B 訓練,則相當大比例的記憶體( 73.7%)被指派給優化器狀態。用 SGD 優化器取代 AdamW 優化器可以有效減少優化器狀態佔用記憶體的百分比,從而減輕 GPU 記憶體使用(從 102.20GB 減少到 51.99GB)。如果使用 LOMO,參數更新和 backward 會被融合到一個步驟中,進一步消除優化器狀態對記憶體的需求。
吞吐量
#研究者比較了LOMO、AdamW 和SGD的吞吐性能。實驗是在一台配備了 8 個 RTX 3090 GPU 的伺服器上進行的。
对于 7B 的模型,LOMO 的吞吐量呈现显著优势,超过 AdamW 和 SGD 约 11 倍。这一重大改进可归功于 LOMO 在单个 GPU 上训练 7B 模型的能力,这减少了 GPU 间的通信开销。与 AdamW 相比,SGD 的吞吐量略高,这可归因于 SGD 排除了动量和方差的计算。
至于 13B 模型,由于内存的限制,它无法在现有的 8 个 RTX 3090 GPU 上用 AdamW 训练。在这种情况下,模型的并行性对 LOMO 来说是必要的,LOMO 在吞吐量方面仍然优于 SGD。这一优势归功于 LOMO 的内存高效特性,以及只需要两个 GPU 以相同的设置来训练模型,从而降低了通信成本,提高了吞吐量。此外,在训练 30B 模型时,SGD 在 8 个 RTX 3090 GPU 上遇到了内存不足(OOM)的问题,而 LOMO 在只有 4 个 GPU 的情况下表现良好。
最后,研究者使用 8 个 RTX 3090 GPU 成功训练了 65B 模型,实现了 4.93 TGS 的吞吐量。利用这样的服务器配置和 LOMO,模型在 1000 个样本上的训练过程(每个样本包含 512 个 token)大约需要 3.6 小时。
下游性能
为了评估 LOMO 在微调大型语言模型方面的有效性,研究者进行了一系列广泛的实验。他们将 LOMO 与其他两种方法进行比较,一种是不需要微调的 Zero-shot,另一种是目前很流行的参数高效微调技术 LoRA。
- LOMO 的表现明显好于 Zero-shot;
- 在大多数实验中,LOMO 普遍优于 LoRA;
- LOMO 可以有效扩展至 650 亿参数的模型。
LOMO 和 LoRA 在本质上是相互独立的。为了验证这一说法,研究者使用 LLaMA-13B 在 BoolQ 和 MultiRC 数据集上进行了实验。结果如图 3 所示。
他们发现,LOMO 在持续增强 LoRA 的性能,不管 LoRA 取得的结果有多高。这表明,LOMO 和 LoRA 采用的不同微调方法是互补的。具体来说,LOMO 专注于微调预训练模型的权重,而 LoRA 则调整其他模块。因此,LOMO 不会影响到 LoRA 的性能;相反,它有助于对下游任务进行更好的模型调优。
更多细节参见原论文。
以上是650億參數,8塊GPU就能全參數微調:邱錫鵬團隊把大模型門檻打下來了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

想像一下,一個人工智慧模型,不僅擁有超越傳統運算的能力,還能以更低的成本實現更有效率的效能。這不是科幻,DeepSeek-V2[1],全球最強開源MoE模型來了。 DeepSeek-V2是一個強大的專家混合(MoE)語言模型,具有訓練經濟、推理高效的特點。它由236B個參數組成,其中21B個參數用於啟動每個標記。與DeepSeek67B相比,DeepSeek-V2效能更強,同時節省了42.5%的訓練成本,減少了93.3%的KV緩存,最大生成吞吐量提高到5.76倍。 DeepSeek是一家探索通用人工智

AI,的確正在改變數學。最近,一直十分關注這個議題的陶哲軒,轉發了最近一期的《美國數學學會通報》(BulletinoftheAmericanMathematicalSociety)。圍繞著「機器會改變數學嗎?」這個話題,許多數學家發表了自己的觀點,全程火花四射,內容硬核,精彩紛呈。作者陣容強大,包括菲爾茲獎得主AkshayVenkatesh、華裔數學家鄭樂雋、紐大電腦科學家ErnestDavis等多位業界知名學者。 AI的世界已經發生了天翻地覆的變化,要知道,其中許多文章是在一年前提交的,而在這一

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

本月初,來自MIT等機構的研究者提出了一種非常有潛力的MLP替代方法—KAN。 KAN在準確性和可解釋性方面表現優於MLP。而且它能以非常少的參數量勝過以更大參數量運行的MLP。例如,作者表示,他們用KAN以更小的網路和更高的自動化程度重現了DeepMind的結果。具體來說,DeepMind的MLP有大約300,000個參數,而KAN只有約200個參數。 KAN與MLP一樣具有強大的數學基礎,MLP基於通用逼近定理,而KAN基於Kolmogorov-Arnold表示定理。如下圖所示,KAN在邊上具

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

目標偵測在自動駕駛系統當中是一個比較成熟的問題,其中行人偵測是最早得以部署演算法之一。在多數論文當中已經進行了非常全面的研究。然而,利用魚眼相機進行環視的距離感知相對來說研究較少。由於徑向畸變大,標準的邊界框表示在魚眼相機當中很難實施。為了緩解上述描述,我們探索了擴展邊界框、橢圓、通用多邊形設計為極座標/角度表示,並定義一個實例分割mIOU度量來分析這些表示。所提出的具有多邊形形狀的模型fisheyeDetNet優於其他模型,並同時在用於自動駕駛的Valeo魚眼相機資料集上實現了49.5%的mAP

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

FP8和更低的浮點數量化精度,不再是H100的「專利」了!老黃想讓大家用INT8/INT4,微軟DeepSpeed團隊在沒有英偉達官方支援的條件下,硬生在A100上跑起FP6。測試結果表明,新方法TC-FPx在A100上的FP6量化,速度接近甚至偶爾超過INT4,而且比後者擁有更高的精度。在此基礎之上,還有端到端的大模型支持,目前已經開源並整合到了DeepSpeed等深度學習推理框架中。這項成果對大模型的加速效果也是立竿見影──在這種框架下用單卡跑Llama,吞吐量比雙卡還要高2.65倍。一名
