这是一个非常核心的问题。LLaMA-Factory 的 WebUI 把微调过程中所有繁杂的参数都变成了可视化的选项,我们来逐一详细解读这些参数,特别是**训练(Train)**选项卡下的核心设置。

我会按照 WebUI 的布局,从上到下分成几个模块来讲解。


1. 模型与方法 (Model & Method)

这个区域决定了你要用哪个基础模型,以及用什么方式来训练它。

  • 模型名称 (Model Name / model_name_or_path)

    • 作用:指定你要微调的基础大模型。

    • 选项:可以是从 Hugging Face Hub 上拉取的模型 ID(例如 meta-llama/Llama-3-8B-Instruct),也可以是你本地已经下载好的模型文件夹路径。这是整个微调工作的起点。

  • 微调方法 (Finetuning Method / finetuning_type)

    • 作用:选择训练模型的方式,这直接决定了对硬件资源的需求和训练效率。

    • 核心选项

      • lora: (最常用,推荐) 低秩适应(Low-Rank Adaptation)。只训练一小部分新增的“适配器”参数,而模型主体部分保持冻结。

        • 优点:显存占用极小,训练速度快,可以让你在消费级显卡(如 24G 显存的 3090/4090)上微调大模型。训练结果是一个几十到几百 MB 的小文件。

        • 缺点:性能可能略逊于全量微调,但对于大多数任务来说已经足够好。

      • full: 全量微调。训练模型的所有参数。

        • 优点:理论上能达到最好的微调效果。

        • 缺点:需要巨大的显存和计算资源(例如,微调 7B 模型至少需要 4-8 张 A100/H100 高端显卡),普通用户无法承担。

      • pt: 预训练(Pre-training)。用于在你的专业领域数据上进行持续预训练,让模型学习新知识,而不是学习对话格式。

  • 量化等级 (Quantization Bit / quantization_bit)

    • 作用:通过降低模型权重的精度来减少显存占用。这是在小显存上运行大模型的关键技术。

    • 选项

      • None: 不量化,使用半精度(FP16/BF16)。显存占用最高,但精度也最高。

      • 8-bit: 8比特量化。显存占用减半,性能损失很小。

      • 4-bit: 4比特量化。(QLoRA 的核心) 显存占用降至原先的 1/4,性能损失可接受。通常与 LoRA 配合使用,称为 QLoRA,是消费级显卡微调的主流方案。

  • 模板 (Template / template)

    • 作用极其重要! LLM 在预训练时被教导要遵循一种特定的对话格式。这个模板的作用就是将你的数据集(指令、输入、输出)转换成模型能“看懂”的格式。

    • 选项

      • default: LLaMA-Factory 会尝试根据模型名称自动匹配模板。大多数情况下这个就够了。

      • llama3, qwen, chatml 等:如果自动匹配不准,或者你有特殊需求,可以手动指定。选错模板会导致模型无法正确理解指令,微调效果会很差。

  • RoPE 缩放 (RoPE Scaling)

    • 作用:用于扩展模型的上下文窗口长度。比如一个原生支持 2048 长度的模型,可以通过 RoPE 缩放技术让它处理 8192 甚至更长的文本。如果你不处理超长文本,保持 None 即可。


2. 数据集 (Dataset)

这个区域用来选择和配置你的训练数据。

  • 数据集 (Dataset / dataset)

    • 作用:选择用于训练的数据。

    • 选项:你可以选择项目内置的多个数据集(如 alpaca_zh, sql_create_context),也可以在 data/dataset_info.json 中配置你自己的本地数据集(通常是 JSON 或 CSV 文件)。支持多选。

  • 截止长度 (Cutoff Length / cutoff_len)

    • 作用:设置模型处理的序列最大长度。任何超过这个长度的样本都会被截断。

    • 影响:这个值直接影响显存占用。值越大,需要的显存越多。你需要根据你的任务和显卡显存来权衡。通常设置为 1024, 2048, 4096 等。

  • 测试集大小 (Dev Size / dev_size)

    • 作用:从训练数据中分出多大比例作为验证集。验证集不参与训练,只用来在训练过程中评估模型表现,以判断是否过拟合。一般设置为 0.1 (10%) 或更小。


3. 训练参数 (Training Arguments)

