大香大香伊人在钱线久久,亚洲日韩欧美国产高清αv,日本强伦姧人妻久久影片,亚洲国产成人欧美在线观看

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

DeepSeek用的GRPO占用大量內(nèi)存?有人給出了些破解方法

0
分享至



選自oxen.ai

作者:Greg Schoeninger

編譯:陳陳、澤南

RTX 3080 移動版能訓練哪種大模型?本文為那些 GPU 資源有限時使用 GRPO 訓練的開發(fā)者提供了寶貴的指導。

自 DeepSeek-R1 發(fā)布以來,群組相對策略優(yōu)化(GRPO)因其有效性和易于訓練而成為大型語言模型強化學習的熱門話題。R1 論文展示了如何使用 GRPO 從遵循 LLM(DeepSeek-v3)的基本指令轉(zhuǎn)變?yōu)橥评砟P停―eepSeek-R1)。

GRPO 是一種在線學習算法(online learning algorithm),它通過使用訓練過程中由訓練模型自身生成的數(shù)據(jù)來進行迭代改進。GRPO 的目標是最大化生成補全(completions)的優(yōu)勢函數(shù)(advantage),同時確保模型保持在參考策略(reference policy)附近。



本文的目的是幫你節(jié)省一些時間,讓你根據(jù)硬件預算選擇合適的模型大小。在開始微調(diào)時,你必須做出的重要決定是選擇模型大小,以及你是執(zhí)行完全微調(diào)還是參數(shù)高效微調(diào)(PEFT)。

文章作者來自 AI 公司 Oxen.ai 的 CEO Greg Schoeninger。



原文鏈接:https://www.oxen.ai/blog/grpo-vram-requirements-for-the-gpu-poor

作者表示,他發(fā)現(xiàn) trl 庫中已經(jīng)有一個易于使用的 GRPO 實現(xiàn),便立刻開始了訓練,使用的硬件是配備了 16GB 顯存的 Nvidia GeForce RTX 3080 的小型筆記本電腦。正如大家可能遇到的問題,作者發(fā)現(xiàn)示例代碼中的參數(shù)設(shè)置導致了一個巨大的顯存不足(OOM,out of memory )錯誤。

  1. torch
  2. OutOfMemoryError
  3. CUDA
  4. out
  5. of memory
  6. Tried
  7. to allocate
  8. 1.90
  9. GiB
  10. GPU
  11. 0
  12. has a total capacity of
  13. GiB
  14. of which
  15. 1.28
  16. GiB
  17. is
  18. free
  19. Including
  20. non
  21. PyTorch
  22. memory
  23. this
  24. process has
  25. GiB
  26. memory
  27. in
  28. use
  29. Of
  30. the allocated memory
  31. GiB
  32. is
  33. allocated
  34. by
  35. PyTorch
  36. and
  37. 2.41
  38. GiB
  39. is
  40. reserved
  41. by
  42. PyTorch
  43. but unallocated
  44. If
  45. reserved but unallocated memory
  46. is
  47. large
  48. try
  49. setting PYTORCH_CUDA_ALLOC_CONF
  50. expandable_segments
  51. True
  52. to avoid fragmentation
  53. See
  54. documentation
  55. for
  56. Memory
  57. Management
  58. //pytorch.org/docs/stable/notes/cuda.html#environment-variables)

實際使用情況

作者表示,他們進行了一系列實驗,以確定訓練各種大小的模型所需的顯存(VRAM)要求。參數(shù)數(shù)量從 5 億到 140 億不等,他們比較了權(quán)重的完全微調(diào)與參數(shù)高效微調(diào)(使用 LoRA),所有訓練運行都在英偉達 H100 上完成,因此這里的 OOM 意味著 >80GB 的 VRAM。



在表格中,你可以找到 GSM8K 數(shù)據(jù)集上訓練的前 100 步中的峰值內(nèi)存使用情況。用于實驗的模型是:



所有實驗均使用 Shadeform 的 GPU 市場完成,因此每次實驗只需要花費幾美元 H100。

實驗結(jié)果表明,內(nèi)存需求隨著模型大小和訓練方式的不同而顯著變化。例如,全參數(shù)微調(diào)比 PEFT 需要更多的內(nèi)存。

為什么 GRPO 對內(nèi)存需求較高

這要從 GRPO 的原理說起,這是它的流程圖。



GRPO 對內(nèi)存需求較高的原因在于,其內(nèi)部涉及多個模型,并且在訓練數(shù)據(jù)中每個查詢會產(chǎn)生多個輸出。上圖中的策略模型、參考模型和獎勵模型各自都是一個需要進行推理的 LLM。(盡管從技術(shù)上講,獎勵模型可能不需要參數(shù)化,可以只是一個 Python 函數(shù)或正則表達式,但不影響 GRPO 對內(nèi)存的高需求。)

為什么 8-Bit 優(yōu)化和梯度檢查點有助于減少內(nèi)存占用?

通常來講,訓練一個大型語言模型需要在內(nèi)存中存儲三種主要類型的信息:模型參數(shù)、模型學習所需的梯度、優(yōu)化器的跟蹤數(shù)據(jù)。

對上述內(nèi)容我們可以這樣理解:如果模型的參數(shù)占用了 X 的空間,那么梯度也會占用大約相同的空間。然后,像 AdamW 這樣的優(yōu)化器需要更多的空間,因為它們就像一個記錄員,跟蹤最近的更新歷史,以便更好地決定未來的優(yōu)化。

為了減輕這種內(nèi)存負擔,通常采用兩種技術(shù):

  • 首先,可以使用像 AdamW 這樣的 8-bit 優(yōu)化器版本,它們能更高效地存儲跟蹤數(shù)據(jù),同時仍保持良好的性能 —— 類似于壓縮照片可以節(jié)省空間,同時保留大部分圖像質(zhì)量;
  • 其次,使用梯度檢查點技術(shù),這就像在訓練過程中拍攝快照,而不是記錄所有內(nèi)容。雖然這會使訓練速度減慢約 20-30%,但它顯著減少了內(nèi)存使用。

結(jié)合這些技術(shù),即使對 GPU 資源有限的人來說,也能夠訓練更大的模型。

代碼示例

像 trl 這樣的庫已經(jīng)開始支持 GRPO,使得微調(diào)由 transformers 構(gòu)成的 LLM 變得非常簡單。代碼也非常簡潔,只需將訓練器替換為 GRPOTrainer 并定義一些獎勵即可。GRPO 的最小代碼量大約只有 99 行,如果你使用的是像 meta-llama/Llama-3.2-1B-Instruct 這樣的小型模型和像 openai/GSM8K 這樣的數(shù)據(jù)集,可以非常快速地啟動。

trl 項目地址:https://github.com/huggingface/trl?ref=ghost.oxen.ai

  1. import
  2. torch
  3. from
  4. datasets
  5. import
  6. load_dataset
  7. Dataset
  8. from
  9. transformers
  10. import
  11. AutoTokenizer
  12. AutoModelForCausalLM
  13. from
  14. trl
  15. import
  16. GRPOConfig
  17. GRPOTrainer
  18. import
  19. re
  20. SYSTEM_PROMPT
  21. Respond in the following format:
  22. def
  23. extract_hash_answer
  24. text
  25. str
  26. str
  27. None
  28. if
  29. "####"
  30. not
  31. in
  32. text
  33. return
  34. None
  35. return
  36. text
  37. split
  38. "####"
  39. 1
  40. strip
  41. def
  42. get_gsm8k_questions
  43. split
  44. "train"
  45. Dataset
  46. data
  47. load_dataset
  48. 'openai/gsm8k'
  49. 'main'
  50. split
  51. data
  52. data
  53. map
  54. lambda
  55. 'prompt'
  56. 'role'
  57. 'system'
  58. 'content'
  59. SYSTEM_PROMPT
  60. },
  61. 'role'
  62. 'user'
  63. 'content'
  64. 'question'
  65. ],
  66. 'answer'
  67. extract_hash_answer
  68. 'answer'
  69. return
  70. data
  71. def
  72. extract_xml_answer
  73. text
  74. str
  75. str
  76. answer
  77. text
  78. split
  79. 1
  80. answer
  81. answer
  82. split
  83. ""
  84. 0
  85. return
  86. answer
  87. strip
  88. def
  89. format_reward_func
  90. completions
  91. kwargs
  92. list
  93. float
  94. """Reward function that checks if the completion has a specific format."""
  95. pattern
  96. r
  97. "^\n\n$"
  98. \n.*?\n
  99. \n.*?\n
  100. responses
  101. completion
  102. 0
  103. "content"
  104. for
  105. completion
  106. in
  107. completions
  108. matches
  109. re
  110. match
  111. pattern
  112. r
  113. for
  114. r
  115. in
  116. responses
  117. return
  118. 0.5
  119. if
  120. match
  121. else
  122. 0.0
  123. for
  124. match
  125. in
  126. matches
  127. def
  128. accuracy_reward_func
  129. prompts
  130. completions
  131. answer
  132. kwargs
  133. list
  134. float
  135. """Reward function that extracts the answer from the xml tags and compares it to the correct answer."""
  136. responses
  137. completion
  138. 0
  139. 'content'
  140. for
  141. completion
  142. in
  143. completions
  144. extracted_responses
  145. extract_xml_answer
  146. r
  147. for
  148. r
  149. in
  150. responses
  151. return
  152. 2.0
  153. if
  154. r
  155. a
  156. else
  157. 0.0
  158. for
  159. r
  160. a
  161. in
  162. zip
  163. extracted_responses
  164. answer
  165. def
  166. main
  167. dataset
  168. get_gsm8k_questions
  169. model_name
  170. "meta-llama/Llama-3.2-1B-Instruct"
  171. model
  172. AutoModelForCausalLM
  173. from_pretrained
  174. model_name
  175. torch_dtype
  176. torch
  177. bfloat16
  178. attn_implementation
  179. "flash_attention_2"
  180. device_map
  181. None
  182. to
  183. "cuda"
  184. tokenizer
  185. AutoTokenizer
  186. from_pretrained
  187. model_name
  188. tokenizer
  189. pad_token
  190. tokenizer
  191. eos_token
  192. training_args
  193. GRPOConfig
  194. output_dir
  195. "output"
  196. learning_rate
  197. 5e-6
  198. adam_beta1
  199. 0.9
  200. adam_beta2
  201. 0.99
  202. weight_decay
  203. 0.1
  204. warmup_ratio
  205. 0.1
  206. lr_scheduler_type
  207. 'cosine'
  208. logging_steps
  209. 1
  210. bf16
  211. True
  212. per_device_train_batch_size
  213. 1
  214. gradient_accumulation_steps
  215. 4
  216. num_generations
  217. 4
  218. max_prompt_length
  219. 256
  220. max_completion_length
  221. 786
  222. num_train_epochs
  223. 1
  224. save_steps
  225. 100
  226. save_total_limit
  227. 1
  228. max_grad_norm
  229. 0.1
  230. log_on_each_node
  231. False
  232. trainer
  233. GRPOTrainer
  234. model
  235. model
  236. processing_class
  237. tokenizer
  238. reward_funcs
  239. format_reward_func
  240. accuracy_reward_func
  241. ],
  242. args
  243. training_args
  244. train_dataset
  245. dataset
  246. trainer
  247. train
  248. if
  249. __name__
  250. "__main__"
  251. main

