DeepSeek-R1推理本地跑,7GB GPU體驗啊哈時刻?GRPO內存暴降,GitHub超2萬星

新智元報導
編輯:KingHZ Aeneas
【新智元導讀】黑科技來了!開源LLM微調神器Unsloth近期更新,將GRPO訓練的內存使用減少了80%!只需7GB VRAM,本地就能體驗AI「啊哈時刻」。
李飛飛團隊僅用16張H100訓了26分鐘,訓出的模型就超越了o1-preview,震動業內。
可以說,DeepSeek-R1已經讓全球AI模型走向了推理新時代。
甚至利用其訓練方法GRPO,AI開源界開始了競賽:看誰能用最少的成本,複現AI的「啊哈時刻」。
而就在剛剛,DeepSeek-R1的推理成本徹底被打下來了!
開源項目Unsloth AI帶來了好消息,不用雲服務,本地也能體驗「Aha」 時刻:
現在可以在本地設備上複現DeepSeek-R1的推理!
只需7GB VRAM,你就能體驗到「Aha」時刻。
Unsloth把GRPO訓練需要的內存減少了80%。
15GB VRAM就可以把Llama-3.1(8B)和Phi-4(14B)轉變為推理模型。

沒有看錯:只需7GB VRAM的GPU,AI模型在本地就能體驗「啊哈時刻」。
什麼是AI的「啊哈時刻」?有什麼作用?
熟悉AI的都知道,對人類很簡單的問題,對AI可能很難。比如:
9.11和9.9相比,哪個大?
但體驗過「Aha」時刻後,AI模型Phi-4就能完成這類問題:從無推理能力的模型,化身為DeepSeek-R1同款推理模式,帶有原始思維鏈、展示推理過程的那種!

總之,如果現在你已經有輸入和輸出數據(比如問題和答案),但沒有CoT或推理過程,那就可以見證GRPO創造的奇蹟了——
它能為你創建推理過程,甚至做出更多!
現在,這個方法已經在AI社區爆火,討論的聲浪越來越高了。

Unsloth推出推理功能
DeepSeek的R1研究揭示了「Aha」時刻,通過群體相對策略優化(Group Relative Policy Optimization,GRPO),在沒有人類反饋的情況下,R1-Zero自動學會了如何分配更多的思考時間。
Unsloth對整個GRPO過程進行了增強,相比Hugging Face+FA2,VRAM使用減少了80%。
這意味著只需7GB VRAM,使用Qwen2.5(1.5B)就能重現R1-Zero的「Aha」時刻。

對於包含其他模型的GRPO,參閱下利雲檔。

此次,unsloth更新主要增強了對DeepSeek-R1-Zero強化學習訓練方法的GRPO支持,減少了對內存的佔用。
主要亮點如下:
15GB VRAM:使用unsloth,你可以將任何最多15B參數的模型(如Llama 3.1(8B)、Phi-4(14B)、Mistral(7B)或Qwen2.5(7B))轉換為推理模型。
最低僅需7GB VRAM,足以在本地訓練你自己的推理模型。
Tiny-Zero團隊曾展示過,使用Qwen2.5(1.5B)可以實現「aha」時刻,但需要2個A100 GPU(160GB VRAM)。而現在,借助Unsloth,只需一個7GB VRAM的GPU就能實現相同的效果。
之前,GRPO僅支持完整微調,但現在已經能夠與QLoRA和LoRA配合使用。
請注意,這並不是微調DeepSeek-R1蒸餾模型或用R1蒸餾數據進行調優(Unsloth已經支持)。實際上,此項目用GRPO將標準模型轉化為「滿血」的推理模型。
GRPO的應用場景:帶有獎勵機制的定製化推理模型,例如法律、醫學等領域;其他需要顯示推理鏈或思維過程的場景。
GRPO帶來的「Aha」時刻
在使用純粹的強化學習(RL)訓練R1-Zero時,DeepSeek觀察到了神奇的「啊哈時刻」——
在沒有任何人類的指導或預定義的指令的情況下,模型竟開始重新評估其初始方法,學會了延長思考時間。
即便只使用GRPO對Phi-4做100步的訓練,結果也一目瞭然:未使用GRPO的模型沒有思考token,使用GRPO訓練後的模型則具有思考token,而且得出了正確答案!

這種「啊哈時刻」表明,GRPO不僅幫助模型提升推理能力,還能讓模型在沒有外部提示的情況下,學會自我反思和調整,從而提高問題解決的質量。
回到「9.11和9.9哪個大?」的問題,沒有GRPO訓練前,Phi-4介紹了如何從左到右按位比較小數,堅持認為雖然十分位上1<9,但百分位上1>0,而9.9可以寫作9.90, 所以:「9.11比9.90大」。
經過GRPO訓練,Phi-4已經能正確分析回答此問題了,而且推理過程清晰,嚴絲合縫——
在推理過程中的第2步,基於十分位的比較,已經得出了正確答案;在第3步,依然比較了9.11和9.90的百分位,但這次AI模型發現比較百分位並不影響在第2步得出的結果。

