我们知道 Deepseek R1 核心的贡献是揭示了一个“aha”时刻,在 R1-Zero 中通过使用 GRPO (Group Relative Policy Optimization)在没有人类反馈的情况下自主学会了分配更多的思考时间。
开源社区也在其他模型上复现了类似的表现,不过成本很高,比如为Qwen2.5(1.5B)实现推理也需要 160G 显存,根本不是个人可以承受的。
但是今天 Unsloth AI 优化了优化了整个 GRPO 流程,让这个流程的显存占用节省了 80% ,
极限情况下你甚至可以用 8G 显卡搞定整个过程训练自己的推理模型
。
注意不是对 R1 蒸馏模型微调,而是将标准模型转化为完整的推理模型!
核心要点:
他们还提供了Colab笔记本,直接运行就行,这个可以直接将 Llama 8B 变成推理模型:
https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.1_(8B)-GRPO.ipynb
GRPO + “aha”时刻
Deepseek 的研究人员在用纯强化学习(RL)训练 R1-Zero 时观察到了一个“顿悟时刻”。该模型在没有人类指导或预设指令的情况下,通过重新评估其初始方法,学会了延长其思考时间。
在一个测试示例中,他们仅使用 GRPO 对 Phi-4 进行了 100 步的训练,结果已显而易见。未采用 GRPO 的模型不具备思维标记,而经过 GRPO 训练的模型不仅拥有该标记,还给出了正确答案。
这种魔法可以通过 GRPO 重现,这是一种无需依赖价值函数即可高效优化响应的强化学习算法,与依赖价值函数的近端策略优化(PPO)不同。Unsloth AI 用 GRPO 训练模型,旨在使其自主发展出自我验证和搜索能力——创造一个小小的“顿悟时刻”。
工作原理:
最初,人们需要收集大量数据来填充推理过程或思维链条。
但 GRPO(DeepSeek 使用的算法)或其他强化学习算法能够引导模型自动展现推理能力并生成推理轨迹。
相反,他们需要创建良好的奖励函数或验证器。
例如,如果模型得出正确答案,就给它 1 分;如果某些单词拼写错误,就扣 0.1 分,以此类推!他们可以提供许多函数来奖励这一过程。
Unsloth 中的 GRPO 如何使用
如果在本地使用 GRPO 与 Unsloth,请同时“pip install diffusers”,因为它是必需的依赖项。
请至少等待 300 步,奖励才会实际增加,并请使用最新版本的 vLLM。请记住,在 Colab 上的示例仅训练了一小时,因此结果并不理想。为了获得良好的结果,需要至少训练 12 小时(这是 GRPO 的工作原理),但请记住,这并不是强制性的,可以随时停止。
建议将 GRPO 应用于参数至少为 1.5B 的模型,以确保正确生成思维标记,因为较小的模型可能无法做到。如果使用的是基础模型,请确保拥有聊天模板。GRPO 的训练损失跟踪现已直接集成到 Unsloth 中,无需再依赖如 wandb 等外部工具。
Unsloth x vLLM:吞吐量提升 20 倍,VRAM 节省 50%
现在,你可以直接在微调堆栈中使用 vLLM,这大大提高了吞吐量,并允许您同时进行模型微调和推理!在 1 块 A100 40GB 显卡上,使用 Unsloth 对 Llama 3.2 3B Instruct 的动态 4 位量化,预计可达每秒 4000 个Token左右。而在 16GB 的 Tesla T4(免费 Colab GPU)上,您也能获得每秒 300 个Token的速度。
他们还神奇地消除了同时加载 vLLM 和 Unsloth 时的双倍内存占用,使得 Llama 3.1 8B 节省了约 5GB,Llama 3.2 3B 节省了 3GB(灵感来源于 Boris)。Unsloth 最初能够在 1 块 48GB GPU 上微调 Llama 3.3 70B Instruct,其中 Llama 3.3 70B 权重占用 40GB 显存。如果不消除双倍内存占用,同时加载 Unsloth 和 vLLM 时将需要>=80GB 的显存。
但有了 Unsloth,你仍能在不到 48GB 的显存中微调并享受快速推理的优势!要使用快速推理,首先安装 vllm,并通过 fast_inference 实例化 Unsloth: