首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Llama Factory 使用指南

Llama Factory 使用指南

原创
作者头像
用户2945413
发布2025-09-17 10:04:36
发布2025-09-17 10:04:36
1080
举报

📘 Llama Factory 使用指南 —— 轻松微调主流大模型(LLaMA、ChatGLM、Qwen、Baichuan、Phi、Gemma等)

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 日志记录、超参数配置文件管理


🚀 二、快速开始

步骤 1:环境准备

推荐使用 Python 3.9+ 和 PyTorch 2.x。

代码语言:bash
复制
# 克隆项目
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 等

💡 建议使用 condavenv 避免依赖冲突。


步骤 2:准备模型与数据

▶ 下载模型(以 Qwen1.5-0.5B 为例)

你可以从 Hugging Face 下载任意支持的模型:

代码语言:bash
复制
# 示例:下载 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 系列)需申请授权并手动下载。

▶ 准备训练数据(Alpaca 格式示例)

创建 data/alpaca_zh_demo.json

代码语言:json
复制
[
  {
    "instruction": "解释量子纠缠",
    "input": "",
    "output": "量子纠缠是量子力学中的一种现象..."
  },
  {
    "instruction": "写一首关于春天的诗",
    "input": "",
    "output": "春风拂面柳丝长,燕子归来筑巢忙..."
  }
]

支持格式:

  • alpaca:三字段(instruction, input, output)
  • sharegpt:对话形式(conversations: {from: 'human', value: '...'}, {from: 'gpt', value: '...'})

🛠️ 三、微调模型(命令行方式)

示例 1:使用 LoRA 微调 Qwen1.5-0.5B

代码语言:bash
复制
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

关键参数说明:

参数

含义

--model_name_or_path

模型路径

--dataset

数据集名称(对应 data/ 下的 json 文件名)

--template

提示模板(不同模型需配对,如 qwen, llama3, chatglm3

--finetuning_type

微调方式:lora, full, freeze, qlora

--lora_target

LoRA作用层:all, q_proj,v_proj, query_key_value

--output_dir

输出目录(保存 adapter)

--per_device_train_batch_size

单卡 batch size

--gradient_accumulation_steps

梯度累积步数(显存不足时增大此值)

--fp16

开启半精度加速训练

📌 所有参数均可保存到 YAML 配置文件,便于复用(见下文)。


🖼️ 四、使用 Web UI 训练(推荐新手)

启动可视化界面:

代码语言:bash
复制
python src/webui.py

访问 http://localhost:7860

Web UI 功能:

  1. Model:选择基础模型路径、模板、微调类型
  2. Dataset:上传或选择训练数据
  3. Training:设置 batch size、epoch、学习率等
  4. Advanced:设置 LoRA rank、target modules、量化选项
  5. Start:一键启动训练
  6. Inference:训练后直接测试模型效果

✅ 图形化操作,适合初学者快速上手!


📊 五、使用配置文件(YAML)管理实验

examples/train_lora/ 目录下有很多预设配置。

你也可以自定义 my_config.yaml

代码语言: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

运行命令:

代码语言:bash
复制
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py $(cat my_config.yaml | xargs)

或使用内置脚本:

代码语言:bash
复制
bash scripts/train.sh examples/train_lora/qwen_lora_sft.yaml

🤖 六、推理与部署

方法 1:命令行推理

代码语言:bash
复制
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

方法 2:API 启动(OpenAI 格式兼容)

代码语言:bash
复制
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 调用。


📈 七、高级功能

1. DPO(Direct Preference Optimization)偏好对齐

准备偏好数据(chosen vs rejected):

代码语言:json
复制
[
  {
    "prompt": "如何学习深度学习?",
    "chosen": "建议从吴恩达课程开始...",
    "rejected": "随便看看视频就行"
  }
]

训练命令:

代码语言:bash
复制
--stage dpo --dataset your_dpo_data --template qwen --finetuning_type lora ...

2. 多卡训练 & DeepSpeed

代码语言:bash
复制
torchrun --nproc_per_node=2 --master_port=29500 src/train_bash.py ... \
    --deepspeed examples/deepspeed/ds_z3_config.json

3. 量化训练(QLoRA)

代码语言:bash
复制
--quantization_bit 4 --finetuning_type qlora

4. 预训练 & 继续预训练

代码语言:bash
复制
--stage pt --dataset your_pretrain_corpus --cutoff_len 1024

❗ 八、常见问题

Q1:显存不足怎么办?

✅ 解决方案:

  • 使用 --quantization_bit 4 + --finetuning_type qlora
  • 增大 --gradient_accumulation_steps
  • 减小 --per_device_train_batch_size
  • 使用 --flash_attn(若支持)

Q2:如何选择 LoRA target modules?

参考:

模型类型

推荐 target

LLaMA / Qwen

q_proj,v_proj,k_proj,o_projall

ChatGLM

query_key_value,dense

Phi

q_proj,v_proj

可在 src/utils/constants.py 中查看各模型默认 target。

Q3:训练后模型怎么合并导出?

代码语言:bash
复制
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。


📚 九、资源推荐


✅ 总结:Llama Factory 使用流程图

代码语言:txt
复制
下载模型 → 准备数据 → 选择训练方式(LoRA/QLoRA/DPO)→ 
       ↓
   命令行 or WebUI 启动训练 → 监控 loss → 保存 Adapter → 
       ↓
   合并模型 or 直接加载推理 → API 部署 or 本地测试

🎯 Llama Factory 让大模型微调不再高不可攀 —— 无论你是学生、研究员还是工程师,都能快速定制属于自己的 AI 助手。

立即动手,开启你的 LLM 微调之旅吧!🚀

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📘 Llama Factory 使用指南 —— 轻松微调主流大模型(LLaMA、ChatGLM、Qwen、Baichuan、Phi、Gemma等)
    • ✅ 一、核心特性
    • 🚀 二、快速开始
      • 步骤 1:环境准备
      • 步骤 2:准备模型与数据
    • 🛠️ 三、微调模型(命令行方式)
      • 示例 1:使用 LoRA 微调 Qwen1.5-0.5B
      • 关键参数说明:
    • 🖼️ 四、使用 Web UI 训练(推荐新手)
      • Web UI 功能:
    • 📊 五、使用配置文件(YAML)管理实验
    • 🤖 六、推理与部署
      • 方法 1:命令行推理
      • 方法 2:API 启动(OpenAI 格式兼容)
    • 📈 七、高级功能
      • 1. DPO(Direct Preference Optimization)偏好对齐
      • 2. 多卡训练 & DeepSpeed
      • 3. 量化训练(QLoRA)
      • 4. 预训练 & 继续预训练
    • ❗ 八、常见问题
      • Q1:显存不足怎么办?
      • Q2:如何选择 LoRA target modules?
      • Q3:训练后模型怎么合并导出?
    • 📚 九、资源推荐
    • ✅ 总结:Llama Factory 使用流程图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档