lr_scheduler_type 参数取值:学习率调度器(Learning Rate Scheduler)和优化器(Optimizer)

前言

lr_scheduler_typeHuggingface transformers Trainer 的 TrainingArguments 之一。注意,如果使用 Deepspeed 启动训练,DeepSpeed 配置文件中的 optim 和 lr schedule 会覆盖传参的值。本文介绍 --lr_scheduler_type 的取值与含义(源码在 transformers/trainer_utils.py)。

在这里插入图片描述

学习率调度器与优化器

学习率调度器(Learning Rate Scheduler)优化器(Optimizer) 是 LLM 训练过程中的两个关键组件,它们各自扮演不同的角色,但又相互关联。优化器的主要职责是:

  • 根据损失函数的梯度来更新模型参数。
  • 通过调整模型参数来最小化损失函数。

常见的优化器包括 SGD、Adam、RMSprop 等。优化器的行为通常由一组超参数控制,最重要的超参数之一就是学习率。本文的主角——学习率调度器(Learning Rate Scheduler)的主要职责是动态调整学习率,以便在训练过程中优化模型的性能和收敛速度。学习率调度器会根据预设的策略在训练的不同阶段调整学习率。

学习率优化器参数取值

--lr_scheduler_type

### 学习率调度器的重要性 学习率是影响模型收敛速度质量的关键超参数之一。过高的学习率可能导致损失函数震荡不收敛;而过低则会使训练过程变得异常缓慢。因此,在实际应用中,通常会采用动态调整策略来优化这一参数[^1]。 ### PyTorch 中的学习率调度器 对于基于PyTorch框架构建的项目而言,内置了几种不同类型的学习率调度机制供开发者选用: - **StepLR**: 每隔固定轮次降低一定比例; - **MultiStepLR**: 在指定多个里程碑处减少给定倍数; - **ExponentialLR**: 按指数衰减规律逐步缩小当前值; - **CosineAnnealingLR**: 使用余弦退火方式平滑变化范围内的数值。 这些类都继承自`_LRScheduler`基类,并接受一个优化器实例作为输入参数以便于操作内部状态变量——即每一步迭代后的最新权重更新幅度大小[^2]。 #### 实现示例 下面给出一段简单的Python代码片段展示如何创建并运用上述提到的一种具体形式(以阶梯型为例): ```python import torch.optim as optim optimizer = optim.SGD(model.parameters(), lr=0.01) scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1) for epoch in range(num_epochs): train() scheduler.step() # 更新下一轮使用的lr validate() ``` 此段程序会在每次完成整个epoch之后调用`scheduler.step()`方法自动改变下次循环里边所涉及的所有层节点连接权重要素对应的梯度下降速率因子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值