Num Generations 有什么用

Num Generations 是一個超參數(shù),它決定了我們將在訓練數(shù)據(jù)中對每個查詢采樣多少個補全。然而,這會顯著增加 VRAM 的消耗。



目前有一個開放的 GitHub 問題,可能會幫助解決內(nèi)存瓶頸問題,可以參考如下鏈接

地址:https://github.com/huggingface/trl/issues/2709?ref=ghost.oxen.ai

對于 num_completions=8,16,64 (DeepSeekMath 論文使用的 64),作者表示,不用再次計算上述所有值,而是使用了 1B 參數(shù)模型進行了測試,以顯示內(nèi)存增長。不過,作者還是建議大家在內(nèi)存瓶頸得到修復之前使用 num_generations=4,也能獲得不錯的性能。



影響 VRAM 的一些因素

要對所有影響顯存(VRAM)使用的因素進行全面的超參數(shù)驗證,需要進行大量的實驗。簡單起見,這里只指出了需要注意的設(shè)置,以及實驗中使用的具體數(shù)值。

  • batch_size=1,由于 GRPO 為每個查詢生成多個響應,batch size 會迅速失控。
  • gradient_accumulation_steps=4,優(yōu)化器是另一個占用大量 VRAM 的地方。此參數(shù)決定了我們將存儲的梯度以幫助優(yōu)化器進行其「爬山」過程。
  • num_completions=4,DeepSeekMath 論文中使用了 64。這完全超出了有些人的計算預算。
  • max_prompt_length=256,如果你想訓練模型擁有更大上下文的推理能力,將不得不增加 VRAM。GSM8K 的提示相對較小,適合此測試。
  • max_completion_length=786,同樣,由于計算注意力的內(nèi)存有限,推理鏈在這里受到限制。上下文或生成的 token 越多,需要的內(nèi)存就越大。
  • LoRA target_modules=["q_proj", "k_proj", "o_proj", "up_proj", "down_proj"] 在這方面可以嘗試幾種不同的迭代。target_modules="all-linear" 是一種流行的方式,可以從你的 LoRA 中擠出最多的性能(就準確性而言)。

對 VRAM 使用的粗略估算

