mindformers.core.LearningRateWiseLayer

查看源文件
class mindformers.core.LearningRateWiseLayer(base_lr, lr_scale)[源代码]

学习率分层模块。

这种方法允许每层根据其特定需求调整学习率,从而实现更高效和有效的训练。每层的学习率由基准学习率与该层特定的缩放因子调节决定。

最初,每层的学习率基于线性缩放策略设定:

ηt,l=ηbase×αl

其中 ηt,l 是时间 t 时层 l 的学习率, ηbase 是基准学习率, αl 是层 l 的缩放因子。

随着训练的进行,每层的学习率按照以下余弦退火调度进行调整:

ηt,l=ηend+12(ηbase×αlηend)(1+cos(TcurTmaxπ))

其中 Tcur 是自学习率上次重置以来完成的epoch数量, Tmax 是下一次重置前的总epoch数。 ηend 代表训练结束时的最小学习率。

参数:
  • base_lr (mindspore.nn.learning_rate_schedule.LearningRateSchedule) - 基准学习率调度器。

  • lr_scale (float) - 学习率缩放值。

输入:
  • global_step (int) - 全局步数。

输出:

学习率。

样例:

>>> import mindspore as ms
>>> from mindformers.core import LinearWithWarmUpLR
>>> from mindformers.core import LearningRateWiseLayer
>>>
>>> ms.set_context(mode=ms.GRAPH_MODE)
>>> total_steps = 20
>>> warmup_steps = 10
>>> learning_rate = 0.005
>>>
>>> linear_warmup = LinearWithWarmUpLR(learning_rate=learning_rate,
...                                    warmup_steps=warmup_steps,
...                                    total_steps=total_steps)
>>> learning_rate_wise_layer = LearningRateWiseLayer(linear_warmup, 0.5)
>>> print(learning_rate_wise_layer(1))
0.00025
>>> print(learning_rate_wise_layer(15))
0.00125