北航发布 LLaMA-Factory:零代码大模型微调与高效训练框架
在大模型技术飞速发展的今天,训练和微调大型语言模型(LLM)对于大多数普通工程师而言仍面临较高的门槛。为了降低大模型训练与微调的难度,北京航空航天大学发布了 LLaMA-Factory。这是一个旨在普及 LLMs 微调的开源框架,通过可扩展的模块统一了多种高效微调方法,使得数百种语言模型能够在资源有限的情况下进行高吞吐量的微调。
核心特性
LLaMA-Factory 简化了常用的训练方法,包括生成式预训练、监督式微调(SFT)、基于人类反馈的强化学习(RLHF)以及直接偏好优化(DPO)。用户可以通过命令行或 Web 界面,以最小或无需编码的方式自定义和微调他们的语言模型。该框架遵循 Apache-2.0 许可证开源,已在 GitHub 上获得大量关注,并在 Hugging Face Hub 上构建了数百个开源模型。
高效的微调技术
高效的 LLM 微调技术主要分为两大类:专注于优化的方法和旨在计算的方法。
高效优化
LLaMA-Factory 集成了多种高效的优化技术,旨在保持成本最低的同时调整 LLM 的参数。主要方法包括:
- Freeze-tuning:冻结大部分模型参数,仅更新特定层,大幅减少显存占用。
- Gradient Low-rank Projection (GaLore):通过低秩投影梯度来更新权重,显著降低内存需求。
- Low-rank Adaptation (LoRA):在预训练模型旁路中注入可训练的低秩矩阵,是目前最主流的高效微调方案。
- Weight-decomposed Low-rank Adaptation (DoRA):对 LoRA 进行改进,分解权重为幅度和角度,提升微调效果。
- LoRA+:进一步优化 LoRA 的学习率策略,提高收敛速度和最终性能。
这些方法可以显著提高模型的训练效率和内存使用效率,使得在消费级显卡上进行大模型微调成为可能。
高效计算
LLaMA-Factory 整合了多种高效计算技术,寻求减少 LLM 中所需的计算时间或空间。关键技术包括:
- 混合精度训练:结合 FP16 和 BF16 等格式,平衡精度与速度。
- 激活检查点(Activation Checkpointing):用计算换内存,减少前向传播时的中间激活值存储。
- Flash Attention:优化注意力机制的计算过程,减少 IO 开销。
- S2 Attention:针对长序列优化的注意力机制。
- 量化策略:支持将模型动态量化为 8 位或 4 位(如 QLoRA),将内存占用从每个参数 18 字节或 8 字节降低到仅为 0.6 字节左右。
- 适配器技术:灵活附加轻量级适配器层。
通过这些技术的结合,LLaMA-Factory 能够显著提高 LLM 的效率。
LLaMA-Factory 架构设计
LLaMA-Factory 由三个主要模块组成:Model Loader、Data Worker 和 Trainer。这种模块化设计最小化了模块对特定模型和数据集的依赖,使框架可以灵活扩展到数百个模型和数据集。
Model Loader
Model Loader 负责加载和初始化模型参数,包含四个组件:
- 模型初始化:使用 Transformers 库的 AutoModel API 来加载和初始化模型参数,支持 100 多个 LLM 架构。
- 模型修补:通过替换模型的前向计算来实现 Flash Attention 和 S2 Attention,提升推理和训练速度。
- 模型量化:支持多种后训练量化方法,可根据设备能力处理预训练模型的浮点精度。
- 适配器附加:根据模型注册表自动识别适配器应该附加的层,并使用 PEFT 库来附加适配器。
Data Worker
Data Worker 是一个数据处理管道,包括数据集加载、对齐、合并和预处理。它将不同任务的数据集标准化为统一格式,使我们能够在各种格式的数据集上微调模型。具体功能包括:


