成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

無損減少80%激活值內存,提升5倍訓練序列長度,僅需兩行代碼

人工智能 新聞
來自港中文(深圳)和上海交通大學的團隊提出?StreamBP?算法。通過對鏈式法則進行線性分解和分步計算,StreamBP 將大語言模型訓練所需的激活值內存(logits 和 layer activation)降低至梯度檢查點(gradient checkpointing)的 20% 左右。

本文的第一作者羅琪竣、第二作者李夢琦為香港中文大學(深圳)計算機科學博士生,本文在上海交通大學趙磊老師、香港中文大學(深圳)李肖老師的指導下完成。

長序列訓練對于模型的長序列推理等能力至關重要。隨著序列長度增加,訓練所需儲存的激活值快速增加,占據訓練的大部分內存。即便使用梯度檢查點(gradient checkpointing)方法,激活值依然占據大量內存,限制訓練所能使用的序列長度。

來自港中文(深圳)和上海交通大學的團隊提出 StreamBP 算法。通過對鏈式法則進行線性分解和分步計算,StreamBP 將大語言模型訓練所需的激活值內存(logits 和 layer activation)降低至梯度檢查點(gradient checkpointing)的 20% 左右。

圖片

  • 論文標題:StreamBP: Memory-Efficient Exact Backpropagation for Long Sequence Training of LLMs
  • 論文:https://arxiv.org/abs/2506.03077
  • 代碼:https://github.com/Ledzy/StreamBP

在相同內存限制下,StreamBP 最大序列長度為梯度檢查點的 2.8-5.5 倍。在相同序列長度下,StreamBP 的速度和梯度檢查點接近甚至更快。StreamBP 適用于 SFT、GRPO、PPO 和 DPO 等常見 LLM 目標函數。代碼已開源,可集成至現有訓練代碼。

激活值內存和梯度檢查點

在反向傳播(Backpropagation, BP)的過程中,計算模型梯度需要用到模型的中間輸出(激活值)。舉例來說,對于模型中的線性變換圖片的梯度為圖片,因而計算圖片的梯度時需要儲存相應的激活值圖片。

對于模型中的任意函數變換 圖片 的梯度由以下鏈式法則計算:

圖片

其中 L 為目標函數,圖片為 Jacobian 矩陣。為了計算以上 Jacobian-vector product,需要在模型 forward 時儲存函數變換圖片的中間值(激活值),其內存消耗與 batch size、序列長度以及中間值維度正相關。

為了減少激活值的內存消耗,梯度檢查點(gradient checkpointing)方法在 forward 時只儲存每一層網絡的輸入,而不儲存該層的中間值。在 backward 至該層時,將重新 forward 此層輸入來計算得到該層激活值。使用梯度檢查點時儲存的激活值包括:

  • 所有層的輸入,一般為激活值內存的 5%-15%。
  • 單層的完整激活值,占據超過 85% 的激活值內存。

StreamBP 的核心思想

不同于梯度檢查點,StreamBP 避免儲存單層的完整激活值,而將單層的 BP 過程進行線性分解,序列化計算并累加。注意到對于函數變換圖片,鏈式法則存在以下線性分解:

圖片

StreamBP 基于以下觀察:對于 LLM 中的大部分函數變換圖片,如 Transformer 層、lmhead 層,可通過策略性地將輸出分塊圖片,使得計算塊 Jacobian-vector product 圖片所需的激活值遠小于計算完整的 Jacobian-vector product?;谠撚^察,StreamBP 依次計算上式中 D 個塊的 Jacobian-vector product 并累加,得到準確的梯度。

為了計算塊 Jacobian-vector product,需要分析圖片輸入和輸出的相關性,每次 forward 塊輸入圖片 得到塊輸出圖片,建立對應子計算圖。以簡單的線性變換圖片 為例,輸出和輸入在行維度上一一對應。StreamBP 按行分塊,每次計算單行的 Jacobian-vector product 并累加。下圖對比了標準 BP 和 StreamBP 在上述線性變換下的實現:

圖片

D 步累加得到的圖片圖片即為圖片圖片準確梯度。相比于標準 BP,StreamBP 僅需儲存圖片圖片,且總計算 FLOPs 相同。下表為 StreamBP 和標準 BP 的內存和時間對比:

圖片

LLM 訓練中的 StreamBP

