大模型(LLM)的训练适配微调 Fine-tuning,特别是 SFT 和 LoRA)涉及众多的超参数
大模型(LLM)的训练适配(通常指微调 Fine-tuning,特别是 SFT 和 LoRA)涉及众多的超参数。这些参数的选择直接决定了训练的效果(是否收敛、是否变聪明)和效率(显存占用、训练速度)。 以下是大模型训练中最关键的适配参数详解,分为四大类:核心训练参数、LoRA/PEFT 专用参数、显存/硬件优化参数以及数据策略参数。 这是所有深度学习训练的基础,对模型性能影响最大。 目前绝大多数适配都是基于 LoRA(低秩适配)进行的,因为它极大地降低了显存需求。 这些参数不直接改变模型智能程度,但决定了你能否在有限的显卡上跑起来。 Prompt Masking (提示词遮蔽) / Loss on Target Only: Packing (数据打包): 假设你使用 Llama-3-8B 进行 LoRA 微调,显存 24G (RTX 3090/4090),以下是一套稳健的起步参数: Loss 不下降 / 下降极慢: Loss 迅速降为 0 或 NaN: 灾难性遗忘 (Catastrophic Forgetting): 复读机现象 (Repetition):一、 核心训练参数 (Core Training Hyperparameters)
参数名称 典型值 / 范围 解释与建议 Learning Rate (LR)
学习率全量微调: 1e-5 ~ 5e-5
LoRA: 1e-4 ~ 3e-4最重要的参数。过大导致Loss震荡不收敛,过小导致训练极慢或陷入局部最优。LoRA 因为训练参数少,通常可以使用更大的学习率。 Batch Size (BS)
批次大小64, 128, 512 (全局) Global Batch Size = per_device_batch_size gradient_accumulation num_gpus。
大BS收敛更稳,但显存要求高。如果显存不够,减小单卡BS,增加梯度累积步数。Epochs
训练轮数SFT: 1 ~ 3 轮
预训练: 1 轮对于高质量的指令微调数据,通常 1个Epoch就够了。过多会导致过拟合(Overfitting),模型会只会背诵数据,失去泛化能力。 LR Scheduler
学习率调度器cosine (最常用)linear推荐使用 Cosine。配合 Warmup(预热),让学习率从0逐渐升到最高,再平滑下降,有助于模型稳定。 Warmup Ratio
预热比例0.03 (3%) ~ 0.1 (10%) 在训练初期防止梯度爆炸。如果是继续微调(SFT),Warmup非常重要。 Max Sequence Length
最大上下文长度2048, 4096, 8192 取决于数据长度和显存。长度翻倍,注意力矩阵计算量呈平方级增长(除非用Flash Attn)。长文本训练需要开启 Flash Attention 2。 二、 LoRA / QLoRA 专用参数 (PEFT Parameters)
参数名称 典型值 解释与建议 LoRA Rank (r) 8, 16, 64, 128 秩的大小。决定了可训练参数量。
一般任务 r=8 或 16 足够。
如果是复杂逻辑/数学任务,建议 r=64 或更高。LoRA Alpha r 的 1倍 或 2倍缩放因子。通常设置为 Rank 的2倍(如 r=64, alpha=128)。它决定了新增权重对原模型权重的影响力度。 Target Modules
目标模块q_proj, v_proj
或 all-linear非常关键。
最省显存:仅微调 q_proj, v_proj(Attention部分)。
效果最好:微调所有线性层(gate_proj, up_proj, down_proj 等),即 all-linear,但这会增加显存和参数量。LoRA Dropout 0.05 ~ 0.1 防止过拟合。数据量少时建议设为 0.1。 三、 显存与硬件优化参数 (Hardware Optimization)
参数名称 建议设置 解释 Precision (精度) bf16 (首选) > fp16A100/A800/H800/4090 等新卡务必用 BF16,能防止训练溢出(NaN)。旧卡(V100/2080ti)只能用 FP16。 Gradient Accumulation
梯度累积1, 2, 4, 8... 显存救星。如果单卡显存只能跑 Batch Size=1,你可以设置累积16次,等效 Batch Size=16。 Gradient Checkpointing
梯度检查点True (开启)显存救星。以时间换空间。开启后可节省约 50%-70% 的显存,但训练速度变慢约 20%。训练长文本时必开。 Flash Attention 2 True (开启)极大加速训练并节省显存,特别是 Context Length > 2048 时。需要 Ampere 架构以上显卡。 Optimizer adamw_torchpaged_adamw_32bit显存极度紧张时,使用 QLoRA 配合 paged_adamw_8bit 优化器,可将优化器状态显存占用降到极低。四、 数据与损失函数策略 (Data & Loss Strategy)
Max Sequence Length 中训练。五、 实战配置模版参考
# 模型参数
model_name: "Llama-3-8b"
precision: "bf16" # 30系/40系显卡推荐 BF16
# LoRA 参数
lora_r: 16 # 秩
lora_alpha: 32 # alpha = 2 * r
lora_dropout: 0.05
lora_target_modules: "all-linear" # 效果优于仅微调 q,v
# 训练超参
learning_rate: 2e-4 # LoRA 学习率通常比全量微调大
lr_scheduler_type: "cosine"
warmup_ratio: 0.05
num_train_epochs: 3 # 数据少于1万条建议3轮,多于10万条建议1轮
# 显存优化
per_device_train_batch_size: 4 # 单卡BS,根据显存调整,爆显存就调小
gradient_accumulation_steps: 4 # 累积步数,保证 全局BS = 4*4*GPU数 = 16~64
gradient_checkpointing: true # 开启以节省显存
max_seq_length: 4096 # 上下文长度
# 其他
logging_steps: 10
save_strategy: "epoch"
optim: "adamw_torch"六、 常见问题与调优方向
bf16,或者调大 Warmup 步数。