這就是GRPO的「魔力」。
GRPO是一種強化學習(RL)算法,與近端策略優化(Proximal Policy Optimization,PPO)不同,它不依賴值函數,能夠更高效地優化模型的回答質量。
在項目的Notebook中,使用GRPO訓練模型,能夠自主發展出自我驗證(self-verification)和搜索能力,從而創造出一個迷你「Aha 時刻」。
GRPO的大致流程如下:
1 模型生成多組回答
2 根據正確性或其他設定的獎勵函數,對回答進行評分(不同於使用LLM作為獎勵模型)
3 計算該組回答的平均得分
4 將每個回答的得分與組內平均得分進行比較
5 增強模型對高分回答的偏好
舉例來說,假設要模型解決下列問題:
What is 1+1? >> Chain of thought/working out >> The answer is 2.
What is 2+2? >> Chain of thought/working out >> The answer is 4.
最初,必須收集大量數據來填充工作/思維鏈。
但是,GRPO(DeepSeek使用的算法)以及其他RL算法可以引導模型自動表現出推理能力,並創建推理軌跡。
RL不需要數據,相反需要精心設計的獎勵函數或驗證器。例如,如果它得到了正確答案,就給它打1分;如果有些單詞拚寫錯誤,就減0.1分。以此類推。
強強聯合:在Unsloth中使用GRPO
如果在本地使用GRPO進行訓練,請先安裝必要的依賴項:pip install diffusers。

訓練提示:耐性等待至少300步才能看到獎勵分數的明顯提升;為了確保最佳兼容性,請使用最新版本的vLLM。
Colab示例僅訓練了1小時,結果較一般,要獲得高質量結果,建議訓練至少12小時(但可以隨時停止)。
較小的模型可能無法生成思考token,建議至少使用1.5B參數的模型,正確生成「思考token」(thinking tokens)。
如果使用基礎模型,請確保加載正確的Chat模板(避免格式問題)。
Unsloth現已內置GRPO訓練損失跟蹤功能,無需再使用外部工具(如wandb)。

更多強化學習訓練方法
除了新增GRPO支持,還增加了對Online DPO(在線直接偏好優化)、PPO(近端策略優化)和RLOO(強化學習偏好優化)的支持!
計算機工程專業的碩士生Keith Truongcao,在Unsolth中實現了Online DPO算法。
在TLDR數據集 ,他使用GPT 4o-mini作為判斷模型,與原始模型(下圖用綠色表示)相比,微調後的AI模型勝率都有所提升:Online DPO模型(下圖用紫色表示)的勝率顯著高於原始模型,並且比SFT模型(下圖用紅色表示)高出12%,充分證明了強化學習訓練方法的有效性。

借助Unsloth的優化,在線DPO(Direct Preference Optimization微調的顯存需求大幅降低。當batch size為1且使用梯度累積時,所需顯存僅為20GB。
相比之下,標準的Llama 3.2(10億參數模型) 需要50GB顯存,但在嘗試額外分配2GB顯存時,會發生OOM(內存溢出)錯誤。更令人驚訝的是,即使在配備48GB顯存的A40 GPU上,標準Llama也會直接崩潰。

更多詳情,請參閱Keith的下利雲章,其中包括如何讓在線DPO正常工作更多細節。

另一位活躍的開源貢獻者Joey,在X上也詳細介紹了自己如何在Google Colab上實現GRPO變更的方法。


Unsloth x vLLM:更高吞吐量和更少VRAM消耗
20倍吞吐量,一半VRAM
現在,在微調流程中,可以直接使用vLLM,這使得模型的吞吐量大幅提升,並且可以同時進行微調和推理。

在1x A100 40GB GPU上,使用Unsloth動態4bit量化的Llama 3.2 3B Instruct,吞吐量大約為4000 tokens/s。
在16GB Tesla T4(免費Colab GPU)上,吞吐量大約為300 tokens/s。
而且,因為Unsloth還神奇地去除了vLLM和Unsloth一起加載時的雙重內存使用,因此讓Llama 3.1 8B節省了約5GB VRAM,讓Llama 3.2 3B節約了3GB VRAM。
加載模型時不再需要額外的內存開銷。
Unsloth可以在單張48GB GPU上微調Llama 3.3 70B Instruct,其中Llama 3.3 70B的權重佔用40GB VRAM。
這是Unsloth的原創功能。
而如果不優化內存管理,同時加載Unsloth和vLLM,會導致VRAM雙倍佔用,從而需要至少80GB VRAM才能運行。
而且上手非常快,只要兩步:
安裝vLLM和Unsloth:pip install unsloth vllm。
初始化Unsloth並啟用快速推理:

Unsloth中關於vLLM的發現
1. 現在,vLLM可以加載Unsloth Dynamic 4-比特量化。就像Unsloth的1.58比特動態R1 GGUF一樣,發現將某些層動態量化為4比特,將某些層動態量化為16比特,在減小模型規模的同時,顯著提高精確度。
2. 對於RAM、VRAM效率和最大吞吐量(如分塊預填充標記數、最大序列數等)等設置,還可以自動選擇多個參數。在vLLM中預設啟用-O3並啟用前綴緩存。發現老GPU上的Flashinfer實際上要慢10%。FP8 KV緩存會讓速度慢10%,但吞吐量會翻倍。
3. 在vLLM中通過解析狀態字典,允許加載LoRA,而不是從磁盤加載——可以讓GRPO訓練運行速度提高1.5倍。在vLLM中直接編輯LoRA適配器,相關研究是否活躍。這可以大大提高速度,因為目前版本的算法還做了不必要的GPU數據移動。
4. vLLM會詭異地出現隨機VRAM峰值,尤其是在批量生成時。為此在unsloth中,添加了批量生成功能,以減少內存峰值。
Unsloth團隊介紹
另外值得一提的是,Unsloth目前在Github上有2萬多星,但核心團隊Unsloth AI,只有兩兄弟。

Daniel Han,Unsloth AI的CTO,2021年畢業於雪梨科技大學。2022-2023年,在雪梨的MoonShot AI擔任開源開發者。

Michael Han,Unsloth AI的CEO,2019年畢業於新南威爾斯大學(The University of New South Wales,UNSW)。在實習期間,他曾提高了多個算法實現的速度。
參考資料:
https://unsloth.ai/blog/r1-reasoning
https://x.com/UnslothAI/status/1887562753126408210