LLaMA-Factory
高效、灵活的大规模语言模型微调框架
支持超过100种主流模型和多种训练方法,为开发者提供从基础预训练到多阶段强化学习的全流程解决方案
核心功能与定位
强大的功能,简单的使用
多模型支持
覆盖LLaMA、BLOOM、Mistral、Baichuan、Qwen、ChatGLM等主流架构,参数规模横跨2B至102B
全阶段训练
支持基础训练、指令监督微调、对齐优化(PPO、DPO)和多模态扩展
资源优化
集成LoRA、QLoRA等技术,显著降低显存需求,提高训练效率
技术架构与核心组件
模块化设计,高效可扩展的微调框架
Model Loader
动态量化
支持8/4-bit量化,自动适配不同硬件配置,显存占用减少50%-80%
适配器注入
自动识别模型层并附加LoRA、QLoRA、AdaLoRA等适配器,支持多种PEFT方法
硬件优化
集成FlashAttention-2、DeepSpeed ZeRO等技术,提升训练效率
Data Worker
格式标准化
支持Alpaca、ShareGPT、OpenAI等多种数据格式,自动转换和预处理
流式处理
大型数据集的分批加载与预处理,支持TB级数据集训练
数据质量控制
内置数据清洗、去重、质量评估功能,确保训练数据质量
多阶段训练策略
预训练
从零开始训练或继续预训练,支持大规模语料库
监督微调
指令跟随训练,提升模型对话和任务执行能力
奖励建模
训练奖励模型,为强化学习提供反馈信号
强化学习
PPO、DPO等算法优化模型输出质量和安全性
支持的模型
覆盖100+主流大语言模型
主流架构
参数规模分布
微调方法详解
多种高效微调技术,满足不同场景需求
LoRA
低秩适应
核心原理
通过低秩矩阵分解,仅训练少量参数实现高效微调
性能指标
- • 参数量:原模型的0.1%-1%
- • 显存占用:减少60%-70%
- • 训练速度:提升2-3倍
适用场景
中等规模数据集,平衡性能与效率
QLoRA
量化LoRA
核心原理
结合4-bit量化与LoRA,极大降低显存需求
性能指标
- • 参数量:原模型的0.1%-1%
- • 显存占用:减少75%-85%
- • 精度损失:<1%
适用场景
资源受限环境,消费级GPU训练大模型
AdaLoRA
自适应LoRA
核心原理
动态调整不同层的秩,优化参数分配
性能指标
- • 参数量:比LoRA减少30%-50%
- • 性能提升:5%-15%
- • 收敛速度:提升20%-30%
适用场景
追求最优性能,复杂任务微调
微调方法性能对比
方法 | 可训练参数 | 显存占用 | 训练速度 | 模型性能 | 推荐指数 |
---|---|---|---|---|---|
全参数微调
|
100% | 100% | 1x |
|
|
LoRA
|
0.1%-1% | 30%-40% | 2-3x |
|
|
QLoRA
|
0.1%-1% | 15%-25% | 1.8-2.5x |
|
|
AdaLoRA
|
0.05%-0.5% | 25%-35% | 2.5-3.5x |
|
|
性能评估
不同优化方法的详细对比
优化方法 | 内存占用 | 吞吐量 | PPL | 适用场景 |
---|---|---|---|---|
QLoRA
|
5.21 GB | 3158.59 Tokens/s | 10.46 | 低显存设备 |
LoRA
|
7.84 GB | 2845.12 Tokens/s | 9.87 | 平衡性能 |
GaLore
|
9.15 GB | 2103.45 Tokens/s | 8.92 | 高精度需求 |
应用场景
广泛的行业应用与社区生态
垂直领域适配
法律、医疗、金融等行业的领域知识注入,满足特定行业需求
多模态扩展
支持LLaVA等视觉语言模型,实现图像理解、工具调用等多模态能力
开源生态
GitHub星标超25,000,集成Hugging Face、Wandb、MLflow等生态工具
性能对比
不同优化方法的性能表现
快速开始
几分钟内完成安装配置
安装步骤
# 克隆仓库
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
# 创建虚拟环境
conda create -n llama_factory python=3.10 -y
conda activate llama_factory
# 安装依赖
pip install -e ".[torch,metrics,deepspeed,qwen]"
实战教程
从零开始的完整微调流程
环境准备
硬件要求
软件环境
# 创建conda环境
conda create -n llama_factory python=3.10
conda activate llama_factory
# 安装CUDA (如果需要)
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
# 安装LLaMA-Factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
数据准备
数据格式示例
# Alpaca格式 (data/alpaca_data.json)
[
{
"instruction": "解释什么是机器学习",
"input": "",
"output": "机器学习是人工智能的一个分支..."
},
{
"instruction": "翻译以下句子",
"input": "Hello, how are you?",
"output": "你好,你好吗?"
}
]
数据集配置
# data/dataset_info.json
{
"my_dataset": {
"file_name": "alpaca_data.json",
"formatting": "alpaca",
"columns": {
"prompt": "instruction",
"query": "input",
"response": "output"
}
}
}
数据质量建议
- • 确保数据格式一致,避免特殊字符
- • 控制单条数据长度在2048 tokens以内
- • 数据量建议1000-10000条用于微调
- • 保持指令和回答的质量和相关性
模型微调
Web UI方式(推荐)
# 启动Web界面
llamafactory-cli webui
# 或者使用Python
python src/webui.py
基本配置
- • 模型:选择Qwen2.5-7B-Instruct
- • 微调方法:QLoRA
- • 数据集:选择准备好的数据
- • 学习率:5e-5
高级参数
- • LoRA rank:16
- • LoRA alpha:32
- • 批次大小:4
- • 训练轮数:3
命令行方式
# 使用QLoRA微调Qwen2.5-7B
llamafactory-cli train \
--stage sft \
--do_train \
--model_name_or_path Qwen/Qwen2.5-7B-Instruct \
--dataset my_dataset \
--template qwen \
--finetuning_type lora \
--lora_target all \
--output_dir ./saves/qwen2.5-7b/lora/sft \
--overwrite_cache \
--overwrite_output_dir \
--cutoff_len 1024 \
--preprocessing_num_workers 16 \
--per_device_train_batch_size 4 \
--per_device_eval_batch_size 1 \
--gradient_accumulation_steps 8 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--warmup_steps 20 \
--save_steps 100 \
--eval_steps 50 \
--evaluation_strategy steps \
--load_best_model_at_end \
--learning_rate 5e-5 \
--num_train_epochs 3.0 \
--max_samples 3000 \
--val_size 0.1 \
--plot_loss \
--fp16
模型评估与部署
模型测试
# 启动聊天界面测试
llamafactory-cli chat \
--model_name_or_path Qwen/Qwen2.5-7B-Instruct \
--adapter_name_or_path ./saves/qwen2.5-7b/lora/sft \
--template qwen \
--finetuning_type lora
评估指标
- • 困惑度 (Perplexity)
- • BLEU分数
- • 人工评估质量
- • 任务特定指标
模型导出
# 导出合并后的模型
llamafactory-cli export \
--model_name_or_path Qwen/Qwen2.5-7B-Instruct \
--adapter_name_or_path ./saves/qwen2.5-7b/lora/sft \
--template qwen \
--finetuning_type lora \
--export_dir ./exports/qwen2.5-7b-custom \
--export_size 2 \
--export_legacy_format False
部署选项
- • vLLM高性能推理
- • Ollama本地部署
- • OpenAI兼容API
- • 量化压缩部署
常见问题解答
Q: 显存不足怎么办?
A: 使用QLoRA量化、减小batch_size、启用gradient_checkpointing,或选择更小的模型。
Q: 训练速度太慢?
A: 使用DeepSpeed ZeRO、增加batch_size、使用多GPU训练,或选择更高效的优化器。
Q: 模型效果不理想?
A: 检查数据质量、调整学习率、增加训练轮数,或尝试不同的微调方法。
Q: 如何选择合适的模型?
A: 根据任务类型、硬件资源和性能要求选择,一般推荐从7B模型开始。
框架对比分析
LLaMA-Factory与主流微调框架的全面对比
特性对比 | LLaMA-Factory | Unsloth | Axolotl | Torchtune |
---|---|---|---|---|
支持模型数量 | 100+ | 30+ | 80+ | 20+ |
训练方法 | 全流程 | LoRA/QLoRA | 多种方法 | LoRA/全参数 |
用户界面 | Web UI + CLI | Colab Notebook | YAML配置 | Python API |
多GPU支持 | 优秀 | 付费版 | 优秀 | 优秀 |
中文支持 | 原生支持 | 英文为主 | 英文为主 | 英文为主 |
学习曲线 | 简单 | 简单 | 中等 | 复杂 |
社区活跃度 | 25K+ Stars | 15K+ Stars | 7K+ Stars | 1K+ Stars |
LLaMA-Factory vs Unsloth
全能型 vs 性能特化
LLaMA-Factory优势
- • 支持100+模型,覆盖面最广
- • 完整的训练流程:预训练→SFT→RLHF
- • Web UI界面,操作简单直观
- • 原生中文支持,文档完善
- • 多GPU训练,企业级部署
Unsloth优势
- • 单GPU训练速度快2-5倍
- • 显存占用极低,消费级GPU可用
- • Colab免费使用,门槛低
- • 专注优化,性能极致
选择建议
选择LLaMA-Factory:需要完整训练流程、多模型支持、企业级应用
选择Unsloth:资源受限、追求极致性能、快速原型验证
LLaMA-Factory vs Axolotl
易用性 vs 灵活性
LLaMA-Factory优势
- • Web UI降低使用门槛
- • 内置最佳实践配置
- • 中文社区支持
- • 一站式解决方案
Axolotl优势
- • YAML配置灵活性高
- • 社区贡献丰富
- • 支持更多实验性功能
- • 深度定制能力强
选择建议
选择LLaMA-Factory:快速上手、标准化流程、团队协作
选择Axolotl:深度定制、实验研究、高级用户
性能基准测试
训练速度
Qwen2.5-7B微调 (1000样本)
显存占用
QLoRA微调 (batch_size=4)
模型质量
BLEU分数 (翻译任务)
性能对比
不同优化方法的性能表现