8GB显卡玩转LLM后训练:SFT、DPO与GRPO实战指南

引言:大模型训练不再是巨头专利
长期以来,大语言模型(LLM)的训练和微调被认为是资金雄厚的科技巨头才玩得起的游戏——动辄成百上千张 A100/H100 显卡,天价的电费与算力开销,让普通开发者望而却步。然而,随着参数高效微调(PEFT)、量化技术以及各类训练算法的成熟,情况正在悄然改变。
近日,一个名为「Minimal LLM Post-Training Experiments on an 8GB GPU」的项目在 Hacker News 上引发关注。该项目展示了如何在仅有 8GB 显存的消费级 GPU 上完成 LLM 的完整后训练(Post-Training)流程,涵盖 SFT、DPO 和 GRPO 三种主流方法。这对于希望入门 LLM 微调、却苦于没有高端硬件的个人开发者和学生而言,无疑是一个极具价值的实践参考。

什么是 LLM 后训练(Post-Training)
后训练是指在预训练模型(Pre-trained Model)的基础上,通过额外的训练步骤让模型更好地对齐人类意图、遵循指令或适应特定任务的过程。一个完整的现代 LLM 训练链路通常包括:
- 预训练(Pre-training):在海量无标注文本上进行自监督学习,让模型掌握语言的基本规律。
- 后训练(Post-training):在预训练模型上进行指令微调与偏好对齐,让模型「听话」且「有用」。
预训练阶段通常采用下一个词预测(Next Token Prediction)等自监督目标,模型在数万亿 Token 的语料上学习语法、语义和世界知识。这一阶段的计算成本极为高昂——据估计,GPT-3 的预训练花费了约 460 万美元,而更大规模的模型如 GPT-4 的训练成本可能超过 1 亿美元。预训练完成后的模型虽然具备强大的语言理解和生成能力,但它本质上是一个「文本补全器」,并不天然具备遵循指令、拒绝有害请求等对齐能力。这是因为预训练的目标函数仅仅是最大化下一个 Token 的预测概率,模型学到的是互联网文本的统计分布,而非「如何成为一个有用的助手」。后训练正是弥补这一鸿沟的关键步骤,它将一个通用的语言模型转化为有用且安全的 AI 助手。OpenAI 在 InstructGPT 论文中首次系统化地提出了这一从预训练到对齐的完整范式,此后该流程成为了行业标准。
该项目聚焦的正是后训练环节,具体实现了三种关键技术。
SFT:监督微调——教模型「怎么回答」
**SFT(Supervised Fine-Tuning,监督微调)**是后训练的第一步,也是最基础的一步。它使用「指令-回答」这样的成对数据,通过标准的监督学习方式,让模型学会以期望的格式和风格回应用户的指令。可以理解为,SFT 是在教模型「应该怎么回答问题」。SFT 所使用的数据通常来自人工标注——标注员根据给定的指令编写高质量回答,或者对模型生成的多个回答进行筛选和编辑。近年来也出现了用更强模型(如 GPT-4)生成 SFT 数据的「蒸馏」方式,如 Alpaca、Vicuna 等知名开源模型都采用了这种方法。SFT 数据的质量直接决定了模型输出的风格和能力上限,业界实践表明,数千到数万条高质量 SFT 数据往往比数百万条低质量数据效果更好。
在 8GB 显存的约束下,SFT 通常需要借助 LoRA(低秩适配)或 QLoRA(量化 + LoRA)等技术,仅训练少量新增参数,从而大幅降低显存占用。LoRA 的核心思想源自一个关键观察:模型微调时的权重变化矩阵具有低秩特性,可以用两个小矩阵的乘积来近似。这一发现最早由微软研究院的 Hu 等人在 2021 年提出,其灵感来自于 Aghajanyan 等人的研究——预训练语言模型在特定任务上微调时,参数的变化实际上存在于一个很低维度的子空间中。具体来说,对于一个 d×d 的权重矩阵 W,LoRA 不直接更新 W,而是学习两个矩阵 A(d×r)和 B(r×d),其中 r 远小于 d(通常为 4-64)。前向传播时,输出变为 Wx + BAx,其中 BA 就是对原始权重的低秩增量。这样可训练参数从 d² 降低到 2dr,减少数个数量级。例如对于 d=4096、r=16 的情况,参数量从约 1677 万降低到约 13 万,减少了 128 倍。
QLoRA 则在此基础上进一步引入 4-bit NormalFloat(NF4)量化来存储冻结的基础模型权重,并使用双重量化(Double Quantization)和分页优化器(Paged Optimizers)来进一步压缩显存占用。NF4 是一种信息论最优的数据类型,它针对正态分布的神经网络权重进行了量化区间的优化设计,使得每个量化级别所覆盖的概率密度相等,从而最小化量化误差。双重量化是对量化常数(quantization constants)本身再进行一次量化,平均每个参数可额外节省约 0.37 bit 的显存。分页优化器则利用 NVIDIA 统一内存的页面管理机制,当 GPU 显存不足时自动将优化器状态转移到 CPU 内存,避免因瞬时显存峰值导致的 OOM(Out of Memory)错误。这些技术的组合使得在单张消费级 GPU 上微调数十亿参数的模型成为可能——QLoRA 论文展示了在单张 48GB A6000 上微调 65B 参数模型的案例,而在 8GB 显卡上微调 3B 级别模型也完全可行。
DPO:直接偏好优化——让模型学会「选择更好的答案」
**DPO(Direct Preference Optimization,直接偏好优化)**是近年来广受欢迎的偏好对齐方法。传统的 RLHF(基于人类反馈的强化学习)流程复杂,需要单独训练奖励模型并使用 PPO 等强化学习算法,工程实现门槛高、训练不稳定。
要理解 DPO 的价值,首先需要了解传统 RLHF 的完整流程:它包含三个阶段——首先进行 SFT 获得初始策略模型;然后收集人类对模型输出的偏好排序数据(通常是给定一个提示,展示两个不同的模型回答,让标注员选择哪个更好),训练一个独立的奖励模型(Reward Model)来预测人类偏好分数,奖励模型通常基于 Bradley-Terry 模型来建模成对比较的概率;最后使用 PPO(Proximal Policy Optimization)算法,以奖励模型的评分为信号对策略模型进行强化学习优化,同时用 KL 散度惩罚项防止策略模型偏离参考模型太远。这一流程需要同时在 GPU 中加载策略模型、参考模型、奖励模型和价值网络(Value Network/Critic)四个模型,显存需求极大——对于一个 7B 参数的模型,仅加载这四个模型就需要约 56GB 的 FP16 显存。此外,PPO 训练中涉及多步采样(需要用策略模型在线生成回答)和复杂的超参数调优(包括学习率、KL 系数、GAE 参数等),训练过程容易出现奖励黑客攻击(Reward Hacking)——即模型学会利用奖励模型的漏洞获取高分,但实际输出质量反而下降——等不稳定现象。
DPO 的创新之处在于,它跳过了显式的奖励模型训练,直接从「偏好数据」(即哪个回答更好)中优化策略模型,将复杂的强化学习问题转化为一个更简单的分类式损失函数。DPO 由斯坦福大学的 Rafailov 等人于 2023 年提出,其关键数学洞察是:在 RLHF 的 KL 约束优化问题中,存在一个封闭解,可以将最优奖励函数表达为策略模型相对于参考模型的对数概率比的函数。将这一关系代入 Bradley-Terry 偏好模型后,就得到了一个仅依赖于策略模型和参考模型的损失函数,形式上类似于带有隐式奖励边际的交叉熵损失。因此只需加载策略模型和参考模型两个副本即可完成训练,显存需求降低约一半。DPO 的损失函数可以直观理解为:增加被偏好回答的生成概率,同时降低被拒绝回答的生成概率,且优势越大的对比对梯度信号越强。这不仅简化了流程,也降低了对硬件的要求,非常适合在资源受限的环境中运行。自 DPO 发表以来,已经衍生出众多变体,如 IPO(Identity Preference Optimization)、KTO(Kahneman-Tversky Optimization,只需要单条回答的好/坏标注)、ORPO(Odds Ratio Preference Optimization)等,形成了一个活跃的研究方向。
GRPO:组相对策略优化——低成本的推理能力强化
**GRPO(Group Relative Policy Optimization,组相对策略优化)**是由 DeepSeek 团队提出并在其推理模型中大放异彩的强化学习算法。与 PPO 需要额外的价值网络(Critic)不同,GRPO 通过对同一提示生成的一组回答进行相对比较,来估计优势函数,从而省去了价值网络的开销。
具体而言,GRPO 的做法是:对每个输入提示(prompt),使用当前策略模型采样生成一组(通常为 8-64 个)回答,然后用规则或奖励函数对这组回答打分,再以组内分数的相对排名(通过减去组内均值并除以组内标准差进行归一化,得到优势估计)来更新策略。这种基于组内相对比较的优势估计方法有一个重要好处:它天然地对奖励函数的尺度和偏移不敏感,即使奖励函数的绝对值不够准确,只要能正确区分组内回答的相对质量,就能提供有效的训练信号。在数学推理等任务中,奖励函数可以非常简洁——例如仅检查最终答案是否正确(结果奖励),或者验证每一步推理是否合理(过程奖励)。由于优势函数直接从组内比较中获得,无需额外训练和加载价值网络,这使得总显存需求减少约一半。
DeepSeek-R1 在数学推理和代码生成任务中大量使用 GRPO 进行强化学习训练,配合过程奖励模型(Process Reward Model, PRM),使模型学会了逐步推理的链式思考(Chain-of-Thought)能力。过程奖励模型与结果奖励模型(Outcome Reward Model, ORM)不同,它对推理链中的每一步都给出评分,能够更精细地引导模型学习正确的推理过程而非仅仅猜测正确答案。DeepSeek-R1 的实验结果表明,经过 GRPO 训练后,模型在 AIME(美国数学邀请赛)、MATH-500 等数学推理基准上,以及 Codeforces 编程竞赛评级中,达到了与 OpenAI o1 相当甚至更优的水平。更令人瞩目的是,DeepSeek 团队观察到模型在 GRPO 训练过程中自发涌现了自我验证、回溯修正等推理行为,这些能力并非通过 SFT 显式教授,而是强化学习压力下的自然产物。
这一特性使得 GRPO 在显存占用上更为友好,同时在提升模型推理能力方面表现突出。该项目将 GRPO 纳入其中,意味着开发者可以在低成本硬件上亲手体验当下最前沿的推理模型训练范式。
为何「8GB 显存」方案值得关注
8GB 显存对应的是诸如 RTX 3060 Ti、RTX 4060 等中端消费级显卡,甚至是部分笔记本 GPU。项目能在如此有限的资源下跑通完整的后训练流程,背后依赖的是一系列工程优化:
-
量化技术:将模型权重以 4-bit 或 8-bit 精度加载,显著压缩显存占用。模型量化是将高精度浮点数(如 FP32、FP16)表示的权重转换为低精度整数(如 INT8、INT4)的过程。早期的量化方法(如 GPTQ,由 Frantar 等人于 2022 年提出)采用训练后量化(Post-Training Quantization),通过少量校准数据集和近似二阶信息(基于 OBS/OBQ 框架)来一次性完成量化,在保持模型精度的同时实现高压缩比。后来出现的 bitsandbytes 库(由 Dettmers 等人开发)实现了即时量化(Just-in-time Quantization),支持在模型加载时直接以低精度存储权重,并在计算时动态反量化到高精度进行矩阵运算。最新的 AWQ(Activation-aware Weight Quantization,由 MIT 的 Lin 等人提出)则基于一个关键观察——并非所有权重对模型输出同等重要,那些对应于大激活值的权重通道更为关键——因此通过按通道缩放来保护重要权重,在相同比特数下实现更低的量化误差。4-bit 量化可以将模型的显存占用压缩到 FP16 的四分之一——例如一个 7B 参数的模型从约 14GB(FP16 下每个参数 2 字节)压缩到约 3.5-4GB(4-bit 下每个参数约 0.5 字节,加上量化元数据的额外开销),使得在 8GB 显卡上加载和训练成为可能。值得注意的是,4-bit 量化带来的精度损失在大多数任务上是可接受的——研究表明,4-bit 量化的 7B 模型在很多基准测试上的表现接近甚至匹配 FP16 精度的较小模型。
-
参数高效微调(PEFT):仅微调 LoRA 适配器等极少量参数,而非全量参数更新。PEFT 是一类微调策略的统称,除 LoRA 外还包括 Prefix Tuning(在输入前添加可学习的虚拟 token)、Adapter(在 Transformer 层中插入小型瓶颈网络)、IA3(通过可学习向量缩放键值和前馈层的激活)等方法。Hugging Face 的 PEFT 库将这些方法统一封装,使得开发者可以方便地在各种基础模型上应用不同的参数高效微调策略。在 8GB 显存的场景下,PEFT 的价值不仅在于减少可训练参数带来的显存节省,更重要的是优化器状态(如 Adam 的一阶和二阶动量)只需要为这些少量参数维护,这通常是全量微调中最大的显存开销来源之一。
-
梯度检查点(Gradient Checkpointing):以计算换显存,减少中间激活值的存储。在标准的反向传播中,前向传播时所有层的中间激活值都需要保存在显存中,用于反向传播时计算梯度。对于一个 L 层的 Transformer 网络,每层的激活值大小与 batch_size × sequence_length × hidden_dim 成正比,对于深度网络,这些中间激活值的显存占用往往超过模型参数本身——例如一个 7B 参数模型在序列长度 2048、batch size 为 1 的情况下,激活值可能占据 8-12GB 显存。梯度检查点(最初由 Chen 等人在 2016 年提出,也称为梯度重计算或 Rematerialization)的策略是:前向传播时只保存部分关键层(checkpoint 层)的激活值,其余层的激活值在反向传播需要时从最近的 checkpoint 重新进行前向计算得到。如果将 L 层网络均匀分成 √L 个段,每段 √L 层,则只需保存 √L 个 checkpoint 的激活值,同时在反向传播每个段时临时计算该段内的激活值。这种「时间换空间」的方法可以将激活值的显存占用从 O(L) 降低到 O(√L),代价是约 30-33% 的额外计算时间(相当于多做了一次前向传播)。在 8GB 显存的极限场景下,这一技术几乎是必选项——没有梯度检查点,即使使用 QLoRA,也很难在如此有限的显存中完成反向传播。
-
小模型选型:选择参数量适中的基础模型(如 1B-3B 级别),在能力与资源间取得平衡。当前主流的开源小模型包括 Meta 的 Llama 3.2(1B/3B)、Microsoft 的 Phi-3/Phi-4-mini(3.8B)、Google 的 Gemma 2(2B)、Qwen2.5(0.5B/1.5B/3B)等。这些模型虽然参数量远小于旗舰级的 70B 或 405B 模型,但通过更高质量的训练数据和更先进的架构设计,在许多任务上已经展现出令人惊讶的能力。例如 Phi-3-mini 在多个基准上超越了早期的 7B 模型,证明了小模型经过精心训练后的潜力。
这些技术的组合,让「在游戏本上训练自己的对齐模型」从科幻走向现实。
项目的实际价值与局限性分析
从积极的一面看,这类「极简」项目的价值在于教育与祛魅。它把原本被神秘化、高门槛化的 LLM 后训练流程拆解为可复现的最小实验,让学习者能够真正理解 SFT、DPO、GRPO 之间的区别与联系,而不是停留在论文的公式层面。对于希望进入 AI 领域的开发者,这是极佳的动手起点。
当然,我们也应清醒地认识到其局限性:
- 8GB 显存所能承载的模型规模有限(通常为 1B-3B 参数的量化模型),训练出的模型在能力上无法与动辄数百 GPU 训练的旗舰模型相提并论。具体来说,小模型在需要大量世界知识的开放域问答、复杂多步推理、长文档理解等任务上的表现与大模型差距明显。
- 训练数据量与训练步数也受限于时间成本,GRPO 等需要多次采样的方法在小显存下的吞吐量极低。例如 GRPO 需要对每个提示生成一组回答(假设 16 个),这意味着推理吞吐量直接限制了训练速度。在 8GB 显卡上,一个 3B 模型的单次推理生成可能需要数秒,16 次采样加上梯度更新,一个训练步可能需要数分钟,这使得大规模 GRPO 训练在时间上不切实际。
- 这类项目更多是学习与原型验证的工具,而非生产级方案。真正的生产场景通常需要更大的训练数据、更充分的超参数搜索、多次评估迭代,以及针对安全性和可靠性的红队测试(Red Teaming),这些都超出了 8GB 显存方案的能力范围。
从技术趋势看,「低资源 LLM 训练」正是一个持续升温的方向。随着模型蒸馏技术(如 DeepSeek-R1 将推理能力蒸馏到小模型)的进步、更高效的量化算法(如 QuIP#、AQLM 等向量量化方法已经将有效比特率推向 2-bit 以下)出现,以及硬件厂商对 AI 推理加速的持续投入(如 NVIDIA 的 RTX 50 系列内置的 Tensor Core 对低精度运算的原生支持、AMD RDNA 4 架构的 AI 加速器,以及苹果 M 系列芯片统一内存架构对大模型推理的友好性),未来在消费级设备上完成有意义的模型定制将越来越切实可行。
结语:动手实验是理解大模型的最佳路径
从 SFT 的指令跟随,到 DPO 的偏好对齐,再到 GRPO 的推理增强,这个 8GB 显存项目用最精简的方式串起了现代 LLM 后训练的三大核心技术。它传递出一个清晰的信号:大模型的训练与微调正在加速民主化。
对于每一位对 AI 技术抱有好奇心的开发者来说,不妨从这样一个可以在自己电脑上跑起来的小项目开始,亲手触摸大模型对齐的内在机理。真正的理解,往往始于一次动手实验。
相关推荐

遗传算法+神经网络:登机效率超越Steffen法9.6%
Reddit开发者用遗传算法结合多层感知机(MLP)优化飞机登机顺序,在模拟中实现比Steffen方法快9.6%的登机效率。本文拆解其技术思路、实际意义与局限性。

DeepSeek V4 Pro与Grok 4.6同日发布:AI大厂Agent之战全面打响
DeepSeek V4 Pro、Grok 4.6、腾讯混元WorldCloud、阿里万亿开源模型同日发布,Agent能力成主战场,价格战全面开打。深度解析四大发布的核心亮点与产业趋势。

Gmail点号忽略机制为何导致邮件误送给同名用户
解析Gmail地址容错机制如何导致邮件误送问题。深入分析点号忽略、大小写归一化等设计特性,探讨同名用户频繁收到他人邮件的根源及应对策略。