开源微调框架
→ 返回大模型
在 预训练与微调 的 SFT / 对齐 阶段,单机或小集群上常用三类开源工具:LLaMA-Factory(上手与功能最全)、Axolotl(多卡与配置驱动训练)、Unsloth(单卡速度与显存)。三者都基于 Hugging Face 生态(transformers + peft),数据格式多为 ShareGPT / Alpaca 类 JSON。
对比一览
| 维度 | LLaMA-Factory | Axolotl | Unsloth |
|---|---|---|---|
| 定位 | 一站式微调 + Web UI | YAML 驱动的训练流水线 | 加速 LoRA / QLoRA 训练库 |
| 上手 | 最低(CLI + 界面) | 中等(读 YAML + 文档) | 低(Notebook / 少量 API) |
| 训练方式 | SFT、DPO、PPO、ORPO、KTO… | SFT、DPO、RLHF 等(随版本) | 以 LoRA / QLoRA 为主 |
| 多卡 | 支持(DeepSpeed 等) | 强项(FSDP、DeepSpeed) | 偏 单卡 消费级 GPU |
| 速度 / 显存 | 常规 | 常规(可开 Flash Attention) | 通常更快、更省显存 |
| 模型覆盖 | 100+ 开源模型 | 主流因果 LM、部分多模态 | 持续扩展(Llama、Qwen、Mistral…) |
| 典型场景 | 快速试模型、团队统一配置 | 严肃复现实验、多机训练 | 笔记本/单卡练 LoRA、导出 GGUF |
数据(JSON / JSONL)→ 选框架 → LoRA/全参 + 量化 → checkpoint → 合并权重 → [[推理与部署|推理与部署]]LLaMA-Factory
国内资料多、功能面最广:除 SFT 外,常见还有 DPO / PPO / ORPO / KTO 等偏好对齐;自带 LlamaBoard Web UI,也支持纯 CLI 与 yaml 配置,适合「先跑通一条链路再调参」。
特点
- 模型:Llama、Qwen、GLM、Mistral、Gemma 等,换
model_name_or_path即可。 - 方法:全参、冻结、LoRA / QLoRA(
bitsandbytes4bit)、GaLore 等(以当前版本文档为准)。 - 数据:内置 Alpaca / ShareGPT 模板;自定义字段用
dataset_info.json映射。 - 导出:合并 LoRA、转 GPTQ / AWQ(视版本与脚本而定)。
常用命令(CLI)
# 安装后:训练(示例,具体参数见官方文档)
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
# Web UI
llamafactory-cli webui配置要点
| 项 | 建议 |
|---|---|
finetuning_type | 显存紧用 lora,资源足再考虑全参 |
quantization_bit | 4 → QLoRA,显著降显存 |
template | 与基座模型对齐(如 llama3、qwen) |
cutoff_len | 按任务设上下文,过长浪费显存 |
Axolotl
仓库:axolotl-ai-cloud/axolotl(原 OpenAccess-AI-Collective/axolotl)
面向 「一份 YAML 描述一次训练」:数据集混合比例、打包(packing)、学习率调度、多 GPU 策略都写在配置里,便于 版本管理 与 多机复现。
特点
- 配置驱动:
config.yml指定base_model、datasets、adapter(LoRA)、deepspeed/fsdp等。 - 数据:支持多种格式与 多数据集按权重混合;长上下文常配合 sample packing。
- 生态:与 Flash Attention、xFormers、DeepSpeed ZeRO 等组合成熟,适合 A100/H100 集群 或 2–8 卡工作站。
最小配置片段(示意)
base_model: meta-llama/Meta-Llama-3-8B-Instruct
model_type: LlamaForCausalLM
tokenizer_type: AutoTokenizer
load_in_8bit: false
load_in_4bit: true
adapter: lora
datasets:
- path: ./data/alpaca.json
type: alpaca
sequence_len: 4096
micro_batch_size: 2
gradient_accumulation_steps: 4
num_epochs: 3
learning_rate: 2e-4accelerate launch -m axolotl.cli.train config.yml适用与不适用
- 适合:需要 精确控制 数据混合、多卡 ZeRO、与论文/博客配置逐项对齐。
- 不太适合:只想在单卡上最快试一个 LoRA(可改用 Unsloth 或 LLaMA-Factory 默认模板)。
Unsloth
在 不改变训练语义 的前提下,用自定义内核与优化路径加速 LoRA / QLoRA,并降低显存峰值;适合 单张 24GB 及以下 显卡做指令微调。
特点
- 速度:官方宣称相对标准 HF 训练有明显加速(随 GPU、模型而异)。
- 显存:同 batch 下常能开大
max_seq_length或batch size。 - 接口:
FastLanguageModel.from_pretrained+get_peft_model,与trl.SFTTrainer或自带训练循环配合。 - 导出:可配合 GGUF 等流程,便于接到 llama.cpp / Ollama 本地推理。
最小示例(概念)
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/Meta-Llama-3.1-8B-bnb-4bit",
max_seq_length=2048,
load_in_4bit=True,
)
model = FastLanguageModel.get_peft_model(
model,
r=16,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"],
lora_alpha=16,
lora_dropout=0,
)
# 之后接 SFTTrainer / 官方 Notebook 数据管道注意
- 以 LoRA 类微调 为主,复杂 RLHF 全链路 一般仍用 LLaMA-Factory 或 Axolotl。
- 模型需选 Unsloth 已适配的 bnb-4bit 等变体,换模型时查其 模型卡片列表。
怎么选
| 你的情况 | 优先 |
|---|---|
| 第一次做 SFT,要中文文档 + 界面 | LLaMA-Factory |
| 2 张卡以上、DeepSpeed、实验要可复现 YAML | Axolotl |
| 单卡 4090/3090,尽快出 LoRA | Unsloth |
| 还要 DPO / PPO / 多算法对比 | LLaMA-Factory |
| 训练完要 GGUF 本地跑 | Unsloth 或 LLaMA-Factory 导出流程 |
三者 不互斥:例如用 Unsloth 快速验证数据与模板,再用 Axolotl 在多卡上放大 batch 与上下文做正式 run。
数据与评测(通用)
- 格式:指令数据统一为
instruction/input/output或 ShareGPT 多轮;与template一致,避免训练/推理 prompt 不一致。 - 质量:小集高精 > 大集噪声;见 SFT 要点。
- 评测:固定留出验证集;上线前用 Harness 或业务黄金集对比 基座 vs 微调后。
- 部署:微调权重需 merge adapter 或加载 LoRA;推理侧见 推理与部署、量化与压缩。