Llama Factory 是一个开源、模块化、易用的大语言模型(LLM)微调框架,支持多种主流开源模型和训练方法(全参微调、LoRA、QLoRA、DPO、PPO、Reward Modeling 等),适用于科研与工业场景。项目地址:https://github.com/hiyouga/LLaMA-Factory
特性 | 描述 |
---|---|
🧩 多模型支持 | LLaMA, LLaMA2, LLaMA3, Mistral, Gemma, Qwen, Baichuan, ChatGLM, Phi, XVERSE, Yi, DeepSeek 等 |
💡 多训练方式 | Full Fine-tuning, LoRA, QLoRA, Freeze, DPO, PPO, Reward Model Training, Pre-training |
📦 数据格式统一 | 支持 Alpaca, ShareGPT, 自定义 JSON 格式 |
🖥️ 硬件友好 | 支持单卡/多卡 GPU、CPU、Apple Silicon (M1/M2/M3)、量化推理(GPTQ/AWQ) |
🌐 Web UI | 内置基于 Gradio 的可视化训练与推理界面 |
🧪 实验管理 | 支持 wandb / tensorboard 日志记录、超参数配置文件管理 |
推荐使用 Python 3.9+ 和 PyTorch 2.x。
# 克隆项目
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
# 创建虚拟环境(可选)
python -m venv llama-env
source llama-env/bin/activate # Linux/macOS
# 或 llama-env\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 如需Web UI或强化学习,安装额外依赖
pip install -r requirements extras.txt # 包含 gradio, peft, trl, bitsandbytes 等
💡 建议使用
conda
或venv
避免依赖冲突。
你可以从 Hugging Face 下载任意支持的模型:
# 示例:下载 Qwen1.5-0.5B(也可替换为 LLaMA3-8B、ChatGLM3-6B 等)
mkdir models && cd models
git lfs install
git clone https://huggingface.co/Qwen/Qwen1.5-0.5B
cd ..
🔒 注意:部分模型(如 LLaMA 系列)需申请授权并手动下载。
创建 data/alpaca_zh_demo.json
:
[
{
"instruction": "解释量子纠缠",
"input": "",
"output": "量子纠缠是量子力学中的一种现象..."
},
{
"instruction": "写一首关于春天的诗",
"input": "",
"output": "春风拂面柳丝长,燕子归来筑巢忙..."
}
]
支持格式:
alpaca
:三字段(instruction, input, output)sharegpt
:对话形式(conversations: {from: 'human', value: '...'}, {from: 'gpt', value: '...'})CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
--model_name_or_path models/Qwen1.5-0.5B \
--do_train \
--dataset alpaca_zh_demo \
--dataset_dir data \
--template qwen \
--finetuning_type lora \
--lora_target all \
--output_dir saves/qwen1.5-0.5b/lora-demo \
--overwrite_cache \
--per_device_train_batch_size 2 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_steps 500 \
--learning_rate 5e-5 \
--num_train_epochs 3.0 \
--plot_loss \
--fp16
参数 | 含义 |
---|---|
| 模型路径 |
| 数据集名称(对应 data/ 下的 json 文件名) |
| 提示模板(不同模型需配对,如 |
| 微调方式: |
| LoRA作用层: |
| 输出目录(保存 adapter) |
| 单卡 batch size |
| 梯度累积步数(显存不足时增大此值) |
| 开启半精度加速训练 |
📌 所有参数均可保存到 YAML 配置文件,便于复用(见下文)。
启动可视化界面:
python src/webui.py
访问 http://localhost:7860
✅ 图形化操作,适合初学者快速上手!
在 examples/train_lora/
目录下有很多预设配置。
你也可以自定义 my_config.yaml
:
### model
model_name_or_path: models/Qwen1.5-0.5B
template: qwen
### method
finetuning_type: lora
lora_target: all
lora_rank: 8
lora_alpha: 16
lora_dropout: 0.1
### dataset
dataset: alpaca_zh_demo
dataset_dir: data
### training
output_dir: saves/qwen1.5-0.5b/lora-v1
per_device_train_batch_size: 2
gradient_accumulation_steps: 4
learning_rate: 5e-5
num_train_epochs: 3.0
lr_scheduler_type: cosine
logging_steps: 10
save_steps: 500
fp16: true
plot_loss: true
运行命令:
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py $(cat my_config.yaml | xargs)
或使用内置脚本:
bash scripts/train.sh examples/train_lora/qwen_lora_sft.yaml
CUDA_VISIBLE_DEVICES=0 python src/cli_demo.py \
--model_name_or_path models/Qwen1.5-0.5B \
--adapter_name_or_path saves/qwen1.5-0.5b/lora-demo \
--template qwen \
--finetuning_type lora
python src/api_demo.py --model_name_or_path models/Qwen1.5-0.5B --adapter_name_or_path saves/qwen1.5-0.5b/lora-demo --template qwen
访问 http://localhost:8000/v1/chat/completions
,可用 curl 或任何 OpenAI SDK 调用。
准备偏好数据(chosen vs rejected):
[
{
"prompt": "如何学习深度学习?",
"chosen": "建议从吴恩达课程开始...",
"rejected": "随便看看视频就行"
}
]
训练命令:
--stage dpo --dataset your_dpo_data --template qwen --finetuning_type lora ...
torchrun --nproc_per_node=2 --master_port=29500 src/train_bash.py ... \
--deepspeed examples/deepspeed/ds_z3_config.json
--quantization_bit 4 --finetuning_type qlora
--stage pt --dataset your_pretrain_corpus --cutoff_len 1024
✅ 解决方案:
--quantization_bit 4
+ --finetuning_type qlora
--gradient_accumulation_steps
--per_device_train_batch_size
--flash_attn
(若支持)参考:
模型类型 | 推荐 target |
---|---|
LLaMA / Qwen |
|
ChatGLM |
|
Phi |
|
可在 src/utils/constants.py
中查看各模型默认 target。
python src/export_model.py \
--model_name_or_path models/Qwen1.5-0.5B \
--adapter_name_or_path saves/qwen1.5-0.5b/lora-demo \
--template qwen \
--finetuning_type lora \
--export_dir models/qwen1.5-0.5b-merged \
--export_size 2
合并后可独立部署,无需原模型+adapter。
下载模型 → 准备数据 → 选择训练方式(LoRA/QLoRA/DPO)→
↓
命令行 or WebUI 启动训练 → 监控 loss → 保存 Adapter →
↓
合并模型 or 直接加载推理 → API 部署 or 本地测试
🎯 Llama Factory 让大模型微调不再高不可攀 —— 无论你是学生、研究员还是工程师,都能快速定制属于自己的 AI 助手。
立即动手,开启你的 LLM 微调之旅吧!🚀
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。