大模型开发 (一)使用Llamafactory来微调qwen模型
大模型开发系统(一)
使用Llamafactory来微调qwen模型
首先介绍Llamafactory是一个开源、高效、易用的LLM微调框架,
由ModelScope社区推出。它支持多种主流开源大模型(如Qwen、Llama、ChatGLM、Baichuan等)的高效微调,提供了统一的训练接口和丰富的训练策略,大大降低了LLM微调的技术门槛。
Llamafactory 的核心特性
Llamafactory 具有以下突出特点:
- 统一接口:通过配置文件即可定义模型、数据、训练参数,无需编写大量代码。
- 高效训练:支持多种高效微调技术,如 LoRA、QLoRA、全参数微调等,显著降低显存消耗。
- 丰富的数据集支持:内置多种数据格式(如 Alpaca、ShareGPT、指令跟随格式),并支持自定义数据集。
- 可视化界面:提供 Web UI(Gradio),让用户可以通过图形界面轻松配置和启动训练。
- 多任务支持:支持指令微调(SFT)、奖励模型训练、DPO 对齐等多种任务。
使用 Llamafactory 微调 Qwen 模型的基本流程
下面以微调 Qwen2-7B 模型为例,介绍使用 Llamafactory 的基本步骤:
首先应该是确定自己的电脑是否有gpu/npu或者amd的显卡。在官网去看好像现在只支持这三个平台。
官方安装的网址:
cuda:
https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/installation.html
1. 环境准备
首先自己创建一个虚拟环境,进入虚拟环境之后拉依赖
1.1首先安装 Llamafactory 及其依赖:
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
pip install -r requirements/metrics.txt
如果出现环境冲突,请尝试使用 pip install --no-deps -e . 解决
可以自己去网站拉稳定版
1.2 LLaMA-Factory 校验
完成安装后,可以通过使用
llamafactory-cli version
来快速校验安装是否成功
如果您能成功看到类似下面的界面,就说明安装成功了。

1.3WebUI
LLaMA-Factory 支持通过 WebUI 零代码微调大语言模型。 在完成 安装 后,您可以通过
llamafactory-cli webui

点击网址
指令进入 WebUI:
WebUI 主要分为四个界面:训练、评估与预测、对话、导出。


2. 准备数据集
数据集的格式:
官方文档:
https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/data_preparation.html

dataset_info.json 包含了所有经过预处理的 本地数据集 以及 在线数据集。如果您希望使用自定义数据集,请 务必 在 dataset_info.json 文件中添加对数据集及其内容的定义。
支持 Alpaca 格式和 ShareGPT 格式的数据集。
Llamafactory 支持多种数据格式。这里以简单的指令跟随格式为例,创建一个 JSON 文件 dataset.json:
[
{
"instruction": "请用中文回答:什么是机器学习?",
"input": "",
"output": "机器学习是人工智能的一个分支,它使计算机系统能够从数据中学习并改进性能,而无需进行明确的编程。"
},
{
"instruction": "写一首关于春天的五言绝句。",
"input": "",
"output": "春风吹绿柳,花开满枝头。鸟语花香处,人间好景收。"
}
]
2.2这里为了快速训练,走个流程,使用项目里面自带的数据集:
进入/LlamaFactory-0.9.5/data/里面有数据集

可以选择的。数据集的区别自己百度。
2.3准备模型
下载一个模型
可以在webui上自动下载,又或者可以modelscope自己下载
国内下载推荐魔塔,很快的
首先需要下载modelscope这个库
进入虚拟环境
终端里面运行
pip install modelscope
2)然后下载模型:
模型有很多
微调的,量化的,基础的
使用的话根据自己情况
我下载基础的,
用来微调

modelscope download --model Qwen/Qwen3.5-0.8B-Base --local_dir ./dir
./dir是自己下载的位置
自己改一下
然后等下载好
就配置参数
3. 配置训练参数

语言zh
模型选择自己下载的
路径是你选择的路径
如果是下载的模型选择使用的下载库
微调的方法:

lora full freeze oft 这几种方法。他们的概念和区别是
LoRA(Low-Rank Adaptation,低秩适应):
- 概念:LoRA 是一种参数高效的微调方法,它通过在预训练模型的权重矩阵旁添加低秩分解的适配器(Adapter)来学习微调任务,而不是直接更新原始模型的所有参数。
- 原理:将权重更新 ΔW 分解为两个低秩矩阵的乘积:ΔW = BA,其中 B ∈ ℝ^(d×r),A ∈ ℝ^(r×k),r ≪ min(d,k)。这样只需要训练这两个小矩阵,大大减少了可训练参数。
- 优点:显存占用小、训练速度快、易于多任务切换(只需保存不同的适配器)、通常能保持原始模型的大部分能力。
- 缺点:可能无法完全适应需要大规模参数调整的任务。
- 适用场景:资源有限(如单卡消费级GPU)、需要快速实验、希望保持基础模型通用性。
Full(全参数微调):
- 概念:也称为标准微调,会更新模型的所有参数。
- 原理:在预训练模型的基础上,使用新数据对整个模型的所有权重进行梯度下降更新。
- 优点:理论上能达到最好的微调效果,因为所有参数都能适应新任务。
- 缺点:显存占用极大、训练速度慢、容易过拟合、需要大量数据。
- 适用场景:计算资源充足(多卡高显存)、有大量高质量领域数据、追求极致性能。
Freeze(冻结微调):
- 概念:冻结模型的大部分层(通常是底层或中间层),只微调顶层(如分类头)或少数特定层。
- 原理:保持预训练模型的知识表示不变,只让顶层适应新任务。
- 优点:训练极快、显存占用小、避免灾难性遗忘。
- 缺点:适应能力有限,如果任务与预训练差异大,效果可能不佳。
- 适用场景:任务与预训练任务相似、数据量少、需要快速部署、资源极度有限。
OFT(Orthogonal Fine-Tuning,正交微调):
- 概念:一种保持模型表示空间几何结构的微调方法,通过正交变换来更新权重,以保持模型在预训练中学到的特征之间的相对关系。
- 原理:约束权重更新 ΔW 为正交矩阵(或近似正交),即 W’ = W + ΔW,其中 ΔW 满足正交性条件,从而最小化对原始表示空间的扭曲。
- 优点:更好地保持预训练模型的泛化能力、减少灾难性遗忘、在某些任务上比LoRA更稳定。
- 缺点:实现相对复杂、计算开销比LoRA略高。
- 适用场景:需要保持模型强泛化能力、多任务学习、防止灾难性遗忘的重要应用。
简单对比总结:
| 方法 | 可训练参数量 | 显存占用 | 训练速度 | 效果潜力 | 适用资源 |
|---|---|---|---|---|---|
| LoRA | 很少(0.1%-1%) | 低 | 快 | 良好 | 单卡消费级GPU |
| Full | 全部(100%) | 非常高 | 慢 | 最好 | 多卡专业级GPU |
| Freeze | 极少(<1%) | 很低 | 很快 | 一般 | 低端GPU/CPU |
| OFT | 中等(1%-10%) | 中等 | 中等 | 良好-优秀 | 单卡中等GPU |
在实际选择时,可以根据以下原则:
- 资源优先:显存不足 → LoRA 或 Freeze;显存充足 → Full。
- 数据量:数据少 → LoRA 或 Freeze;数据多且质量高 → Full。
- 任务相关性:任务与预训练高度相关 → Freeze 或 LoRA;任务差异大 → Full 或 OFT。
- 部署需求:需要轻量部署、快速切换任务 → LoRA。
量化与高效训练配置
在配置训练参数时,除了选择微调方法,LLaMA-Factory 还提供了多种量化技术和训练加速选项,以进一步降低显存占用、提升训练速度。

