LlamaFactory微调框架的使用

一、基础环境准备

最好使用NVIDIA CUDA的显卡

1.1 intel的显卡使用操作

(1)windows方案:

在终端/命令行里执行,不是在 Python 代码里执行。如果你是 Windows,按这个来:

  1. 打开 开始菜单

  2. 搜索 PowerShell 或 Windows Terminal

  3. 如果你用了 Conda,先激活环境:

  4. conda activate llamafactory

  5. 然后执行:

  6. pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/xpu

    安装完后,再测试 A770 是否被 PyTorch 识别:

    python -c "import torch; print(torch.__version__); print(torch.xpu.is_available()); print(torch.xpu.get_device_name(0) if torch.xpu.is_available() else 'no xpu')"

    如果输出里有 True,并显示 Intel Arc 之类的设备名,就说明装对了。

(2)下一步就是安装/进入 LLaMA-Factory。

建议不要在 C:\WINDOWS\system32 里继续操作,换到一个项目目录,比如:

cd D:\

mkdir ai

cd ai

然后执行:

git clone --depth 1 https://github.com/hiyouga/LlamaFactory.git

cd LlamaFactory

pip install -e . pip install -r requirements/metrics.txt

装好后测试:

llamafactory-cli help

然后启动 Web UI:

llamafactory-cli webui

二、参数说明

2.1 微调方法的区别

(1)full:全参数微调

会改动模型几乎所有参数。效果潜力最大,但显存、时间、数据要求最高,也最容易把原模型能力训坏。适合资源很多、数据质量高、想深度改变模型行为的场景。

(2)freeze:冻结部分参数微调

只训练一小部分层,其他层不动。比 full 省资源,但可塑性也弱一些。适合想轻微适配,或者机器显存不够 full 的情况。

(3)lora:LoRA 微调

最常用。它不直接大改原模型,而是在模型里加一小组"可训练适配器"。训练快、省显存,最后得到的是一个 LoRA 权重文件。使用时通常是"基础模型 + LoRA"。

你截图里选的就是 lora,一般新手和大多数业务微调都推荐这个。

(4)oft:OFT 微调

也是参数高效微调的一种,思路是用正交变换去调整模型表示。它有时比 LoRA 更稳定、保留原模型能力更好,但生态和常用程度不如 LoRA。一般不是首选,除非你明确知道要用它。

简单对比:

方法 改动范围 资源需求 常用程度 适合
full 最大 最高 深度定制、大资源
freeze 中/小 轻量适配
lora 最高 大多数微调
oft 低/中 较少 特定参数高效微调

2.2 检查点路径是什么

"检查点"就是训练过程中或训练结束后保存下来的模型状态,英文叫 checkpoint。

它通常有这些作用:

  1. 从某个模型继续训练

    比如你之前已经训练了 1000 步,现在想接着训,就填之前保存的检查点路径。

  2. 加载已经训练好的 LoRA / 模型权重

    如果你不是从零开始微调,而是基于某个已有微调结果继续调,就填这里。

  3. 训练中断后恢复

    比如电脑断电、程序崩了,可以从 checkpoint 恢复,不用重新开始。

  4. 选择某个阶段的效果

    有时候第 800 步比第 2000 步效果好,检查点可以让你回到那个版本。

如果你是第一次训练,一般"检查点路径"可以不填。

如果你已经有之前训练出来的 LoRA 或 checkpoint,才需要填它。

2.3 量化等级

量化就是把模型权重从高精度压到低精度,目的是省显存。

none:不量化。显存占用最高,但最稳,效果损失最小。显存够的话优先选这个。

8bit 更省显存,效果通常损失较小。

4bit 最省显存,适合显存紧张时训练 LoRA,也就是常说的 QLoRA,但可能更慢或略有精度损失。

简单说:

显存占用 稳定性 适合
none 最好 显存够、追求稳定
8bit 较好 想省显存
4bit 最低 略弱 显存不够、QLoRA

2.4 量化方法

这是选择用哪个库/算法来做量化。

bnb:BitsAndBytes。最常见,通常用于 4bit/8bit 量化,做 LoRA/QLoRA 时经常用它。

hqq:另一种量化方案,某些模型上速度或精度表现不错,但通用性不如 bnb。

eetq:偏推理量化,有些环境支持较好。

awq / gptq:更多用于已经量化好的模型推理,不一定适合训练。

2.5 对话模板

它决定训练数据会被包装成什么聊天格式。

比如同一条数据:

用户:帮我写一段摘要 助手:好的......

不同模型需要的格式不一样。有的模型要 <|user|>,有的要 <|im_start|>user,有的要 INST.../INST

常见区别:

模板 适合模型
qwen Qwen / Qwen2 / Qwen2.5 / Qwen3
llama2 Llama 2 Chat
llama3 Llama 3 / 3.1 Instruct
chatml 使用 ChatML 格式的模型
alpaca Alpaca 风格指令数据
baichuan Baichuan 系列

这个选错会很影响效果。模型可能学不到正确的"用户/助手"关系,表现为回答格式怪、不会停、角色混乱。

2.6 RoPE 插值方法

RoPE 是模型处理位置信息的方法。RoPE 插值主要用于扩展上下文长度。

