基于本文回答
0
评论

大模型中微调的常用方案有哪些?

知识点图片

在大模型(LLM)的微调(Fine-tuning)领域,目前的方案主要可以从参数更新范围(全量 vs. 高效)和训练目标/阶段(指令微调 vs. 对齐)两个维度来分类。

以下是目前业界最常用的微调方案详解:


一、 基于参数更新范围的分类

这是最核心的技术分类,决定了你需要多少显存(VRAM)和算力。

1. 全量微调 (Full Fine-Tuning, FFT)

  • 原理:对模型的所有参数(权重)进行更新。
  • 特点
    • 优点:理论上效果上限最高,能让模型最彻底地适应新领域(如从通用领域转到极度垂直的医学或法律领域)。
    • 缺点:资源消耗极大(通常需要 4-8 倍模型权重的显存),训练速度慢,且容易出现“灾难性遗忘”(Catastrophic Forgetting),即模型忘了原本通用的能力。
  • 适用场景:拥有海量算力(H100/A100集群),且数据量巨大、领域跨度极大的情况。

2. 参数高效微调 (PEFT, Parameter-Efficient Fine-Tuning)

这是目前最主流的方案,旨在冻结大部分模型参数,仅更新极少量的参数,从而大幅降低显存需求。

  • LoRA (Low-Rank Adaptation) —— 【目前最常用】

    • 原理:在模型的 Linear 层旁边增加一个旁路(由两个低秩矩阵 AABB 相乘组成)。训练时冻结原模型权重,只训练这两个小矩阵。
    • 优点:参数量仅为原模型的千分之一甚至万分之一,显存占用极低,效果接近全量微调,且训练后的权重(Adapter)很小,易于分享和切换。
    • 适用场景:绝大多数消费级显卡微调、企业私有化部署。
  • QLoRA (Quantized LoRA)

    • 原理:在 LoRA 的基础上,将原模型的主干权重进行 4-bit 量化(NF4格式),进一步压缩显存,同时利用分页优化器(Paged Optimizers)防止显存爆满。
    • 优点:能在单张消费级显卡(如 RTX 3090/4090)上微调 70B 甚至更大参数的模型。
    • 适用场景:资源受限的个人开发者或中小企业。
  • P-Tuning v2 / Prefix Tuning

    • 原理:在模型的每一层输入前添加可训练的连续向量(Soft Prompts/Prefixes)。
    • 现状:在 ChatGLM 早期版本中很流行,但目前逐渐被 LoRA 取代,因为 LoRA 的稳定性更好,且对推理延迟无影响(LoRA权重可以合并回原模型)。
  • Adapter Tuning

    • 原理:在预训练模型的层之间插入小型的神经网络层(Adapter layers)。
    • 现状:PEFT 的早期形式,现在使用较少,因为会增加推理时的延迟。

二、 基于训练阶段与目标的分类

这部分决定了你“如何教”模型,通常结合上述的 LoRA 或全量微调技术来实施。

1. 有监督微调 (SFT, Supervised Fine-Tuning)

  • 又称:指令微调 (Instruction Tuning)。
  • 数据格式Prompt (输入) + Response (输出) 对。
  • 目的:让模型学会“听懂人话”,按照指令格式输出内容。
  • 流程:这是微调的第一步。比如你有一个医疗问答数据集,通过 SFT 让模型学会医生回答问题的语气和逻辑。

2. 对齐微调 (Alignment Tuning)

在 SFT 之后,为了让模型更符合人类价值观(有用、诚实、无害),通常会进行这一步。

  • RLHF (Reinforcement Learning from Human Feedback)

    • 方案:ChatGPT 采用的经典方案。包含三个阶段:SFT -> 训练奖励模型 (Reward Model) -> 使用 PPO (近端策略优化) 算法强化学习。
    • 缺点:流程极其复杂,训练不稳定,超参数极难调试,对显存要求极高。
  • DPO (Direct Preference Optimization) —— 【目前最火】

    • 原理:直接偏好优化。跳过了独立的“奖励模型”训练和复杂的 PPO 过程。直接使用人类偏好数据(即:对于同一个问题,答案 A 优于 答案 B)构建损失函数来优化模型。
    • 优点:数学上等价于 RLHF,但稳定得多,计算成本低,效果往往更好。
    • 现状:目前开源社区(如 HuggingFace Zephyr, Llama-3-Instruct)微调的主流选择。
  • ORPO / KTO / IPO

    • 原理:DPO 的变体。例如 ORPO 不需要 SFT 阶段,直接在预训练模型上做偏好对齐;KTO 不需要成对的偏好数据,只需要知道某个答案是“好”还是“坏”。

三、 常用工具与框架

如果你要动手微调,通常会用到以下框架:

  1. Llama-Factory: 目前最流行的“零代码”或低代码微调工具,支持 WebUI 界面,集成了 LoRA, QLoRA, DPO 等几乎所有主流技术,适配国内主流模型(Qwen, Yi, ChatGLM, Baichuan 等)。
  2. HuggingFace PEFT: 官方库,专注于参数高效微调。
  3. DeepSpeed / FSDP: 微软和 Meta 推出的分布式训练框架,用于多卡/多机加速全量微调。
  4. Unsloth: 一个新兴的优化库,能让 Llama/Mistral 等模型的微调速度提升 2-5 倍,且显存占用更低(主要针对 LoRA/QLoRA)。

总结建议

  • 没钱/显卡少:使用 QLoRA (4-bit) + SFT
  • 有一定资源/追求效果:使用 LoRA (16-bit) + SFT,如果还需要对齐价值观,接着做 DPO
  • 土豪/科研机构/彻底改行:使用 全量微调 (Full Fine-Tuning)
  • 新手入门:推荐使用 Llama-Factory 配合 Unsloth 进行实验。
右滑查看面试常问