重要提示:如需以 Markdown 形式查看本页,请在 URL 后追加 `.md`。 完整文档索引见 llms.txt
跳到主要内容
完整文档索引见 llms.txt。 在任意 URL 后追加 `.md` 即可查看该页面的 Markdown 版本。

LLM 微调

微调(fine-tuning)是让 LLM 适配特定用例最有效的方法之一。它会在一个预训练模型 上继续训练,使用新的、面向任务的数据。这既可以更新整个模型,也可以只更新其中某些 层。

推动微调的重要原因之一是效率。与从零开始训练一个模型相比(这会极度消耗资源), 在已经从海量数据中学到通用语言模式的 base model 之上继续构建,要容易得多、 成本也低得多。微调的作用,就是把这些广泛能力进一步打磨到适合你的具体任务。

例如,微调可以显著提升模型在以下方面的表现:

  • 领域专长:让模型适应法律、医疗或编程相关任务。
  • 遵循指令:确保模型在响应中遵守特定格式、语气或风格。
  • 安全性与对齐:强化模型如何处理敏感或高风险 prompt

微调在定制化技术栈中的位置

微调只是定制化的一种方法。它会改变模型权重,因此它与 prompt engineeringfunction calling 以及 structured outputs 等其他技术不同。

这种差异在生产环境中很重要。运行时技术通常更容易测试、回滚更简单,也更容易在不同 模型提供方之间迁移。只有当你想要的行为比较稳定、会在很多请求中反复出现,而且无法 仅靠 prompt 或检索到的上下文干净地解决时,微调才更合适。

一个务实的改进闭环通常是这样的:

  1. 基于真实或有代表性的输入建立一个评估集。
  2. 改进 prompts、示例、检索、工具调用和输出校验。
  3. 使用同一个评估集测量结果。
  4. 只有当剩余失败是系统性的,并且值得固化进模型时,才进行微调。

常见微调框架

微调 LLM 并不意味着你必须从头搭建一切。已经有多个开源框架专门用于简化这一过程。

这些工具开箱即用地支持在自定义数据集上训练开放权重模型。它们让你更容易应用现代 优化技术,而不必自己编写复杂的训练代码。

其中很多框架也以效率为设计目标,帮助用户降低内存占用并加快训练速度,即使在硬件有 限的情况下也是如此。

Axolotl

Axolotl 是一个易于使用的微调框架,用来简化 LLM 的 后训练(post-training)。无论你做的是 full fine-tuning、instruction tuning、 LoRA/QLoRA,还是 alignment 相关工作,Axolotl 都能让你快速上手,而不需要深挖 训练内部机制。

它构建在 Hugging Face 的 Transformers 库之上,但用一套简洁的、基于 YAML 的 配置系统封装了大量复杂性。你可以在一个配置文件里定义训练设置,例如数据集、模型和 训练策略,其余工作由 Axolotl 处理。

关键特性:

  • 支持 Llama、Pythia、Falcon 和 MPT 等热门开放权重模型。
  • 灵活的训练选项:full fine-tuning、LoRA、QLoRA、ReLoRA 和 GPTQ。
  • 兼容 xFormers、 FlashAttention、ROPE scaling、Liger kernel 和 sample packing 等高级技术。
  • 可从单 GPU 配置扩展到使用 FSDP 或 DeepSpeed 的多 GPU 训练。
  • 易于通过 Docker 在本地运行,也可部署到云基础设施。

Axolotl 非常适合那些希望把精力集中在数据和任务本身,而不是深度学习底层细节上的 用户。凭借合理默认值、活跃社区支持和多种集成,它已经成为开放模型实用微调中的常见 选择。

Unsloth

Unsloth 是一个微调框架,目标是让 LLM 训练更快、更轻、 更易用,尤其适合硬件资源有限的环境(例如免费的 Google Colab GPU)。

Unsloth 在 kernel 层做了深度优化。它基于 Triton 的自定义注意力实现,可实现 2× 训练速度,并将内存使用量最多降低 80%。如果你想更深入理解 Triton 在 CUDA 和 基于编译器的方法之间所处的位置,可以参考 kernel optimization tools

Unsloth 团队曾与 Llama 4、Mistral、Qwen、Gemma 和 Phi 等模型背后的开发者直接 合作,常常会贡献 bug 修复和更新,以改进 prompt 处理、准确性和整体稳定性。

关键特性:

  • 支持对 Llama、Mistral、Phi、Gemma 等开放权重模型进行微调。
  • 支持 LoRA、QLoRA、full fine-tuning,甚至 reinforcement learning(DPO、 ORPO)。
  • 高度可定制:可按需编辑 chat template、dataset 格式和训练配置。
  • 兼容 Ollama、llama.cpp 和 vLLM 等推理工具。
  • 易于在 Google Colab、Kaggle,甚至较旧的消费级 GPU 上运行。

如果你希望在资源受限的环境中微调模型,Unsloth 是一个很强的选择。它的设计目标就是 尽可能用最少的资源做更多事情。

Torchtune

Torchtune 是一个原生 PyTorch 的 LLM 微调库。它面向那些希望完全掌控训练流水线、又不想依赖高层抽象或黑盒训练框架的用户。

Torchtune 遵循 PyTorch 的核心原则:可用性高于一切。它避免不必要的抽象,并强调:

  • 原生 PyTorch 组件
  • 组合优于继承
  • 清晰可见的训练逻辑,而不是隐藏在框架中的机制
  • 以测试驱动开发和各层级正确性为核心