none:不扩展,使用模型原本的上下文长度。最稳。

linear:线性扩展上下文。简单直接,但长文本效果可能一般。

dynamic:动态缩放,通常比 linear 灵活。

yarn:常用于长上下文扩展,效果可能更好,但需要模型和配置支持。

ntk:另一类长上下文缩放方式,有些模型适配较好。

如果你只是普通微调,比如 2k、4k、8k 长度以内,通常选 none。

只有你想把模型训成支持更长上下文,比如 32k、64k,才考虑改它。

2.7 加速方式

这是训练时用什么底层优化来提速、省显存。

auto:自动选择,一般推荐。框架会根据你的环境、显卡、库版本自己决定。

none:不用特殊加速。最兼容,但可能慢。

flash_attn / fa2:FlashAttention,加速注意力计算,长文本训练很有用,显存也更省,但需要显卡和环境支持。

sdpa:PyTorch 自带的 scaled dot product attention,兼容性较好。

unsloth:一些训练框架里会有,LoRA 训练很快,但需要对应环境支持。

2.8 Train

训练/微调模型用的。你在这里选模型、数据集、LoRA/full、学习率、轮数、batch size 等,然后开始训练。

适合场景:你想让模型学你的数据、风格、任务格式,比如客服问答、文案风格、分类任务、领域知识回答。

2.9 Evaluate & Predict

评估和批量预测用的。

训练完后,用验证集/测试集看看模型效果,或者给一批输入,让模型批量生成输出。

适合场景:想知道训练效果好不好;比较不同 checkpoint 哪个更好;对一批样本做测试。

2.10 Chat

聊天测试用的。加载当前模型或训练好的 LoRA,直接对话,人工感受效果。

适合场景:训练完想快速试试模型回答是否符合预期;检查风格、语气、是否学会任务。

2.11 Export

导出模型用的。把训练好的 LoRA 或合并后的模型导出,方便部署、推理、分享或放到其他工具里用。

适合场景:训练满意后,要拿去部署;想把 LoRA 合并到基础模型;想导出成可加载的模型目录。

2.12 训练阶段

常见训练阶段大概有这些:

训练阶段 用途 适合场景
Supervised Fine-Tuning / SFT 学习标准问答、指令、风格 最常用,新手优先选
Pre-Training 继续预训练,学大量纯文本知识 有大量领域语料,比如法律、医学、代码
Reward Modeling 训练奖励模型 做 RLHF/DPO 前的偏好建模
PPO 强化学习微调 高阶对齐训练,普通用户很少用
DPO 偏好优化 有"好回答/坏回答"成对数据时用
KTO / ORPO 等 也是偏好优化 想让模型更偏向某类回答

2.13 数据路径

截图里是 data,它表示训练程序去哪个文件夹找数据集配置和数据文件。一般是项目目录下的 data 文件夹。

比如可能是:项目目录/ data/ alpaca_zh_demo.json dataset_info.json

它的作用是告诉系统:"数据文件在这里,你去这个目录里找。"

2.14 数据集

它表示这次训练真正使用哪个数据集。alpaca_zh_demo 通常是一个中文 Alpaca 格式的演示数据集,用来测试流程是否能跑通。

它的作用是决定模型学什么。

比如你选:

alpaca_zh_demo:模型学演示问答数据。

my_customer_service:模型学你的客服数据。

my_writer_style:模型学你的文案风格数据。

law_qa:模型学法律问答数据。

2.15 学习率

控制模型每一步改动多大。

设置 效果 风险
太大 学得快 容易训崩、回答变怪
太小 学得慢,可能学不进去
合适 稳定学到风格/任务 最理想

常见建议:

场景 推荐
LoRA 微调 1e-4 到 5e-5
数据很少,怕过拟合 5e-5 或 2e-5
full 全参数微调 1e-5 到 2e-5
只想轻微学风格 2e-5 到 5e-5

2.16 训练轮数

模型把数据集完整看几遍。

你现在是 20,意思是整份数据重复训练 20 遍。

轮数 效果
太少 学不充分
适中 学到规律
太多 过拟合,变成背答案

常见建议:

数据量 推荐轮数
100 条以内 10-30
几百条 5-15
几千条 2-5
几万条 1-3

如果你现在用的是 demo 数据,20 可以跑测试。如果是正式数据,数据越多,轮数通常越少。

2.17 最大梯度范数

防止训练时参数更新突然过大,相当于"刹车"。

你现在是 1.0,很常见。

效果
0 或不限制 可能训练不稳定
0.5 更保守
1.0 常用、稳定
2.0 放宽限制

一般保持 1.0 就行。训练 loss 爆炸、突然变 NaN 时,可以降到 0.5。

2.18 最大样本数

总共最多拿多少条数据参与训练,最多使用多少条训练样本。

你现在是 500,意思是最多拿 500 条数据训练。

作用:快速测试流程、限制训练时间、抽样小规模训练。

场景 设置
只是试跑流程 100-500
小数据正式训练 填全部数量或 0/空
大数据先实验 1000-5000
正式训练 不限制,使用全量数据

2.19 计算类型

控制训练时用什么数值精度。

类型 特点 适合
fp32 最稳,显存最大 很少用于大模型微调
fp16 省显存,速度快 老显卡常用
bf16 比 fp16 更稳定 新显卡优先
fp8 更省更快 新硬件/高级场景

