跳转至

LLaMA-Factory 全栈微调 — 用 WebUI 或命令行搞定 100+ 模型的一站式微调平台


一句话说明

LLaMA-Factory(v0.9.4,2025年12月)是国人开发的 ACL 2024 论文项目,提供图形化 WebUI 和命令行两种方式,支持 LoRA/QLoRA/全量微调、SFT/DPO/PPO/KTO 等方法,适合快速实验和生产级训练。


安装与配置

# 方式1:pip 安装(v0.9.4 需要 Python 3.11+)
pip install llamafactory

# 方式2:源码安装(推荐,获取最新功能)
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]" --no-build-isolation  # 安装基础依赖

# 可选加速组件
pip install -e ".[torch,metrics,deepspeed,bitsandbytes,vllm]"  # 全家桶安装

# 启动 WebUI
llamafactory-cli webui                       # 在浏览器打开 http://127.0.0.1:7860

# 验证安装
llamafactory-cli version

核心用法

# 方式1:WebUI 可视化操作(最友好)
llamafactory-cli webui
# 浏览器打开,选模型 → 选数据集 → 配置参数 → 点击训练

# 方式2:命令行训练(YAML 配置文件)
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml

# 方式3:命令行直接传参
llamafactory-cli train \
    --model_name_or_path meta-llama/Llama-3.2-8B-Instruct \
    --do_train True \                                    # 执行训练
    --finetuning_type lora \                             # 微调方法:lora/freeze/full
    --template llama3 \                                  # 提示模板类型
    --dataset alpaca_zh \                                # 使用内置数据集
    --output_dir outputs/llama3-lora \
    --num_train_epochs 3.0 \
    --per_device_train_batch_size 2 \
    --learning_rate 5e-5

参数详解

# examples/train_lora/llama3_lora_sft.yaml 示例
### 模型
model_name_or_path: meta-llama/Llama-3.2-8B-Instruct  # 基座模型
trust_remote_code: true                                  # 允许运行远程代码

### 训练方法
stage: sft                                              # 阶段:pt/sft/rm/ppo/dpo/kto
do_train: true                                          # 执行训练
finetuning_type: lora                                   # 微调类型:lora/freeze/full
lora_target: all                                        # 对所有线性层加 LoRA
lora_rank: 8                                            # LoRA 秩
lora_alpha: 16                                          # LoRA 缩放

### 数据集
dataset: alpaca_zh                                      # 内置数据集名或自定义路径
template: llama3                                        # 提示模板(必须与模型匹配)
cutoff_len: 2048                                        # 最大序列长度
max_samples: 1000                                       # 最多使用多少条数据
overwrite_cache: true                                   # 是否重新处理数据缓存
preprocessing_num_workers: 4                            # 数据预处理线程数

### 输出
output_dir: saves/llama3-8b/lora/sft                   # 模型保存目录
logging_steps: 10                                       # 日志打印间隔
save_steps: 500                                         # 模型保存间隔

### 训练超参
per_device_train_batch_size: 2                          # 每卡 batch 大小
gradient_accumulation_steps: 4                          # 梯度累积
learning_rate: 1.0e-4                                   # 学习率
num_train_epochs: 3.0                                   # 训练轮数
warmup_ratio: 0.1                                       # 预热比例
bf16: true                                              # 使用 bf16 精度

### 量化(可选)
quantization_bit: 4                                     # 4bit 量化(QLoRA)

实战案例

# 使用自定义数据集微调

# 1. 准备数据(alpaca 格式,存为 data/my_data.json)
import json
data = [
    {
        "instruction": "用简单的话解释 DNA 甲基化",
        "input": "",
        "output": "DNA 甲基化就像在 DNA 上贴标签..."
    }
]
with open("data/my_data.json", "w") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# 2. 在 data/dataset_info.json 中注册数据集
dataset_info = {
    "my_data": {                        # 数据集名称
        "file_name": "my_data.json",    # 文件路径(相对于 data/ 目录)
        "formatting": "alpaca"          # 数据格式
    }
}

# 3. 训练命令
# llamafactory-cli train \
#     --dataset my_data \
#     --template llama3 \
#     ...其他参数
# 推理与导出
# 加载 LoRA 模型进行对话
llamafactory-cli chat --model_name_or_path meta-llama/Llama-3.2-8B-Instruct \
    --adapter_name_or_path saves/llama3-8b/lora/sft \
    --template llama3 \
    --finetuning_type lora

# 合并 LoRA 权重并导出
llamafactory-cli export \
    --model_name_or_path meta-llama/Llama-3.2-8B-Instruct \
    --adapter_name_or_path saves/llama3-8b/lora/sft \
    --template llama3 \
    --finetuning_type lora \
    --export_dir merged_model \
    --export_size 4 \                   # 每个分片最大 4GB
    --export_legacy_format false

常见报错与解决

报错信息原因解决方法
Template not found模板名写错查看 src/llamafactory/data/template.py 中的支持列表
Dataset not found数据集未注册data/dataset_info.json 中添加数据集信息
CUDA OOM显存不足开启量化 quantization_bit: 4
Python < 3.11版本要求v0.9.4 需要 Python 3.11+
WebUI 无法打开端口占用--port 7861 换端口

速查表

功能命令
启动 WebUIllamafactory-cli webui
SFT 训练llamafactory-cli train config.yaml
对话测试llamafactory-cli chat ...
模型导出llamafactory-cli export ...
支持的模板llama3 / qwen / gemma / mistral / chatglm 等
内置数据集alpaca_zh / belle_multiturn / glaive_toolcall 等
GitHubhttps://github.com/hiyouga/LLaMA-Factory