如果你正在使用 FP16 精度進行訓練,以下是一些簡單的估算方法,可以幫助你了解內(nèi)存主要用在了哪些地方:

  • 模型參數(shù):每個參數(shù)占用 2 字節(jié)。
  • 參考模型參數(shù):每個參數(shù)占用 2 字節(jié)。
  • 梯度:每個參數(shù)占用 2 字節(jié)。
  • 優(yōu)化器狀態(tài):每個參數(shù)占用 8 字節(jié)。
  • 8 位優(yōu)化器:每個參數(shù)占用 4 字節(jié)。
  • PEFT:有助于減少梯度的顯存占用。

最后是關(guān)于準確率的。作者完成了一個 10 億參數(shù)的 Llama 3.2 模型的完整訓練。在應用 GRPO 之前,該模型在保留測試集上達到了約 19% 的準確率,而在經(jīng)過一個訓練周期后,模型的準確率飆升至約 40.5%。雖然這離 SOTA 水平還差得很遠,但這展示了 GRPO 的強大潛力。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點推薦
關(guān)于八國聯(lián)軍的三大謊言:曾家喻戶曉,很多人信以為真,其實是假

關(guān)于八國聯(lián)軍的三大謊言:曾家喻戶曉,很多人信以為真,其實是假

詩意世界
2025-06-08 23:40:44
網(wǎng)紅博主竟是命案犯罪嫌疑人!大連警方破獲31年前積案

網(wǎng)紅博主竟是命案犯罪嫌疑人!大連警方破獲31年前積案

魯中晨報
2025-06-13 09:38:07
這妞厲害!來橫店三個月從配角到女二!

這妞厲害!來橫店三個月從配角到女二!

TVB的四小花
2025-06-14 01:16:34
夜線快評:唯有真相才是最大的告慰!

夜線快評:唯有真相才是最大的告慰!

看看新聞Knews
2025-06-13 18:05:48
伊媒:多名革命衛(wèi)隊指揮官、核科學家身亡,哈梅內(nèi)伊高級顧問重傷

伊媒:多名革命衛(wèi)隊指揮官、核科學家身亡,哈梅內(nèi)伊高級顧問重傷

澎湃新聞
2025-06-13 12:10:31
網(wǎng)盤中的加密文件,二十年后依然回味無窮

網(wǎng)盤中的加密文件,二十年后依然回味無窮

街機時代
2025-04-27 16:10:02
我偷偷將岳母床頭的避孕藥,換成維生素,3月后她下腹微凸釀成慘劇

我偷偷將岳母床頭的避孕藥,換成維生素,3月后她下腹微凸釀成慘劇

星宇共鳴
2025-06-07 12:16:14
羅嘉良兒子顏值被噴「浪費基因」!17位男神星二代「長殘」引熱議

羅嘉良兒子顏值被噴「浪費基因」!17位男神星二代「長殘」引熱議

和斌斌一起看劇
2025-06-06 06:20:03
禁酒令下,三人同事聚餐還能吃飯嗎?喝酒當心踩紅線

禁酒令下,三人同事聚餐還能吃飯嗎?喝酒當心踩紅線

娛樂圈見解說
2025-06-13 09:44:43
中央批準,馬森述履新廣東

中央批準,馬森述履新廣東

魯中晨報
2025-06-13 16:54:20
蒙古“變臉”比翻書還快!過境費從2.5億砍到1.2億,中俄會買賬嗎

蒙古“變臉”比翻書還快!過境費從2.5億砍到1.2億,中俄會買賬嗎

百科密碼
2025-06-13 17:06:51
狂歡夢碎!“高考后才知道家里沒有1萬塊”,炸出多少家庭的無奈

狂歡夢碎!“高考后才知道家里沒有1萬塊”,炸出多少家庭的無奈

振華觀史
2025-06-13 16:19:12
俄常駐聯(lián)合國代表:以方軍事冒險將中東推向全面戰(zhàn)爭邊緣

俄常駐聯(lián)合國代表:以方軍事冒險將中東推向全面戰(zhàn)爭邊緣

財聯(lián)社
2025-06-14 12:09:09
墜亡實習醫(yī)生羅帥宇媽媽最新發(fā)聲:堅信兒子的墜亡和舉報劉某峰有直接關(guān)系

墜亡實習醫(yī)生羅帥宇媽媽最新發(fā)聲:堅信兒子的墜亡和舉報劉某峰有直接關(guān)系

極目新聞
2025-06-13 15:26:23
囤積10大前鋒!穆里尼奧逼瘋加拉塔薩雷,狂人接下來如何出牌?

囤積10大前鋒!穆里尼奧逼瘋加拉塔薩雷,狂人接下來如何出牌?

漫川舟船
2025-06-14 10:04:07
陳麗華立遺囑:兒女每人100億,余下幾百億都歸“唐僧”老公

陳麗華立遺囑:兒女每人100億,余下幾百億都歸“唐僧”老公

深析古今
2025-06-13 22:38:06
56歲大爺遭妻子冷落23年,住院無人陪,醫(yī)生說出實情妻子癱坐在地

56歲大爺遭妻子冷落23年,住院無人陪,醫(yī)生說出實情妻子癱坐在地

無名講堂
2025-06-10 18:04:28
衛(wèi)報:又悶又熱!梅西等球星將在世俱杯上面臨高溫考驗

衛(wèi)報:又悶又熱!梅西等球星將在世俱杯上面臨高溫考驗

雷速體育
2025-06-14 11:39:20
男子將6歲女兒鎖衣柜致死,20年后回老宅聽到女兒:爸爸放我出去

男子將6歲女兒鎖衣柜致死,20年后回老宅聽到女兒:爸爸放我出去

古怪奇談錄
2025-05-27 14:13:40
美媒:美防長與民主黨議員發(fā)生激烈爭執(zhí),被后者要求“滾出”五角大樓

美媒:美防長與民主黨議員發(fā)生激烈爭執(zhí),被后者要求“滾出”五角大樓

環(huán)球網(wǎng)資訊
2025-06-13 10:48:50
2025-06-14 13:16:49
機器之心Pro incentive-icons
機器之心Pro
專業(yè)的人工智能媒體
10640文章數(shù) 142338關(guān)注度
往期回顧 全部

科技要聞

一輛新車比特斯拉FSD都便宜,全行業(yè)陪葬?

頭條要聞

牛彈琴:中東大戰(zhàn)開啟 以色列遭受幾十年來最猛烈攻擊

頭條要聞

牛彈琴:中東大戰(zhàn)開啟 以色列遭受幾十年來最猛烈攻擊

體育要聞

32隊爭10億獎金,全新世俱杯來了!

娛樂要聞

鳳凰傳奇曾毅手表引爭議 含性暗示元素

財經(jīng)要聞

樓市權(quán)威發(fā)聲

汽車要聞

長城為了拿環(huán)塔冠軍有多拼?魏建軍在下一盤大棋!

態(tài)度原創(chuàng)

房產(chǎn)
教育
親子
數(shù)碼
公開課

房產(chǎn)要聞

又一城購房補貼!買房就發(fā)錢,正在海南樓市瘋狂擴散!

教育要聞

老師表面喜歡,實則“內(nèi)心反感”的4種學生,地位還不如倒數(shù)差生

親子要聞

寶寶害怕吃藥怎么辦?爸爸傳授的冷靜

數(shù)碼要聞

REDMI即將發(fā)布首款旗艦小平板 全面超越iPad mini

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關(guān)懷版 主站蜘蛛池模板: 日韩中文人妻无码不卡| 免费女人高潮流视频在线| 免费观看成人欧美www色| 午夜免费福利小电影| 亚洲乱码日产精品bd| 日韩成人极品在线内射3p蜜臀| 国产精品无码久久综合| 曰韩无码二三区中文字幕| 色噜噜狠狠狠狠色综合久一| 四虎国产成人永久精品免费| 亚洲国产欧美一区三区成人| 又色又爽又黄高潮的免费视频| 东京热人妻中文无码av| 婷婷久久香蕉五月综合| 99久久久无码国产精品秋霞网| 国产成人无码精品一区在线观看| 日韩高清亚洲日韩精品一区二区三区| 国产精品久久久久久久久| 尤物99国产成人精品视频| 日本精品久久久久中文字幕| 久久久久亚洲精品无码系列| 97人妻无码一区二区精品免费| 人妻无码久久精品人妻| 精品久久久久久久久中文字幕| 一区二区和激情视频| 中文字幕无码精品亚洲资源网久久| 男女做aj视频免费的网站| 亚洲中文字幕无码久久| 国产精品妇女一二三区| 亚洲日韩性欧美中文字幕| 亚欧洲乱码视频一二三区| 国产成人精品综合久久久| 亚洲精品字幕在线观看| 中文字幕日韩精品一区二区三区| 国语精品一区二区三区| 青青草国产免费国产是公开| 久热在线这里只有精品国产| 初尝黑人嗷嗷叫中文字幕| 精品国产一区二区三区av色诱| 国产内射在线激情一区| 纯爱无遮挡h肉动漫在线播放|