一般建议:

显卡 推荐
RTX 30/40 系列 bf16 通常可用
A100/H100 bf16
较老显卡 fp16
不确定/报错 换 fp16 或 fp32

bf16 是很好的选择,前提是显卡支持。

2.20 截断长度

每条样本最多保留多少 token。超过就截掉。

它会影响两件事:训练能看到多长的上下文;显存占用多少。

长度 适合
512 短问答、分类、简单指令
1024 普通对话、较长回答
2048 长文案、长问答
4096+ 长上下文任务,显存压力大

如果你的数据是短问短答,512 够用。如果你训练长文案、长客服对话、知识问答,建议 1024 或 2048。

2.20 批处理大小

每张 GPU 一次处理多少条样本。

效果
省显存,但训练慢、波动大
更快更稳,但吃显存

显存不够就降低它。比如报 CUDA out of memory,就从 2 降到 1。

2.21 梯度累积

把多次小 batch 的梯度攒起来,再更新一次。

实际有效 batch size 大概是:

有效 batch size = 批处理大小 × 梯度累积 × GPU 数量

你现在如果是 1 张 GPU:

2 × 8 × 1 = 16

常见建议:

显存情况 batch size 梯度累积
显存小 1 8-16
显存中等 2 4-8
显存大 4-8 2-4

你现在 2 + 8 是比较稳的配置。

2.22 验证集比例

从训练数据里切多少出来做验证,不参与训练。

你现在是 0,表示不划分验证集。

含义
0 不验证,只训练
0.05 5% 数据做验证
0.1 10% 数据做验证
0.2 20% 数据做验证

建议:

场景 设置
只是跑通流程 0 可以
正式训练 0.05 或 0.1
数据很少 0 或单独准备验证集
想看是否过拟合 0.1

如果你想知道模型有没有越训越差,建议设 0.05 或 0.1。

2.23 学习率调节器

控制学习率在训练过程中怎么变化。

类型 特点
constant 学习率一直不变
linear 逐渐下降
cosine 先高后平滑下降,常用
polynomial 多项式下降
inverse_sqrt 适合某些大规模训练
reduce_on_plateau 指标不变好时降低学习率

一般建议:

场景 推荐
LoRA/SFT 常规训练 cosine
想简单稳定 linear
数据很少、训练步数很少 constant 或 cosine
大规模训练 cosine/linear

你现在 cosine 是常用且合理的。

一套好用默认值

如果你是用 LoRA 训练中文问答/风格数据,可以先这样:

学习率:5e-5

训练轮数:3-10,数据很少才到 20

截断长度:512 或 1024

批处理大小:1 或 2

梯度累积:8 或 16

最大梯度范数:1.0

验证集比例:0.05

计算类型:bf16,报错就 fp16

学习率调节器:cosine

最大样本数:正式训练不要限制

三、其他参数设置板块

3.1 日志间隔

意思是:每训练多少个 step 输出一次日志。

比如:日志间隔 = 5,就是每训练 5 步打印一次 loss、学习率、训练速度等信息。

影响:

效果
小,比如 1-5 日志更密,方便观察,但略微影响速度
大,比如 50-100 日志少,界面更清爽
太大 不方便及时发现 loss 异常

建议:测试时用 5 或 10;正式训练可以用 10-50。

3.2 保存间隔

意思是:每训练多少个 step 保存一次 checkpoint。

比如:保存间隔 = 100,就是每 100 步保存一次模型/LoRA 检查点。

影响:

效果
保存更频繁,不容易丢进度,但占硬盘
省硬盘,但中断后可能损失更多进度
太小 checkpoint 太多,占空间,训练也会被保存操作打断

建议:

场景 推荐
小数据试训 50-100
正式训练 200-1000
训练很久,怕中断 适当小一点
硬盘紧张 大一点,或限制保存数量

2.26 预热步数

预热步数就是训练刚开始时,不直接用完整学习率,而是从很小的学习率慢慢升上去。

作用:让训练开头更稳定。

比如:预热步数 = 100,就是前 100 步慢慢升学习率。

影响:

效果
0 不预热,直接开始训练
小比例预热 更稳定
太大 前面学得太慢

建议:

如果训练总步数很少,0 也可以。

正式训练建议用总步数的 3%-10%。

比如总共 1000 步:

预热步数:30-100

如果训练一开始 loss 波动很大、容易崩,可以加预热。

3.3 NEFTune 噪声参数

你现在是 0,表示不开启。

NEFTune 是一种训练增强技巧,会给 embedding 加一点噪声,让模型不那么死记硬背,可能提升泛化能力。

影响:

效果
0 不启用
1-5 轻微增强
5-10 更强噪声,可能提升泛化,也可能影响稳定

适合:数据少、容易过拟合、想让模型更泛化时可以试。

不适合:你想让模型严格记住格式、术语、固定答案时,不建议乱开。

建议:新手保持 0。如果小数据过拟合明显,可以试 5。

3.4 额外参数

这是传给训练器的额外 JSON 参数。

optim 是优化器,决定模型怎么根据梯度更新参数。

adamw_torch 是 PyTorch 自带 AdamW,稳定、通用。

