首页
/ Qwen1.5训练全流程:Llama-Factory从零开始微调指南

Qwen1.5训练全流程:Llama-Factory从零开始微调指南

2026-02-05 05:14:09作者:韦蓉瑛

你是否还在为大模型微调的复杂流程感到困扰?显存不足、参数配置混乱、训练效率低下——这些问题是否让你望而却步?本文将带你使用Llama-Factory框架,从零开始完成Qwen1.5系列模型的微调,无需深厚的机器学习背景,只需简单几步即可拥有专属定制模型。读完本文,你将掌握全量参数微调、LoRA、QLoRA三种训练方式,了解数据准备、参数配置、模型合并的完整流程,并能根据硬件条件选择最适合的方案。

Llama-Factory简介

Llama-Factory是一个简单易用且高效的大模型训练框架,支持上百种大模型的训练,包括Qwen、LLaMA、Mistral等主流模型。其核心特性包括:

  • 多样化训练算法:支持预训练、指令微调(SFT)、奖励模型训练(RM)、PPO、DPO等多种训练范式
  • 灵活精度控制:从16比特全量微调至2比特QLoRA,适配不同硬件条件
  • 丰富加速技术:集成FlashAttention-2、Unsloth等加速算子,提升训练效率
  • 完整实验跟踪:支持TensorBoard、Wandb等实验面板,便于结果分析

环境准备

安装Llama-Factory

首先克隆项目仓库并安装依赖:

git clone --depth 1 https://gitcode.com/GitHub_Trending/qw/Qwen1.5
cd Qwen1.5/examples/llama-factory
pip install -e ".[torch,metrics]"

安装完成后验证版本:

llamafactory-cli version

若出现以下信息则表明安装成功:

----------------------------------------------------------
| Welcome to LLaMA Factory, version x.x.x                 |
|                                                        |
| Project page: https://gitcode.com/GitHub_Trending/qw/Qwen1.5 |
----------------------------------------------------------

数据准备

数据格式规范

训练数据需保存为jsonl格式,每条数据包含多轮对话,格式示例:

{
    "messages": [
        {"role": "system", "content": "你是一个 helpful 的助手。"},
        {"role": "user", "content": "介绍一下Qwen1.5模型"},
        {"role": "assistant", "content": "Qwen1.5是阿里云开发的大语言模型,具有..."}
    ]
}

数据注册配置

在Llama-Factory的data/dataset_info.json文件中注册自定义数据集:

"qwen_train_data": {
    "file_name": "path/to/your/data.jsonl",
    "formatting": "sharegpt",
    "columns": {"messages": "messages"},
    "tags": {
        "role_tag": "role",
        "content_tag": "content",
        "user_tag": "user",
        "assistant_tag": "assistant",
        "system_tag": "system"
    }
}

训练配置

Llama-Factory提供三种主流微调方案,可根据硬件条件选择:

全量参数微调

全量参数微调会更新模型所有参数,需要较多显存,配置文件:qwen2-7b-full-sft.yaml

核心参数说明:

model_name_or_path: Qwen/Qwen1.5-7B-Instruct
stage: sft
finetuning_type: full
learning_rate: 1.0e-5
per_device_train_batch_size: 1
gradient_accumulation_steps: 16
bf16: true
output_dir: saves/qwen1.5-7b/full/sft

LoRA微调

LoRA(Low-Rank Adaptation)仅更新部分低秩矩阵参数,显存占用较低,配置文件:qwen2-7b-lora-sft.yaml

核心参数说明:

model_name_or_path: Qwen/Qwen1.5-7B-Instruct
finetuning_type: lora
lora_target: all
lora_rank: 16
lora_alpha: 16
output_dir: saves/qwen1.5-7b/lora/sft

QLoRA微调

QLoRA在LoRA基础上增加量化处理,进一步降低显存需求,配置文件:qwen2-7b-qlora-sft.yaml

核心参数说明:

model_name_or_path: Qwen/Qwen1.5-7B-Instruct
finetuning_type: lora
quantization_bit: 4
quantization_method: bitsandbytes
lora_rank: 16
output_dir: saves/qwen1.5-7b/qlora/sft

三种方案对比

训练方式 显存占用 训练速度 硬件要求 适用场景
全量微调 42GB+ 较慢 高端GPU 追求最佳效果
LoRA 20GB+ 中等 中端GPU 平衡效果与效率
QLoRA 10GB+ 较快 入门GPU 硬件资源有限

开始训练

根据选择的方案执行相应命令:

全量参数训练

FORCE_TORCHRUN=1 llamafactory-cli train qwen2-7b-full-sft.yaml

LoRA训练

llamafactory-cli train qwen2-7b-lora-sft.yaml

QLoRA训练

llamafactory-cli train qwen2-7b-qlora-sft.yaml

训练过程中可通过TensorBoard监控损失变化:

tensorboard --logdir saves/qwen1.5-7b/qlora/sft/runs

模型合并

LoRA/QLoRA训练仅保存适配器权重,需合并至基础模型才能使用,配置文件:qwen2-7b-merge-lora.yaml

合并命令:

llamafactory-cli export qwen2-7b-merge-lora.yaml

核心参数说明:

model_name_or_path: Qwen/Qwen1.5-7B-Instruct
adapter_name_or_path: saves/qwen1.5-7b/lora/sft
export_dir: models/qwen1.5-7b-sft-merged
template: qwen

模型推理

合并后的模型可通过Transformers库加载使用:

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained(
    "models/qwen1.5-7b-sft-merged",
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("models/qwen1.5-7b-sft-merged")

messages = [
    {"role": "user", "content": "你好,介绍一下你自己"}
]
text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
inputs = tokenizer([text], return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=512)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)

常见问题解决

显存不足

  • 降低per_device_train_batch_size
  • 增加gradient_accumulation_steps
  • 改用QLoRA并降低quantization_bit
  • 启用bf16混合精度训练

训练不稳定

  • 调整学习率(建议范围:1e-5 ~ 2e-4)
  • 增加warmup_ratio(建议0.1~0.2)
  • 检查数据质量,过滤异常样本

推理结果异常

  • 确认合并权重时template参数正确设置为qwen
  • 检查推理时的对话模板是否与训练一致
  • 尝试调整生成参数(temperature、top_p等)

总结

本文详细介绍了使用Llama-Factory微调Qwen1.5模型的完整流程,从环境搭建到模型推理,涵盖数据准备、参数配置、训练执行等关键步骤。通过选择合适的微调方案(全量/LoRA/QLoRA),可在不同硬件条件下高效完成模型定制。更多高级特性可参考官方文档:docs/source/training/llama_factory.md

希望本指南能帮助你顺利完成Qwen1.5模型的微调工作,如有任何问题欢迎在项目仓库提交issue交流讨论。

登录后查看全文
热门项目推荐
相关项目推荐