StreamBP 應用于 LLM 中的 Transformer 層和 lmhead 層,分別用于降低層激活值和 logits 的內存消耗。

與線性變換不同,由于 Transformer 層存在注意力機制,塊輸出圖片并非僅由對應位置的塊輸入圖片決定,而與該塊及以前所有位置的輸入圖片都有關。StreamBP 利用圖片只與塊圖片有關的性質,建立了如下計算圖:

圖片

StreamBP 所需儲存的激活值和注意力掩碼(橙色)大幅低于梯度檢查點(橙色 + 白色部分)。

對于 lmhead 層,當以 SFT 或 GRPO 為目標函數時,觀察到不同位置的 logits 對于目標函數的影響相互獨立。因此,StreamBP 從序列維度分塊,每次計算單塊損失函數的梯度,從而只需儲存單塊 logits 和 logits 梯度。

圖片

圖:StreamBP for SFT

圖片

圖:StreamBP for GRPO

對于 DPO,由于非線性 sigmoid 函數的存在,每個位置的 logits 對于目標函數的影響并不獨立。StreamBP 利用 logits 梯度在序列維度的獨立性,分塊進行梯度計算。

圖片

圖:StreamBP for DPO

實驗結果

我們在單張 A800-80GB GPU 上測試了不同大小的模型,StreamBP 的最大 BP 序列長度為標準 BP 的 23-36 倍,梯度檢查點的 2.5-5.5 倍。

圖片

圖:不同序列長度下的 BP 峰值內存

在現有 Transformers 框架下,StreamBP 的實現可避免計算掩碼部分的 pre-attention score(見論文 3.2.2 部分),在長序列訓練下相較于梯度檢查點實現了加速。

圖片

通過使用 StreamBP,不同目標函數下最大的序列長度得到了大幅提升。在同樣的序列長度下,StreamBP 允許更大的批處理大小以加速訓練。

圖片

表:Qwen 3-4B 單個樣本 BP 時間,序列長度為 9000。

在 Deepspeed ZeRO 分布式訓練模式下,Distributed StreamBP 比梯度檢查點的最大可訓練序列長度提升了5—5.6倍。

圖片

責任編輯:張燕妮 來源: 機器之心
相關推薦

2022-05-25 10:04:43

Go編程

2023-01-12 08:07:03

Python代碼版權

2020-03-26 12:38:15

代碼節點數據

2020-07-22 08:30:02

代碼開發工具

2024-11-27 14:30:00

模型訓練

2022-03-09 14:57:53

Numbapython

2025-05-15 13:40:13

數據訓練模型

2023-09-12 14:58:00

Redis

2021-06-18 10:12:09

JS代碼前端

2025-06-18 10:05:26

2023-12-06 18:09:01

2022-06-07 08:07:05

GoNode.js

2017-02-28 15:35:09

OPPO

2024-04-03 12:32:00

數據訓練

2022-10-19 14:03:45

開源AI

2024-02-20 12:49:00

CSS函數前端

2024-02-19 00:00:00

SQLite3數據庫代碼

2020-02-21 16:51:58

前端可視化傳染病

2025-02-26 10:24:47

2022-09-25 23:10:53

Python數據集機器學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 先锋资源网站 | 国产乱码精品一区二区三区忘忧草 | 国产精品日日摸夜夜添夜夜av | 亚洲喷水 | 国产日韩欧美一区二区在线播放 | 久久伊人影院 | 国产成人在线视频免费观看 | 精品av| 宅男伊人 | 天天插日日操 | 日本一卡精品视频免费 | 亚洲 中文 欧美 日韩 在线观看 | 在线免费观看日本 | 蜜桃毛片 | 国内精品久久精品 | 大久 | 在线播放一区 | 一道本一区二区 | 亚洲欧美精品在线观看 | 一区二区三区在线看 | 久久国产区 | 国产免费一二三区 | www.亚洲精品 | 久久人人爽人人爽人人片av免费 | 日韩美香港a一级毛片免费 国产综合av | 国产高清一区二区三区 | 毛片大全| 艹逼网| 麻豆久久 | 国产欧美一区二区三区在线看 | 欧美视频福利 | 国产免费一区二区三区 | 国产一区二区三区欧美 | 欧美日韩精品在线免费观看 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | caoporn视频在线 | 亚洲aⅴ | 久久99精品久久久久久秒播九色 | 日韩不卡一区二区三区 | 午夜影院视频在线观看 | 狠狠av|