常见优化器:

参数 特点
adamw_torch 稳定通用,推荐
adamw_bnb_8bit 更省显存,需要 bitsandbytes
paged_adamw_8bit QLoRA 常用,省显存
sgd 很少用于大模型微调
adafactor 省显存,但调参更讲究

建议:

普通 LoRA:adamw_torch 可以。

显存紧张、4bit QLoRA:可以考虑 paged_adamw_8bit 或 adamw_bnb_8bit。

2.28 序列打包

把多条短样本拼成一个长样本训练。

作用:提高训练效率,减少 padding 浪费。

适合:

场景 是否开启
数据都是短问答 可以开
数据长度差异很大 可以开
多轮对话、格式很重要 谨慎
新手试训 可先不开

影响:开了以后训练更快、显存利用更好,但如果数据格式处理不好,可能让样本之间互相影响。

3.5 使用无污染打包

这是对"序列打包"的增强,避免拼接后的不同样本之间互相注意到对方。

简单说:

普通打包可能把 A 样本和 B 样本拼一起,模型训练时可能"看到"不该看的上下文。

无污染打包会尽量隔离它们。

建议:

如果开启"序列打包",最好也开启"使用无污染打包"。

如果不开序列打包,这个通常没意义。

3.6 学习提示词

不在提示词部分添加掩码,仅适用于 SFT。

简单理解:

默认 SFT 通常只让模型学习"助手回答",不让它学习"用户问题/提示词"。

开启后,模型也会学习提示词部分。

一般不建议开。

适合:你确实希望模型学会完整文本格式,包括用户提示词的写法。

不适合:普通问答、客服、助手训练。因为你主要想让模型学会怎么回答,而不是复读用户输入。

3.7 不学习历史对话

只学习最后一轮对话,仅适用于 SFT。

比如一条多轮数据:

用户1 助手1 用户2 助手2 用户3 助手3

开启后,只主要学习最后的 助手3。

适合:多轮对话数据里,最后一轮才是你最关心的答案。

不适合:你希望模型学习完整多轮对话能力。

建议:

单轮数据无所谓。

多轮客服/角色对话,通常不开。

如果历史对话质量参差不齐,只想学最后答案,可以开。

3.8 更改词表大小

更改分词器词表和 embedding 大小。

通常用于你添加了新 token。

比如加了:

<tool> </tool> <image>

这类特殊 token,就可能需要调整词表大小。

新手一般不要开。

乱开可能导致加载模型或导出模型出问题。

3.9 使用 LLaMA Pro

只训练扩展后的参数。

这是比较特殊的训练方式,和 LLaMA Pro 架构/扩展参数有关。普通 LoRA/SFT 基本不用。

建议:除非你明确知道自己在做 LLaMA Pro,否则不要开。

3.10 启用思考模式

你截图里开启了。

这个一般是针对带 reasoning / thinking 格式的模型,比如某些 Qwen、DeepSeek、推理模型,让训练或对话时使用"思考模式"。

作用:让模型按带思考链的格式训练/推理,可能会输出或内部使用类似"思考过程"的结构。

适合:

场景 建议
训练推理模型 可以开
数据里包含思考过程 可以开
普通客服/文案/摘要 不一定需要
不想模型啰嗦思考 关闭

如果你的训练数据没有"思考过程",只是普通问答,开启它不一定有帮助。

3.11 启用外部记录面板

用于记录训练实验,比如 loss 曲线、学习率曲线、显存、评估指标。

常见选项:

作用
none 不记录
tensorboard 本地记录,适合自己看
wandb Weights & Biases 云端记录,适合团队/远程

建议:

简单训练选 none。

想看曲线、比较多个实验,选 tensorboard。

团队协作或远程实验管理,选 wandb。

比较推荐的新手设置

普通 LoRA/SFT 微调:

日志间隔:5 或 10

保存间隔:100-500

预热步数:总步数的 3%-10%,不知道就 0 或 50

NEFTune:0

额外参数:{"optim": "adamw_torch"}

序列打包:短数据多可以开

无污染打包:开了序列打包就开

学习提示词:不开

不学习历史对话:普通多轮不开

更改词表大小:不开

使用 LLaMA Pro:不开

启用思考模式:普通问答不开,推理数据才开

外部记录面板:none 或 tensorboard


下面这块叫部分参数微调设置 ,主要用于 freeze 这种微调方法:只训练模型的一部分层/模块,其它参数冻结不动

如果你当前用的是 LoRA,这几个参数通常不是最关键;如果你选择的是 freeze,它们就很重要。

四、部分参数微调设置

4.1 可训练层数

意思是:允许训练多少层模型。

大模型通常有很多层,比如 32 层、40 层、80 层。

这个参数控制只训练其中几层。

说明里写的:

最末层(+)/最前端(-)可训练隐藏层的数量

意思是:

设置 含义
2 训练最后 2 层
4 训练最后 4 层
-2 训练最前面 2 层
-4 训练最前面 4 层
0 可能表示不训练隐藏层,具体看工具实现

一般后面的层更接近输出风格、任务表达;前面的层更接近底层语言特征。

建议:

场景 推荐
轻微改风格/格式 1-2
领域问答/客服适配 2-4
想更明显改变能力 4-8
数据很少 1-2
数据多、显存够 4+
新手 2