关键特性:

  • 用纯 PyTorch 编写的模块化 LLM 实现。
  • 覆盖多种微调技术的训练 recipes,例如 full fine-tuning、LoRA 和 QLoRA。
  • 可通过 YAML 文件轻松配置数据集、模型、超参数和硬件设置。
  • 借助 checkpoint conversion tools 与模型生态实现互操作。

如果你更喜欢直接在 PyTorch 中工作,并且希望从数据预处理到训练逻辑都自行定制, Torchtune 会很理想。它尤其适合重视代码透明性、可复现性和对模型内部直接访问的 研究人员、开发者和工程师。

LLaMA Factory

LLaMA Factory 是一个开源微调工具包, 兼顾易用性与效率。它支持 100 多个 LLM,并同时提供命令行界面和 Web UI,以支持 零代码工作流。

与许多面向专家用户的框架不同,LLaMA Factory 的设计对初学者更友好。通过它的 Web 界面,用户可以选择模型、上传数据集、调整少量参数,然后启动训练,整个过程无需编写 代码。

但它并不只适合初学者。LLaMA Factory 在底层支持广泛的调优方法,因此对于有经验的 研究人员和开发者同样有价值。

关键特性:

  • 微调方法:监督式 SFT(包括多模态)、reward modeling,以及 reinforcement learning(PPO、DPO、ORPO、KTO)。
  • 量化与 adapter 支持:16-bit full-tuning、freeze-tuning、LoRA,以及通过 GPTQ、AWQ、HQQ 和 AQLM 等格式实现的 2–8 bit QLoRA。
  • 高级优化:GaLore、DoRA、LongLoRA、LoftQ、LLaMA Pro、Mixture-of-Depths 等。

与其自己微调一个模型,很多时候你也可以先从 Hugging Face 上已经存在的 fine-tuned 或 instruction-tuned 模型开始。它托管了大量社区发布和 官方发布的微调模型,开箱即用。与此同时,它也提供 base model 和 foundation checkpoint,适合那些希望完全掌控并计划自行微调模型的用户。实际工作中,团队往往 会先在 Hugging Face 上同时探索这两条路径,再决定是复用现有模型,还是投入自定义 微调。

通过托管提供方进行微调

通过托管提供方进行微调会比较方便,因为你不需要自己管理训练基础设施。但这也意味着, 你的 fine-tuned model 会依赖该提供方,以及它所基于训练的 base model。

OpenAI 的 self-serve fine-tuning update 就是一个有代表性的例子。在 2026 年 5 月 7 日之后,新组织将无法再创建微调任务; 而现有的活跃客户也只能在 2027 年 1 月 6 日之前创建新的任务。已有的微调模型仍可 继续运行,直到其 base model 被弃用。

这并不意味着托管微调不是一个好选择。它意味着团队应当把托管微调模型视为一个需要维 护的生产制品。要跟踪 base model 的生命周期,保留替换测试所需的评估集,并明确: 如果有需要,自己是否能够迁移到另一个托管模型,或迁移到开源微调方案。

常见问题

微调与推理有什么不同?

微调是一种小规模训练。你会使用自己的数据集更新模型的一部分权重。推理则完全不会改 变权重;它只是运行现有模型来产生输出。

下面是一个更清晰的并列对比:

项目推理微调
目的生成输出(答案、图像等)让模型在特定任务或领域上表现更好
是否更新权重不会,权重保持冻结会,部分或全部权重会被更新
所需数据只需要输入 prompt一个与你用例相关的数据集(通常带标注)
计算成本低(单次前向传播)高(多轮 epoch 训练)
时间毫秒到秒级分钟到天级(取决于模型大小和数据量)
模型变化模型本身不变会得到模型的新版本或新 checkpoint
示例向 LLM 提问在内部文档或医疗问答上微调过的 Llama 3

LLM 微调与 prompt engineering 等其他技术相比如何?

Prompt engineering 调整的是你如何向模型提问, 以获得更好的回答。它快、便宜,而且不需要训练,但也有局限。Prompt 过长时会变得 混乱,而且模型的行为仍可能不稳定。

微调则会真正改变模型。你给它提供“什么是好”的样例,它会学会自己遵循这种模式。 对于长期使用场景,尤其是当你需要稳定语气、领域知识或严格格式时,它会更加可靠。

简而言之,prompt engineering 很适合早期探索,而微调则能在规模化场景下提供稳定、 可重复的性能。

什么时候应该避免微调?

当主要问题是信息缺失,或信息变化非常频繁时,应避免微调。 RAG pipeline、 prompt template 或工具调用通常更适合,因为它们能在推理时获取新鲜数据。

当你还没有可靠的评估集时,微调也不是一个好的第一步。没有评估集,就很难判断一个 微调后的模型到底是真的改善了目标行为,还是只是改变了风格。

最后,如果部署路径仍不确定,也应避免微调。一个 fine-tuned model 会依赖 base model、训练方法、serving stack 以及提供方生命周期。如果你预期很快就要切换 提供方或 base model,那么在系统稳定前,应把更多行为保留在可迁移的运行时逻辑中。

微调一个 LLM 需要多少数据?

这取决于任务。很多团队只用几千条高质量样本就能获得不错的结果。对于复杂领域, 你可能需要数万甚至数十万条样本。质量通常比数量更重要。

微调 LLM 一定需要高性能 GPU 吗?

不一定。像 Unsloth、Axolotl 和 LLaMA Factory 这样的框架支持 LoRA 和 QLoRA 等高效方法,让你可以在单张消费级 GPU,甚至 Google Colab 上微调大模型。只有 full fine-tuning 往往才需要更强的硬件。