量化(Quantization)
量化是一种通过降低模型权重和激活值的数值精度来减少模型内存占用和计算开销的技术。在大型语言模型(LLM)微调中,量化技术尤为重要,它使得在消费级硬件上运行数十亿参数模型成为可能。LLaMA-Factory 支持多种量化方法,适用于 QLoRA 等高效微调场景。
量化等级(Quantization Bits):
- 4-bit 量化(QLoRA-4):将模型权重压缩至 4 位整数(INT4),显存占用最低,适合在消费级 GPU(如 RTX 4060 8GB)上运行 7B/13B 模型。精度损失相对可控,是资源受限时的首选。QLoRA-4 通常能将模型显存占用减少到原始 FP16 模型的 1/4 左右,但可能会带来约 1-3% 的性能下降(取决于任务和数据)。它特别适合快速原型验证、资源有限的个人开发者或对推理延迟要求不高的应用场景。
- 8-bit 量化(QLoRA-8):将模型权重压缩至 8 位整数(INT8),在显存节省和精度保留之间取得较好平衡,适合对模型效果要求稍高、且显存有限的场景。8-bit 量化通常能将显存占用减少约一半,同时性能损失极小(通常在 1% 以内),是生产环境中常用的折中方案。
量化方法(Quantization Methods):
- bnb(BitsAndBytes):由 Hugging Face 开发,支持 4-bit 和 8-bit 量化,集成在
transformers库中,使用方便,社区支持广泛。它提供了load_in_4bit和load_in_8bit等简单接口,并支持多种量化数据类型(如 nf4、fp4)。BitsAndBytes 是目前最成熟、最稳定的量化方案,兼容性最好。 - hqq(Half-Quadratic Quantization):一种较新的量化方法,旨在更好地保持模型性能,尤其适合低比特量化(如 2-bit、3-bit)。HQQ 通过优化量化过程,在极低比特下仍能保持较好的模型能力,适合对模型大小有极端压缩需求的边缘设备部署。
- eetq(Efficient Engine for Transformer Quantization):专为 Transformer 模型优化的量化推理引擎,训练时也可结合使用以提升效率。EETQ 针对 Transformer 架构进行了深度优化,在保持精度的同时提供更高的推理速度,适合对延迟敏感的生产环境。
量化技术的工作原理:
量化本质上是在模型的权重和激活值上应用一个映射函数,将高精度浮点数(如 FP16、BF16)转换为低精度整数(如 INT8、INT4)。这个过程包括:
- 校准(Calibration):使用一小部分数据确定权重和激活值的动态范围。
- 量化(Quantization):将浮点数值映射到整数表示。
- 反量化(Dequantization):在计算时再将整数转换回浮点数进行运算。
QLoRA(Quantized Low-Rank Adaptation)结合了量化和低秩适配技术,在保持模型性能的同时大幅减少显存需求。它首先将预训练模型量化为 4-bit,然后在此基础上添加可训练的 LoRA 适配器,只训练这些适配器而不更新原始量化权重。
如何选择量化配置?
- 追求极致显存节省:选择 4-bit + bnb。适合单卡消费级 GPU(如 RTX 3060 12GB、RTX 4060 8GB)运行 7B-13B 模型。
- 平衡速度与精度:选择 8-bit + bnb。适合需要较好模型效果且显存有限的场景,如 RTX 4070 12GB 运行 13B-20B 模型。
- 尝试最新量化技术:可实验 hqq 或 eetq,但需注意兼容性和稳定性。HQQ 适合需要极低比特量化的边缘部署,EETQ 适合对推理速度有高要求的场景。
- 生产环境建议:对于大多数应用,8-bit bnb 量化提供了最佳平衡;对于资源极度受限的场景,4-bit bnb 是可靠选择。
量化配置示例:
在 Web UI 中,你可以在“量化”选项卡中选择相应的等级和方法。在配置文件中,可以通过以下参数指定:
# 量化配置
quantization_bit: 4 # 4-bit 或 8-bit 量化
quantization_method: bnb # 量化方法:bnb、hqq、eetq
quantization_type: nf4 # 量化数据类型:nf4、fp4(仅4-bit)
double_quantization: true # 是否使用双重量化(进一步压缩)
注意事项:
- 量化会引入一定的精度损失,对于复杂任务可能需要更多数据或更长时间的训练来补偿。
- 不同模型对量化的敏感度不同,建议在最终部署前进行充分的评估测试。
- 量化模型在推理时可能需要额外的反量化开销,这会略微增加推理延迟。
- 某些硬件(如某些 NPU)可能对特定量化格式有更好的支持,选择时需考虑硬件兼容性。
通过合理选择量化配置,你可以在有限的硬件资源下,高效地微调和部署大型语言模型。
RoPE 插值(RoPE Interpolation)
RoPE(Rotary Position Embedding)旋转位置编码 是大多数现代 LLM(包括 Qwen)使用的位置编码。当微调时上下文长度超过预训练长度(例如,Qwen2-7B 预训练长度为 32768,但你需要 65536),就需要使用 RoPE 插值来扩展位置编码,避免模型在长文本上表现不佳。
LLaMA-Factory 支持多种 RoPE 插值方法:
- 线性(linear):最简单的插值方式,将位置索引按比例缩放。
- 动态 NTK(dynamic NTK):根据当前序列长度动态调整缩放因子,在短文本上保持原性能,在长文本上平滑扩展。
- YaRN(Yet another RoPE extensioN):更先进的插值方法,能更好地保持模型在长短文本上的性能。
选择建议:
- 如果微调任务不需要超过预训练长度太多(例如 < 1.5 倍),可使用 线性 插值。
- 如果需要较大扩展(例如 2 倍以上),推荐 动态 NTK 或 YaRN。
在配置中,可通过 rope_scaling 参数设置,例如 rope_scaling: {type: "linear", factor: 2.0}。
训练加速方法
为了进一步提升训练速度,LLaMA-Factory 集成了多种加速内核和优化技术:
- auto:自动选择当前硬件和模型配置下的最优加速方法。
- flashattn2(Flash Attention 2):一种高效的自注意力实现,大幅减少显存占用并提升训练速度,尤其适合长序列。建议在支持 Flash Attention 2 的 GPU(如 Ampere 架构及以上)上开启。
- unsloth:一个专注于高效微调的开源库,通过内核融合、梯度检查点优化等技术,显著提升 LoRA/QLoRA 的训练速度。
- liger_kernel:LLaMA-Factory 自研的高效训练内核,针对特定硬件和模型进行了深度优化。
配置示例(在 train_config.yaml 中):
# 量化配置
quantization_bit: 4 # 4-bit 量化
quantization_method: bnb # 使用 BitsAndBytes
# RoPE 插值配置(如需扩展上下文长度)
rope_scaling:
type: dynamic_ntk # 使用动态 NTK 插值
factor: 2.0 # 将上下文长度扩展至 2 倍
# 加速配置
flash_attn: true # 启用 Flash Attention 2
unsloth: false # 根据需求开启
use_liger_kernel: true # 启用 Liger 内核加速
通过合理配置量化、RoPE 插值和加速方法,你可以在有限的硬件资源下,更高效地完成大模型微调任务。
创建配置文件 train_config.yaml(或直接使用命令行参数):
model_name_or_path: Qwen/Qwen2-7B-Instruct
dataset_path: ./dataset.json
template: qwen
finetuning_type: lora
lora_target: all
output_dir: ./output
per_device_train_batch_size: 4
gradient_accumulation_steps: 4
learning_rate: 1e-4
num_train_epochs: 3
logging_steps: 10
save_steps: 100
eval_steps: 100
其他参数:


其他参数自己调整

首先设置保存的文件夹和路径。然后点击开始训练
训练在webui和终端里面都会有log信息。
4. 启动训练
使用命令行启动训练:
llamafactory-cli train \
--stage sft \
--model_name_or_path Qwen/Qwen2-7B-Instruct \
--dataset ./dataset.json \
--template qwen \
--finetuning_type lora \
--output_dir ./output \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--learning_rate 1e-4 \
--num_train_epochs 3
或者使用 Web UI:
llamafactory-cli webui
然后在浏览器中打开 http://localhost:7860,通过界面配置并启动训练。
5. 模型评估与推理
训练完成后,可以使用以下命令进行推理测试:
llamafactory-cli export \
--model_name_or_path ./output \
--template qwen \
--finetuning_type lora
llamafactory-cli chat \
--model_name_or_path ./output \
--template qwen
PS:我是在wsl2里面安装的ubuntu22.04的。然后拉取下来的,自己安装
然后跑起来的。没有问题

然后训练的模型保存到的路径

流程还是很简单的
能够轻松微调模型
有问题留言
总结
Llamafactory 为开发者提供了一个极其便捷的 LLM 微调解决方案。通过简单的配置和命令,即可对 Qwen 等主流大模型进行高效微调,使其更好地适应特定领域或任务。无论是研究还是生产部署,Llamafactory 都能显著提升开发效率。
Llamafactory
更多推荐

所有评论(0)