影响:

层数越少 层数越多
更省显存 更吃显存
更不容易训坏 可塑性更强
学得浅 学得深
适合小数据 需要更多数据

4.2 可训练模块

意思是:在可训练层里,哪些模块允许训练。

模型一层里面有很多模块,比如注意力模块、MLP 模块、输出层等。这个参数决定训练哪部分。

all 表示这些可训练层里的所有模块都训练。

常见模块名可能有:

q_proj k_proj v_proj o_proj gate_proj up_proj down_proj embed_tokens lm_head

大概区别:

模块 作用
q_proj/k_proj/v_proj/o_proj 注意力相关,影响模型理解上下文
gate_proj/up_proj/down_proj MLP 相关,影响知识、表达和变换能力
embed_tokens 词嵌入,影响新词/token
lm_head 输出头,影响最终生成词分布
all 全部训练

建议:

场景 推荐
不确定 all
想省显存 只训 q_proj,v_proj 或注意力模块
想更强适配 all
加了新特殊 token 可能需要 embed_tokens,lm_head
普通 freeze 微调 all 搭配少量层

注意:模块名必须和模型内部名字一致,写错会导致没训到或报错。

4.3 额外模块(非必填)

这个是:除了上面可训练层之外,额外指定一些模块也参与训练。

比如你可训练层数设为 2,只训练最后 2 层。

但你还希望输出头 lm_head 也训练,就可以在这里填:

lm_head

如果多个模块,用英文逗号分隔:

embed_tokens,lm_head

适合场景:

场景 额外模块
添加了新 token embed_tokens,lm_head
想让输出风格变化更明显 lm_head
只训练少量层但希望适应新词 embed_tokens
普通训练 留空

影响:

填得越多 结果
可训练参数更多 更吃显存
适配能力更强 更容易过拟合
训练更慢 需要更好数据

这三个组合怎么理解

比如:

可训练层数:2 可训练模块:all 额外模块:空

意思是:

只训练模型最后 2 层里的所有模块,其它层冻结。

如果是:

可训练层数:4 可训练模块:q_proj,v_proj 额外模块:lm_head

意思是:

训练最后 4 层里的 q_proj 和 v_proj,另外再训练 lm_head。

如果是:

可训练层数:2 可训练模块:all 额外模块:embed_tokens,lm_head

意思是:

训练最后 2 层全部模块,同时词嵌入和输出头也训练,适合加了新 token 的情况。

怎么设置合适

普通新手/小数据:

可训练层数:2 可训练模块:all 额外模块:空

数据稍多,想适配更明显:

可训练层数:4 可训练模块:all 额外模块:空

显存紧张:

可训练层数:2 可训练模块:q_proj,v_proj 额外模块:空

加了特殊 token:

可训练层数:2 可训练模块:all 额外模块:embed_tokens,lm_head

这块更多是给 freeze 部分参数微调用的。


五、LoRA 参数设置

这是 LoRA 参数设置。LoRA 的核心思路是:不直接大改原模型,而是在一些层上加"小适配器"。这些参数决定适配器有多大、训得多猛、加在哪些模块上。

5.1 LoRA 秩

也叫 rank、r。它决定 LoRA 适配器的容量大小。

效果
小,比如 4/8 省显存、不容易过拟合,但学习能力弱一些
中,比如 16/32 适配能力更强,常用
大,比如 64+ 更能学复杂任务,但吃显存、容易过拟合

建议:

场景 推荐
小数据、风格微调 8
普通问答/客服/指令微调 8-16
复杂领域任务 16-32
数据很多、显存足 32-64

一般新手用 8 或 16 就行。

5.2 LoRA 缩放系数

也叫 alpha。它控制 LoRA 适配器对原模型的影响强度。

通常会设成:

alpha = rank 的 2 倍

比如:

rank 8 -> alpha 16 rank 16 -> alpha 32

alpha 越小 alpha 越大
改动更温和 影响更强
更稳 更容易学进去
可能学不明显 可能训过头

建议:

LoRA 秩 缩放系数
8 16
16 32
32 64

5.3 LoRA 随机丢弃

也叫 dropout。训练时随机丢掉一部分 LoRA 连接,防止过拟合。

效果
0 不丢弃,学得更充分
0.05 轻微防过拟合
0.1 更强正则
0.2+ 可能影响学习,不常用

建议:

场景 推荐
数据少,容易背答案 0.05-0.1
数据较多 0 或 0.05
只做风格微调 0.05
想让模型强记格式 0

新手可以设 0.05,比 0 更稳一点。

如果数据很多,0 也可以。

5.4 LoRA+ 学习率比例

LoRA+ 是一种给 LoRA 的 A/B 矩阵设置不同学习率的方法。

你现在是 0,表示不开启 LoRA+。

含义
0 不启用
4/8/16 启用 LoRA+,设置学习率比例

作用:可能让 LoRA 学得更快、更好,但属于进阶参数。

建议:

普通训练保持 0。

如果你知道要用 LoRA+,可以试 16。

新建适配器

如果勾选,就是重新创建一个新的 LoRA 适配器。

如果不勾选,可能会加载已有适配器继续训练。

适合:

场景 是否勾选
第一次训练新的 LoRA 勾选
从已有 LoRA 继续训练 不勾选
检查点路径已经是 LoRA,想接着训 不勾选

如果你没有加载已有 LoRA,通常应该勾选或保持默认自动新建。

5.5 使用 rsLoRA

rsLoRA 是 rank-stabilized LoRA,意思是"秩稳定版 LoRA"。

作用:当 LoRA rank 比较大时,让训练更稳定。

适合:

场景 是否开启
rank 很小,如 8/16 可不开
rank 较大,如 64/128 建议开
训练不稳定 可以试开

普通 rank=8 不开也没问题。

5.6使用 DoRA

DoRA 是 LoRA 的一种改进版,会把权重的"方向"和"幅度"分开学习。

作用:有时效果比 LoRA 更好,尤其低 rank 时可能更强。

缺点:更吃显存,训练/推理可能更慢,兼容性也要看框架。

建议:

场景 是否开启
普通训练 先不开
想追求更好效果 可以试
显存紧张 不建议
发现 LoRA 学不进去 可以试 DoRA

使用 PiSSA

PiSSA 是另一种 LoRA 初始化/训练方法,通常可以让训练开始时更稳定、更快收敛。

作用:不是随机初始化 LoRA,而是用更有信息量的方式初始化。

缺点:初始化可能更耗时,对环境和模型支持有要求。

建议:

场景 是否开启
普通新手训练 先不开
想提升 LoRA 效果 可以试
数据少、希望更稳定 可尝试
只想快速跑通 不开

5.7 LoRA 作用模块

它决定 LoRA 加到模型哪些模块上。

常见模块:

q_proj k_proj v_proj o_proj gate_proj up_proj down_proj

含义大致是:

模块 影响
q_proj/k_proj/v_proj/o_proj 注意力层,影响理解上下文和对话关系
gate_proj/up_proj/down_proj MLP 层,影响知识表达、风格、任务转换
all 尽量给所有可支持模块加 LoRA

建议:

场景 推荐
不确定 留空让工具自动选择
Qwen/LLaMA 常规 LoRA q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj
显存紧张 q_proj,v_proj
想效果更好 上面 7 个都加
只做轻微风格 q_proj,v_proj 或注意力四件套

如果工具支持 all,也可以用 all,但显存会更高。

5.8 附加模块

这个和 LoRA 作用模块不一样。

它表示除了 LoRA 层以外,还要额外训练某些原模型模块。

常见填:

embed_tokens,lm_head

适合场景:

你新增了特殊 token,或者调整了词表。

比如你加了:

<tool> </tool> <think> </think>

这时可能需要训练:

embed_tokens,lm_head

普通微调不建议填,留空即可。

5.9 推荐设置

普通中文问答/客服/文案 LoRA:

LoRA 秩:8 或 16

LoRA 缩放系数:16 或 32

LoRA 随机丢弃:0.05

LoRA+ 学习率比例:0

新建适配器:第一次训练勾选

rsLoRA:不开

DoRA:不开

PiSSA:不开

LoRA 作用模块:留空自动,或 q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj

附加模块:空

显存紧张:

LoRA 秩:8 LoRA 缩放系数:16 LoRA 随机丢弃:0.05 LoRA 作用模块:q_proj,v_proj

想效果更强:

LoRA 秩:16 或 32

LoRA 缩放系数:32 或 64

LoRA 随机丢弃:0.05

LoRA 作用模块:q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj

六、RLHF 参数设置

这组主要用于偏好优化训练,比如 DPO / PPO / ORPO / KTO,不是普通 SFT 的核心参数。

6.1 Beta 参数

控制偏好训练时"别偏离原模型太远"的强度。常见于 DPO。

beta 越大:越保守,更贴近原模型 beta 越小:越激进,更容易学偏好数据

建议:

场景 建议
普通 DPO 0.1
数据质量很高,想学得更明显 0.05
怕模型被训歪 0.2-0.5
普通 SFT 基本不用管

6.2 Ftx gamma

控制偏好训练时混入 SFT 损失的权重。

简单说:偏好训练容易只学"哪个回答更好",但可能忘掉原来的回答格式。Ftx gamma 可以让它同时保留一点 SFT 学习。

含义
0 不加 SFT 损失
0.1-1 加一点 SFT 约束
更大 更像 SFT,偏好优化效果变弱

建议:普通 DPO 可保持 0。如果 DPO 后模型格式乱、回答能力下降,可以试 0.1 或 0.5。

6.3 损失类型

偏好训练用哪种 loss。

常见区别:

类型 作用
sigmoid DPO 常用,稳定,默认推荐
hinge 更像间隔分类,要求好坏回答差距拉开
ipo IPO 方法,偏好优化另一种形式
kto KTO 训练用
orpo ORPO 训练用
simpo SimPO 训练用

建议:不知道就用 sigmoid。只有你明确选择某种训练阶段,比如 ORPO/KTO,才切对应 loss。

6.4 奖励模型

PPO 训练中用来判断回答好坏的模型或适配器路径。

作用:PPO 不是直接看"好答案/坏答案"训练,而是先让奖励模型给回答打分,再优化模型。

什么时候填:

只有做 PPO 时才需要。

普通 SFT、DPO 一般不用填。

