LLM 微调
微调(Fine-tuning)是让 LLM 适配特定用途最有效的方法之一。它使用新的、面向特定任务的数据,在预训练模型的基础上继续训练过程。这可以涉及更新整个模型,也可以只更新特定层。
微调背后的关键驱动力是效率。与其从头训练一个模型(这极其耗费资源),在已经通过海量数据集学到通用语言模式的基座模型之上进行构建要容易得多、也划算得多。微调会针对你的特定任务强化这些宽泛的能力。
例如,微调可以显著改进模型的:
- 领域专业知识: 让模型适配法律、医疗或编程相关的任务。
- 指令遵循: 确保模型在其回复中遵循特定的格式、语气或风格。
- 安全与对齐: 强化模型如何处理敏感的或高风险的提示。
微调在定制技术栈中的位置
微调只是定制化的一种方法。它会改变模型权重,这使其区别于提示词工程、函数调用和结构化输出等其他技术。
这种区别在生产环境中很重要。运行时技术通常测试更快、更容易回滚,并且在不同模型提供商之间更具可移植性。当你想要的行为是稳定的、在大量请求中反复出现、并且无法仅靠提示或检索到的上下文干净地处理时,微调更为合适。
一个实用的改进循环通常如下:
- 用真实或有代表性的输入构建评估集。
- 改进提示、示例、检索、工具和输出校验。
- 用同一个评估集衡量结果。
- 只有当剩余的失败是系统性的、且值得固化到模型中时,才进行微调。
常见的微调框架
微调 LLM 并不一定意味着要从零开始构建一切。有几个开源框架专门用于简化这一过程。
这些工具为在自定义数据集上训练开放权重模型提供了开箱即用的支持。它们让你不必编写复杂的训练代码,就能更容易地应用现代优化技术。
这些框架中的许多也以效率为设计目标,帮助用户在有限的硬件上减少内存占用并加速训练。
Axolotl
Axolotl 是一个用户友好的微调框架,用于简化 LLM 的后训练。无论你是在做全量微调、指令微调、LoRA/QLoRA 还是对齐工作,Axolotl 都能让你轻松上手,而无需深入研究训练的内部机制。
它构建在 Hugging Face 的 Transformers 库之上,但将大部分复杂性封装在一个简洁的、基于 YAML 的配置系统中。你在单个配置文件中定义训练设置,如数据集、模型和训练策略。其余的工作由 Axolotl 处理。
主要特性:
- 支持 Llama、Pythia、Falcon 和 MPT 等流行的开放权重模型。
- 灵活的训练选项: 全量微调、LoRA、QLoRA、ReLoRA 和 GPTQ。
- 兼容 xFormers、FlashAttention、ROPE 缩放、Liger kernel 和样本打包等先进技术。
- 可扩展至单 GPU 环境,或使用 FSDP 或 DeepSpeed 进行多 GPU 训练。
- 可通过 Docker 在本地或云端基础设施上轻松运行。
对于希望专注于数据和任务、而不是深度学习内部细节的用户来说,Axolotl 是非常好的选择。凭借合理的默认设置、强大的社区支持以及多种集成,它已成为对开放模型进行实用微调的首选工具。
Unsloth
Unsloth 是一个微调框架,旨在让 LLM 的训练更快、更轻量、更易上手,尤其是在有限的硬件上(例如免费的 Google Colab GPU)。
Unsloth 在内核层面做了深度优化。它使用 Triton 实现的自定义注意力(Attention)内核,可将训练速度提升 2 倍,内存占用最高减少 80%。如果你想了解更多关于 Triton 相对于 CUDA 和基于编译器的方法所处位置的知识,请参阅内核优化工具。
Unsloth 团队与 Llama 4、Mistral、Qwen、Gemma 和 Phi 等模型的开发者直接合作,常常贡献能改善提示处理、准确性和整体稳定性的 bug 修复与更新。
主要特性:
- 支持微调 Llama、Mistral、Phi、Gemma 等开放权重模型。
- 支持 LoRA、QLoRA、全量微调,甚至强化学习(DPO、ORPO)。
- 高度可定制: 可按需编辑聊天模板、数据集格式和训练配置。
- 兼容 Ollama、llama.cpp 和 vLLM 等推理工具。
- 可轻松在 Google Colab、Kaggle 等平台以及较旧的消费级 GPU 上运行。
如果你正尝试在资源受限的环境中微调模型,Unsloth 是首选。它旨在用最少的资源做尽可能多的事情。
Torchtune
Torchtune 是一个用于微调 LLM 的 PyTorch 原生库。它专为那些希望完全掌控训练流水线、而不依赖高层抽象或不透明的训练框架的用户而设计。
Torchtune 遵循 PyTorch 的核心原则: 可用性高于一切。它避免不必要的抽象,并强调:
- 原生的 PyTorch 组件
- 组合优于继承
- 清晰的训练逻辑,而非隐藏的框架机制
- 在每个层面都践行测试驱动开发和正确性
主要特性:
- 用纯 PyTorch 实现的模块化 LLM。
- 为全量微调、LoRA 和 QLoRA 等各类微调技术提供训练配方。
- 使用 YAML 文件轻松配置,以管理数据集、模型、超参数和硬件设置。
- 通过检查点转换工具与模型库实现互操作。
如果你更喜欢直接用 PyTorch 工作,并希望定制从数据预处理到训练逻辑的一切,Torchtune 是理想选择。它尤其适合重视透明代码、可复现性以及直接访问模型内部结构的研究人员、开发者和工程师。
LLaMA Factory
LLaMA Factory 是一个为简单和高效而构建的开源微调工具包。它支持超过 100 个 LLM,既提供命令行接口,也提供支持零代码工作流的 Web UI。
与许多面向专家用户的框架不同,LLaMA Factory 被设计为对初学者友好。通过其 Web 界面,用户可以选择模型、上传数据集、调整少量参数并启动训练,完全无需编码。
但它不仅仅适合初学者。在幕后,LLaMA Factory 支持多种调优方法,使其对经验丰富的研究人员和开发者同样有用。
主要特性:
- 微调方法: 有监督 SFT(包括多模态)、奖励建模和强化学习(PPO、DPO、ORPO、KTO)。
- 量化与适配器支持: 16 位全量微调、冻结微调、LoRA,以及通过 GPTQ、AWQ、HQQ 和 AQLM 等格式实现的 2–8 位 QLoRA。
- 高级优化: GaLore、DoRA、LongLoRA、LoftQ、LLaMA Pro、深度混合(Mixture-of-Depths)等。
与其自己微调模型,你通常可以直接使用 Hugging Face 上已有的微调或指令微调模型。它托管了大量社区发布和官方发布的微调模型,可直接开箱使用。同时,如果你想完全掌控并计划自己微调模型,它也提供基础模型和基座检查点。在实践中,团队经常在 Hugging Face 上同时探索这两种选项,然后决定是复用现有模型,还是投入资源进行自定义微调。
通过托管服务提供商进行微调
通过托管服务提供商进行微调可能很方便,因为你无需自己管理训练基础设施。不过,这也意味着你的微调模型依赖于该提供商及其训练所基于的基础模型。
OpenAI 的自助微调更新就是一个有用的例子。2026 年 5 月 7 日之后,新组织将无法再创建微调作业,而现有的活跃客户只能在 2027 年 1 月 6 日之前创建新作业。现有的微调模型仍可运行,直到其基础模型被弃用。
这并不意味着托管微调是个糟糕的选择。它意味着团队应将托管微调模型视为一个需要持续维护的生产制品。跟踪基础模型的生命周期,保留评估集以便进行替换测试,并了解在需要时是否可以迁移到另一个托管模型或开源微调方案。
常见问题
微调与推理有什么区别?
微调是一种小规模的训练形式。你使用自己的数据集更新模型的部分权重。推理完全不会改变权重,它只是运行现有模型来产生输出。
下面是一个更清晰的并排对比:
| 项目 | 推理 | 微调 |
|---|---|---|
| 目的 | 生成输出(答案、图像等) | 让模型在特定任务或领域中表现得更好 |
| 是否更新权重 | 否,权重保持不变 | 是,会更新部分或全部权重 |
| 所需数据 | 只需输入的提示 | 面向你使用场景的数据集(通常带标签) |
| 计算成本 | 低(单次前向传播) | 高(多轮次训练) |
| 时间 | 毫秒到秒 | 数分钟到数天(取决于模型大小与数据量) |
| 模型变化 | 模型保持不变 | 获得模型的新版本/检查点 |
| 示例 | 向 LLM 提问 | 在内部文档或医疗问答上微调的 Llama 3 |
LLM 微调与提示词工程等其他技术相比如何?
提示词工程通过调整你向模型提问的方式来获得更好的答案。它快速、廉价,且不需要训练,但也有其局限。较长的提示可能会变得混乱,模型仍可能出现不一致的行为。
微调会真正改变模型。你向它提供"好"答案的示例,它就能自己学会遵循这种模式。对于长期使用来说,它更可靠,尤其是当你需要一致的语气、领域知识或严格的格式时。
简而言之,提示词工程非常适合早期探索,而微调能让你在规模化场景下获得稳定、可复现的性能。
什么时候应该避免微调?
当主要问题是信息缺失或信息频繁变化时,应避免微调。此时 RAG 流水线、提示模板或工具调用通常是更好的选择,因为它们可以在推理时获取最新数据。
当你不具备可靠的评估集时,微调也不是一个好的第一步。没有评估集,很难判断微调后的模型是真正改进了目标行为,还是仅仅改变了风格。
最后,如果部署路径尚不确定,应避免微调。微调模型依赖于基础模型、训练方法、服务技术栈和提供商的生命周期。如果你预计不久后会更换提供商或基础模型,在系统稳定之前,应把更多行为保留在可移植的运行时逻辑中。
微调一个 LLM 需要多少数据?
这取决于任务。许多团队用几千个高质量示例就能获得不错的结果。对于复杂领域,可能需要数万甚至数十万个示例。质量比数量更重要。
微调 LLM 需要强大的 GPU 吗?
不一定。Unsloth、Axolotl 和 LLaMA Factory 等框架支持 LoRA 和 QLoRA 等高效方法,它们可以让你在单张消费级 GPU 甚至 Google Colab 上微调大型模型。全量微调通常需要更强的硬件。