LLM fine-tuning
Fine-tuning 是让 LLM 适应特定使用场景最有效的方法之一。它使用新的、针对特定任务的数据,在 pre-trained model 上继续训练过程。这个过程可以更新整个模型,也可以只更新特定 layer。
Fine-tuning 的一个关键驱动力是效率。与从头开始训练模型(这会消耗极多资源)相比,以已经从海量数据集中学到通用语言模式的 base model 为起点,要容易得多,也更具成本效益。Fine-tuning 会针对你的特定任务强化这些广泛能力。
例如,fine-tuning 可以显著提升模型的以下能力:
- 领域专业能力:使模型适应法律、医疗或编程相关任务。
- Instruction following:确保模型在回复中遵守特定的格式、语气或风格。
- Safety and alignment:强化模型处理敏感或高风险 prompt的方式。
Fine-tuning 在定制技术栈中的位置
Fine-tuning 只是模型定制的一种方法。它会改变 model weights,因此不同于 prompt engineering、function calling和 structured outputs等其他技术。
这种差异在生产环境中至关重要。运行时技术通常测试更快、更容易回滚,也更便于在不同模型服务商之间迁移。当你期望的行为较为稳定、会出现在大量请求中,并且无法仅靠 prompt 或 retrieved context 妥善实现时,fine-tuning 更为合适。
一个实用的改进循环通常如下:
- 使用真实或具有代表性的输入构建 evaluation set。
- 改进 prompt、示例、retrieval、tool 和 output validation。
- 使用同一 evaluation set 衡量结果。
- 只有当剩余失败案例具有系统性,并且值得将相应行为内化到模型中时,才进行 fine-tuning。
常见的 fine-tuning framework
对 LLM 进行 fine-tuning 并不意味着必须从零构建一切。有多个 open-source framework 旨在简化这一过程。
这些工具开箱即用地支持在自定义数据集上训练 open-weight model。借助它们,无须亲自编写复杂的训练代码,也能更轻松地应用现代优化技术。
许多此类框架也以效率为设计目标,即使硬件资源有限,也能帮助用户减少内存占用并加快训练速度。
Axolotl
Axolotl 是一个易于使用的 fine-tuning framework,旨在简化 LLM 的 post-training。无论你要进行 full fine-tuning、instruction tuning、LoRA/QLoRA,还是 alignment 工作,Axolotl 都能让你轻松入门,而无须深入研究训练过程的内部细节。
它构建于 Hugging Face 的 Transformers library 之上,但通过简洁的 YAML 配置系统封装了大量复杂性。你只需在一个配置文件中定义数据集、模型和 training strategy 等训练设置,其余工作由 Axolotl 处理。
主要特性:
- 支持 Llama、Pythia、Falcon 和 MPT 等热门 open-weight model。
- 灵活的训练选项:full fine-tuning、LoRA、QLoRA、ReLoRA 和 GPTQ。
- 兼容 xFormers、FlashAttention、RoPE scaling、Liger kernel 和 sample packing 等高级技术。
- 使用 FSDP 或 DeepSpeed,可从 single-GPU setup 扩展到 multi-GPU training。
- 可以使用 Docker 在本地轻松运行,也可以在 cloud infrastructure 上运行。
Axolotl 非常适合希望专注于数据和任务,而不是深究 deep learning 内部细节的用户。凭借合理的默认设置、强大的社区支持和丰富的集成能力,它是对开放模型进行实用 fine-tuning 的首选之一。
Unsloth
Unsloth 是一个 fine-tuning framework,旨在让 LLM 训练更快、更轻量且更易用,尤其适合硬件资源有限的环境(例如免费的 Google Colab GPU)。
Unsloth 在 kernel level 进行了深度优化。它采用基于 Triton 的自定义 attention implementation,可以将训练速度提升至 2 倍,同时将内存占用最多降低 80%。如果你想进一步了解 Triton 相对于 CUDA 和 compiler-based approach 的位置,请参阅 kernel optimization tools。
Unsloth 团队曾直接与 Llama 4、Mistral、Qwen、Gemma 和 Phi 等模型背后的开发者合作,并经常贡献错误修复和更新,以改善 prompt handling、准确性和整体稳定性。
主要特性:
- 支持对 Llama、Mistral、Phi 和 Gemma 等 open-weight model 进行 fine-tuning。
- 支持 LoRA、QLoRA、full fine-tuning,甚至 reinforcement learning(如 DPO、ORPO)。
- 高度可定制:可以按需编辑 chat template、dataset format 和 training config。
- 兼容 vLLM、SGLang 和 MAX 等 inference framework。
- 可在 Google Colab、Kaggle 等平台上轻松运行,甚至支持较旧的 consumer GPU。
如果你希望在资源受限的配置上 fine-tune 模型,Unsloth 是首选之一。它的设计目标,就是用最少的资源最大限度地扩展你的能力边界。
Torchtune
Torchtune 是一个用于 fine-tune LLM 的 PyTorch-native library。它面向希望完全控制 training pipeline,而不依赖 high-level abstraction 或不透明训练框架的用户。
Torchtune 遵循 PyTorch 的核心原则:易用性高于一切。它避免不必要的抽象,并强调:
- Native PyTorch component
- Composition over inheritance
- 清晰的训练逻辑,而非隐藏的框架机制
- Test-driven development 以及各层级的正确性
主要特性:
- 使用纯 PyTorch 编写的模块化 LLM 实现。
- 针对 full fine-tuning、LoRA 和 QLoRA 等多种微调技术的 training recipe。
- 通过 YAML 文件轻松配置数据集、模型、hyperparameter 和硬件设置。
- 通过 checkpoint conversion tool 实现与 model zoo 的互操作。
如果你偏好直接使用 PyTorch,并希望定制从 data preprocessing 到训练逻辑的所有环节,Torchtune 会是理想选择。它尤其适合重视代码透明度、reproducibility 以及直接访问模型内部机制的研究人员、开发者和工程师。
LLaMA Factory
LLaMA Factory 是一个注重简单与高效的 open-source fine-tuning 工具包。它支持 100 多种 LLM,并同时提供命令行界面和 Web UI,可实现零代码工作流。
与许多面向专家用户的框架不同,LLaMA Factory 的设计对初学者十分友好。用户可以通过其网页界面选择模型、上传数据集、调整少量参数并启动训练,全程无须编写代码。
但它并非只适合初学者。在底层,LLaMA Factory 支持广泛的调优方法,对经验丰富的研究人员和开发者同样实用。
主要特性:
- Fine-tuning 方法:supervised SFT(包括多模态)、reward modeling 和 reinforcement learning(如 PPO、DPO、ORPO、KTO)。
- Quantization and adapter support:16-bit full-tuning、freeze-tuning、LoRA,以及通过 GPTQ、AWQ、HQQ 和 AQLM 等格式实现的 2–8 bit QLoRA。
- 高级优化:GaLore、DoRA、LongLoRA、LoftQ、LLaMA Pro、Mixture-of-Depths 等。
除了自己进行模型 fine-tuning,你通常也可以先从 Hugging Face 上现有的 fine-tuned model 或 instruction-tuned model 开始。Hugging Face 托管了大量由社区和官方发布的 fine-tuned model,可以开箱即用。同时,如果你希望拥有完全控制权并计划自行 fine-tune 模型,它也提供 base model 和 foundation checkpoint。在实践中,团队通常会先在 Hugging Face 上探索这两种选择,再决定是复用现有模型,还是投入资源进行自定义 fine-tuning。
通过 hosted provider 进行 fine-tuning
通过 hosted provider 进行 fine-tuning 十分方便,因为你无须自行管理 training infrastructure。不过,这也意味着你的 fine-tuned model 会依赖该服务商以及训练它时使用的 base model。
OpenAI 的 self-serve fine-tuning update就是一个很有参考价值的例子。2026 年 5 月 7 日之后,新组织将无法再创建 fine-tuning job;现有活跃客户也只能在 2027 年 1 月 6 日之前创建新任务。已有的 fine-tuned model 仍可继续运行,直到其 base model 被 deprecated。
这并不意味着 hosted fine-tuning 不是一个好选择,而是意味着团队应将托管的 fine-tuned model 视为需要持续维护的 production artifact。应跟踪 base model lifecycle,保留 evaluation set 用于替代模型测试,并明确在需要时能否迁移到其他托管模型或 open-source fine-tuning 方案。
FAQ
Fine-tuning 与 inference 有何不同?
Fine-tuning 是一种小规模的 training。你使用自己的数据集更新模型的部分 weights。Inference 则完全不会改变 weights,只是运行现有模型来生成输出。
下面是更清晰的并列对比:
| 项目 | Inference | Fine-tuning |
|---|---|---|
| 目的 | 生成输出(回答、图像等) | 调整模型,使其在特定任务或领域中表现得更好 |
| 是否更新权重 | 否,权重保持冻结 | 是,更新部分或全部权重 |
| 所需数据 | 只需要输入 prompt | 针对使用场景的数据集(通常带有 label) |
| 计算成本 | 低(单次 forward pass) | 高(进行多个 epoch 的训练) |
| 耗时 | 毫秒到秒 | 分钟到数天(取决于模型规模和数据量) |
| 模型变化 | 模型保持不变 | 获得模型的新版本/checkpoint |
| 示例 | 向 LLM 提问 | 使用内部文档或医疗问答数据 fine-tune Llama 3 |
LLM fine-tuning 与 prompt engineering 等其他技术相比如何?
Prompt engineering通过调整你向模型提问的方式来获得更好的回答。它速度快、成本低且不需要训练,但也存在局限。过长的 prompt 可能变得混乱,模型的行为也可能仍不一致。
Fine-tuning 则会实际改变模型。你向模型提供“优质结果”的示例,它会自行学习遵循这种模式。对于长期使用而言,它更加可靠,尤其适用于需要一致的语气、领域知识或严格格式的场景。
简而言之,prompt engineering 非常适合早期探索,而 fine-tuning 能够在规模化应用中提供稳定、可重复的性能。
什么时候应避免 fine-tuning?
当主要问题是信息缺失或信息频繁变化时,应避免 fine-tuning。RAG pipeline、prompt template 或 tool call 通常更合适,因为它们可以在 inference time 获取最新数据。
如果你没有可靠的 evaluation set,也不应该把 fine-tuning 作为第一步。没有评估集,就很难判断 fine-tuned model 究竟改善了目标行为,还是仅仅改变了表达风格。
最后,如果 deployment path 尚不确定,也应避免 fine-tuning。Fine-tuned model 依赖 base model、training method、serving stack 以及 provider lifecycle。如果你预计近期会更换服务商或 base model,应先将更多行为保留在可移植的 runtime logic 中,直到系统稳定下来。
Fine-tune LLM 需要多少数据?
这取决于具体任务。许多团队使用几千条高质量示例就能获得不错的效果。对于复杂领域,你可能需要数万乃至数十万条数据。质量比数量更重要。
Fine-tune LLM 是否需要强大的 GPU?
不一定。Unsloth、Axolotl 和 LLaMA Factory 等框架支持 LoRA、QLoRA 等高效方法,使你可以在单张 consumer GPU,甚至 Google Colab 上 fine-tune 大型模型。Full fine-tuning 通常需要性能更强的硬件。