在LoRA微调实践中,学习率调度策略对模型收敛和性能表现至关重要。本文将分享几个实用的调度技巧。
1. 线性衰减调度 这是最基础且有效的策略。设置初始学习率后,随着训练轮次增加,学习率线性递减至最小值。
from transformers import get_linear_schedule_with_warmup
scheduler = get_linear_schedule_with_warmup(
optimizer,
num_warmup_steps=1000,
num_training_steps=total_steps
)
2. 分段衰减策略 针对不同训练阶段采用不同学习率。前50%使用较高学习率,中间30%逐渐降低,后20%维持低值。
# 自定义分段调度器
for epoch in range(epochs):
if epoch < 0.5 * epochs:
lr = base_lr
elif epoch < 0.8 * epochs:
lr = base_lr * 0.1
else:
lr = base_lr * 0.01
3. 余弦退火调度 在训练后期使用余弦衰减,有助于模型跳出局部最优。
from torch.optim.lr_scheduler import CosineAnnealingLR
scheduler = CosineAnnealingLR(optimizer, T_max=total_steps)
关键建议:建议结合验证集性能动态调整,避免过早或过晚学习率衰减。在LoRA微调中,通常初始学习率设置为1e-4到5e-4之间效果较好。

讨论