这是微调过程中的核心超参数,直接影响模型的最终效果和训练成本。

  • 学习率 (Learning Rate / learning_rate)

    • 作用:模型参数更新的步长。这是最重要的超参数之一。

    • 建议:对于 LoRA 微调,常见值是 5e-5 到 1e-4。对于全量微调,通常更小,如 2e-5。

  • 训练轮数 (Num Train Epochs / num_train_epochs)

    • 作用:整个数据集被完整训练的次数。

    • 建议:对于指令微调,通常 1-3 个 epoch 就足够了。太多轮次容易导致模型过拟合,只会“死记硬背”训练数据。

  • 批处理大小 (Batch Size / per_device_train_batch_size)

    • 作用:每次向 GPU 投喂多少个样本进行计算。

    • 影响这是另一个直接影响显存占用的关键参数。值越大,需要的显存越多,但训练通常更稳定。你需要根据你的显存大小,尽可能设置一个较大的值(通常是 2 的幂,如 1, 2, 4, 8)。

  • 梯度累积步数 (Gradient Accumulation Steps / gradient_accumulation_steps)

    • 作用低显存下的神器! 它允许你实现一个大的“有效批处理大小”,而不需要实际占用那么多显存。

    • 原理:计算 N 步的梯度,但不更新模型,而是将这些梯度累加起来,到第 N 步时再用累加的梯度更新一次模型。

    • 公式:有效批处理大小 = 批处理大小 × 梯度累积步数。例如,你的显存只够设置 Batch Size = 2,但你希望达到 Batch Size = 16 的效果,就可以设置 Gradient Accumulation Steps = 8。

  • 学习率调度器 (LR Scheduler / lr_scheduler_type)

    • 作用:在训练过程中动态调整学习率。

    • 建议:cosine 是一个非常常用且效果很好的选择。它会让学习率先缓慢预热,然后像余弦曲线一样平滑下降。

  • 混合精度 (Mixed Precision / fp16 or bf16)

    • 作用:使用 16 位浮点数(半精度)进行计算,可以大幅提升训练速度并降低显存占用。

    • 选项

      • fp16: 适用于大多数现代 GPU。

      • bf16: 适用于较新的 GPU(NVIDIA Ampere 架构及以上,如 A100, 30xx, 40xx 系列),数值稳定性更好。


4. LoRA 参数 (LoRA Arguments)

如果你在第一部分选择了 lora 微调方法,这个区域的参数才会生效。

  • LoRA 秩 (LoRA Rank / lora_rank)

    • 作用:LoRA 适配器矩阵的维度。它决定了 LoRA 层的参数量。

    • 影响:rank 越大,可训练参数越多,理论上拟合能力越强,但显存占用也会增加。

    • 建议:通常从 8, 16, 32, 64 中选择。对于大多数任务,16 或 32 是一个很好的起点。

  • LoRA 透明度 (LoRA Alpha / lora_alpha)

    • 作用:LoRA 层的缩放因子。

    • 建议:一个常见的做法是将其设置为 rank 的两倍(例如 rank=16, alpha=32)。

  • LoRA 作用模块 (LoRA Target Modules / lora_target)

    • 作用:指定在模型的哪些部分应用 LoRA 适配器。

    • 建议:通常应用在注意力机制的查询(q_proj)和值(v_proj)矩阵上。你可以手动指定,也可以直接填写 all,让 LLaMA-Factory 自动寻找模型中所有适合应用 LoRA 的线性层。


新手推荐配置 (QLoRA)

如果你是新手,使用消费级显卡(例如 RTX 3090/4090 24G),一个非常稳妥的入门配置是:

  1. 模型与方法:

    • 模型名称: 选择一个 7B 或 8B 的模型,如 meta-llama/Llama-3-8B-Instruct

    • 微调方法: lora

    • 量化等级: 4-bit

    • 模板: default (或 llama3 for Llama-3)

  2. 数据集:

    • 数据集: alpaca_zh (作为第一个测试)

    • 截止长度: 1024 (如果显存够,可以尝试 2048)

  3. 训练参数:

    • 学习率: 1e-4

    • 训练轮数: 3.0

    • 批处理大小: 2 (根据你的显存调整)

    • 梯度累积步数: 8 (这样有效批大小就是 16)

    • 混合精度: bf16 (如果你的显卡支持) 或 fp16

  4. LoRA 参数:

    • LoRA 秩: 16

    • LoRA 透明度: 32

    • LoRA 作用模块: all

配置好这些参数后,点击“开始”按钮,就可以开始你的第一次微调了!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