开源微调框架

返回大模型

预训练与微调SFT / 对齐 阶段,单机或小集群上常用三类开源工具:LLaMA-Factory(上手与功能最全)、Axolotl(多卡与配置驱动训练)、Unsloth(单卡速度与显存)。三者都基于 Hugging Face 生态(transformers + peft),数据格式多为 ShareGPT / Alpaca 类 JSON。


对比一览

维度LLaMA-FactoryAxolotlUnsloth
定位一站式微调 + Web UIYAML 驱动的训练流水线加速 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

仓库hiyouga/LLaMA-Factory

国内资料多、功能面最广:除 SFT 外,常见还有 DPO / PPO / ORPO / KTO 等偏好对齐;自带 LlamaBoard Web UI,也支持纯 CLI 与 yaml 配置,适合「先跑通一条链路再调参」。

特点

  • 模型:Llama、Qwen、GLM、Mistral、Gemma 等,换 model_name_or_path 即可。
  • 方法:全参、冻结、LoRA / QLoRAbitsandbytes 4bit)、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_bit4 → QLoRA,显著降显存
template与基座模型对齐(如 llama3qwen
cutoff_len按任务设上下文,过长浪费显存

Axolotl

仓库axolotl-ai-cloud/axolotl(原 OpenAccess-AI-Collective/axolotl

面向 「一份 YAML 描述一次训练」:数据集混合比例、打包(packing)、学习率调度、多 GPU 策略都写在配置里,便于 版本管理多机复现

特点

  • 配置驱动config.yml 指定 base_modeldatasetsadapter(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-4
accelerate launch -m axolotl.cli.train config.yml

适用与不适用

  • 适合:需要 精确控制 数据混合、多卡 ZeRO、与论文/博客配置逐项对齐。
  • 不太适合:只想在单卡上最快试一个 LoRA(可改用 Unsloth 或 LLaMA-Factory 默认模板)。

Unsloth

仓库unslothai/unsloth

不改变训练语义 的前提下,用自定义内核与优化路径加速 LoRA / QLoRA,并降低显存峰值;适合 单张 24GB 及以下 显卡做指令微调。

特点

  • 速度:官方宣称相对标准 HF 训练有明显加速(随 GPU、模型而异)。
  • 显存:同 batch 下常能开大 max_seq_lengthbatch 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、实验要可复现 YAMLAxolotl
单卡 4090/3090,尽快出 LoRAUnsloth
还要 DPO / PPO / 多算法对比LLaMA-Factory
训练完要 GGUF 本地跑Unsloth 或 LLaMA-Factory 导出流程

三者 不互斥:例如用 Unsloth 快速验证数据与模板,再用 Axolotl 在多卡上放大 batch 与上下文做正式 run。


数据与评测(通用)

  1. 格式:指令数据统一为 instruction / input / output 或 ShareGPT 多轮;template 一致,避免训练/推理 prompt 不一致。
  2. 质量:小集高精 > 大集噪声;见 SFT 要点
  3. 评测:固定留出验证集;上线前用 Harness 或业务黄金集对比 基座 vs 微调后
  4. 部署:微调权重需 merge adapter 或加载 LoRA;推理侧见 推理与部署量化与压缩

相关文档