6.5 归一化分数

PPO 里把奖励分数做标准化,避免奖励尺度太大或太小。

影响:训练更稳定,但也可能改变奖励分布。

建议:只做 PPO 时考虑;普通训练不用。

6.6 白化奖励

PPO 里对奖励做白化处理,让奖励均值和方差更稳定。

建议:PPO 训练不稳定时可以开。普通训练不用。

七、多模态参数

这组用于图文/视频模型,比如 Qwen-VL、LLaVA、InternVL。如果你训练的是纯文本模型,这组基本不用管。

7.1 冻结视觉编码器

视觉编码器负责把图片变成模型能理解的特征。勾选后:不训练视觉编码器。

建议:

场景 建议
普通图文指令微调 勾选
数据量小 勾选
想让模型适应特殊图片领域,比如医学影像 可考虑不勾,但显存和数据要求高

7.2 冻结多模态投影器

投影器负责把视觉特征接到语言模型里。

勾选后:不训练投影器。

建议:

场景 建议
只是微调语言回答风格 勾选
图像理解对不上、视觉特征适配差 可取消
数据量少 勾选更稳

7.3 冻结语言模型

勾选后,语言模型主体不训练。

适合只训练视觉侧或投影器。

如果你想让模型学你的回答风格/任务,通常不要勾。

7.4 图像最大像素 / 图像最小像素

控制输入图片会被处理到多大范围。

影响:

图片像素越大 图片像素越小
看得更细 更省显存
显存更高 速度更快
适合 OCR/细节识别 适合普通图像描述

建议:

场景 最大像素
普通图文问答 512*512 或 768*768
OCR、截图、表格、细节多 1024*1024 甚至更高
显存紧张 448*448 或 512*512

7.5 视频最大像素 / 视频最小像素

类似图片参数,但用于视频帧。

视频更吃显存,所以一般比图片设得小。

建议:

场景 视频最大像素
普通动作/场景理解 256*256
需要看细节文字 384*384 或更高
显存紧张 224*224

八、GaLore 参数设置

GaLore 是一种优化器/训练技巧,用来降低训练显存占用。它更常见于全参数或部分参数训练,普通 LoRA 不一定需要。

8.1 使用 GaLore

开启后使用 GaLore 优化器。

作用:降低梯度相关的显存占用,让大模型训练更省显存。

建议:

场景 是否开启
普通 LoRA 一般不开
full 微调显存不够 可以试
freeze/部分参数微调 可以试
追求简单稳定 不开

8.2 GaLore 秩

控制低秩梯度投影的容量。

影响
更省显存,但近似更粗
更接近正常训练,但更吃显存

建议:常试 16 / 32 / 64。小显存先 16。

8.3 更新间隔

每隔多少 step 更新一次 GaLore 的投影矩阵。

影响
更准确,但更耗时
更快,但可能效果差一点

建议:100-500 都常见。默认 200 可以。

8.4 GaLore 缩放系数

控制 GaLore 梯度缩放强度。

建议:不熟悉就保持默认。训练不稳定再调。

8.5 GaLore 作用模块

GaLore 应用到哪些模块。

你现在是 all,表示尽量应用到所有支持模块。

建议:

场景 推荐
不确定 all
只想作用注意力 q_proj,k_proj,v_proj,o_proj
显存极紧张 可选更多模块,但要测试稳定性

下面几组都是进阶参数。普通 LoRA/SFT 微调一般不用开,默认关着就行。它们分别是:优化器增强、块状训练优化、实验记录平台。

九、APOLLO 参数设置

APOLLO 是一种优化器/训练优化方法,主要目的是降低显存、提高训练效率,更常用于 full 微调或部分参数微调。普通 LoRA 不一定需要。

9.1 使用 APOLLO

场景 建议
普通 LoRA 不开
full 微调显存不够 可尝试
freeze/部分参数微调 可尝试
新手训练 不开

9.2 APOLLO 秩

类似低秩近似的容量大小。

值小 值大
更省显存 效果更接近正常训练
近似更粗 显存更高
可能效果差一点 更稳一些

常用可以试 16 / 32 / 64。

9.3 更新间隔

每隔多少 step 更新一次 APOLLO 的投影/近似信息。

值小 值大
更新更频繁,可能更准 更省时间
训练开销更大 近似可能滞后

默认 200 可以。

9.4 APOLLO 缩放系数

控制 APOLLO 对梯度/更新的缩放强度。

这个不熟悉不要乱改,保持默认即可。

如果训练不稳定、loss 异常,再考虑降低。

9.5 APOLLO 作用模块

all 表示所有支持模块都用。也可以指定:q_proj,k_proj,v_proj,o_proj。一般保持 all。

十、BAdam 参数设置

BAdam 是 Block Adam,意思是"分块 Adam 优化器"。

它不是一次更新所有参数,而是按层或按比例分块更新,目的是节省显存、支持更大模型训练

10.1 使用 BAdam

是否启用 BAdam 优化器。

场景 建议
普通 LoRA 不开
full 微调大模型显存吃紧 可开
想减少优化器状态显存 可开
追求简单稳定 不开

1.02 BAdam 模式

模式 含义 适合
layer 按层分块更新 常用,直观
ratio 按比例选择参数块更新 更灵活,但更进阶

普通尝试 BAdam 用 layer。

10.3 切换策略

决定训练时按什么顺序切换要更新的块。

策略 含义
ascending 从前到后更新
descending 从后到前更新
random 随机更新
其它策略 看工具支持

一般保持 ascending。如果训练效果不稳定,可以试 random,但不作为首选。

10.4 切换频率

意思是每多少 step 切换一次正在更新的块。

值小 值大
切换频繁,覆盖更快 每块训练更久
可能更不稳定 可能更新不够全面
开销略高 更平滑

常见可以用 50-200。默认 50 可以。

10.5 Block 更新比例

在 ratio 模式下尤其重要,表示每次更新多少比例的参数块。

含义
0.05 每次更新 5%
0.1 每次更新 10%
0.2 每次更新 20%

比例越小越省显存,但训练越慢、越不完整。普通保持 0.05 或 0.1。

十一、SwanLab 参数设置

SwanLab 是实验跟踪/可视化平台,类似 TensorBoard、Weights & Biases。

它不影响模型本身训练算法,主要影响:是否记录 loss 曲线、学习率、参数、日志、实验对比。

11.1 使用 SwanLab

开启后会把训练过程记录到 SwanLab。

场景 建议
只是简单跑一次 不开
想看训练曲线 可以开
多次实验要对比 建议开
团队协作 建议开

11.2 SwanLab 项目名

项目名称。你现在是 llamafactory。

可以改成你的任务名,比如:qwen-customer-lora

11.3 SwanLab 实验名

这一次训练的名字。建议写清楚配置,比如:rank8-lr5e-5-epoch5,方便以后知道是哪次训练。

11.4 SwanLab 工作区

你的账号/团队空间。不填通常用默认个人空间。

11.5 SwanLab API 密钥

用于登录 SwanLab。

如果本机已经登录,可以不填;没登录就需要填。

11.6 SwanLab 模式

模式 含义
cloud 上传到云端平台
local 本地记录
disabled/offline 不上传或离线记录,具体看工具支持

十二、其他

12.1 DeepSpeed stage

DeepSpeed 是多卡/大模型训练加速和省显存工具。

常见 stage:

Stage 作用 场景
none 不使用 单卡 LoRA、普通训练
stage 1 优化器状态分片 多卡训练,省一点显存
stage 2 优化器+梯度分片 多卡常用,省更多显存
stage 3 参数+梯度+优化器都分片 超大模型/full 微调
stage 3 offload 进一步把部分内容放 CPU/NVMe 显存极限场景,但慢

建议:

场景 推荐
单卡 LoRA none
多卡 LoRA 可 stage 2
full 微调大模型 stage 2/3
显存严重不够 stage 3 + offload
新手 none

12.2 使用 offload

把一部分训练状态从 GPU 显存挪到 CPU 内存,甚至硬盘。

作用:省显存。

代价:训练速度明显变慢。

什么时候开:

场景 建议
显存够 不开
CUDA out of memory 可以开
full 微调大模型 可开
LoRA 普通训练 通常不开
机器内存/硬盘慢 谨慎开

12.3 step

step 指的是:模型完成了多少次参数更新

它主要和这些参数有关:

训练样本数

训练轮数 epoch

批处理大小 batch size

梯度累积 gradient accumulation

GPU 数量

计算公式:

有效 batch size = 批处理大小 × 梯度累积 × GPU 数量

每轮 step 数 = 训练样本数 ÷ 有效 batch size

总 step 数 = 每轮 step 数 × 训练轮数

通常会向上取整。

举例,假设你的参数是:

最大样本数:500 训练轮数:20 批处理大小:2 梯度累积:8 GPU 数量:1

那么:有效 batch size = 2 × 8 × 1 = 16

每一轮:500 ÷ 16 = 31.25

向上取整,大约:32 step / epoch

训练 20 轮:32 × 20 = 640 step

相关推荐
财经资讯数据_灵砚智能1 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年6月6日
人工智能·python·ai·信息可视化·自然语言处理·ai编程·灵砚智能
笨蛋©2 小时前
Infra CONVERT 德国标准下的图纸自动化识别与检验计划生成指南
ai·cad·质量管理·制造业·图纸识别
moeyui7053 小时前
WSL2中配置Khoj+DeepSeekV4的本地Agents
ai
小七-七牛开发者3 小时前
专访 Mainline 作者们:聊聊从代码协作到意图协作
ai·agent·mainline·ai coding
Sirius Wu4 小时前
Agent Skill能力建设
人工智能·深度学习·机器学习·ai·语言模型·aigc
要开心吖ZSH4 小时前
AI医疗分诊与健康咨询助手agent开发——(0)项目背景与概要
java·ai·agent·健康医疗·rag
哥布林学者6 小时前
深度学习进阶(二十八)现代 LLM 的核心架构设计其三:Decoder-Only 下的 KV Cache
机器学习·ai
沉睡的木木夕6 小时前
AI Prompt 工程化设计最佳实践(Harness Engineering)
ai·harness-engineering
白萝卜弟弟7 小时前
【Agent】不用折腾配置文件:用 CCSwitch 给 Codex 接入 DeepSeek / claw-cn 第三方大模型
ai·大语言模型·agent