求助:PyTorch Lightning学习率调参器输出异常结果的问题
使用PyTorch Lightning Tuner寻找最优学习率时低学习率下损失上升的问题
我在基于BertForSequenceClassification预训练模型构建的线性分类器上,尝试用pl.tuner.Tuner寻找最优学习率——目标是在冻结Bert模型权重的情况下找到合适的LR,但结果不符合预期:低学习率区间内损失反而呈上升趋势。
执行的lr_find代码
tuner = pl.tuner.Tuner(trainer) results = tuner.lr_find( model, # optimizer = optimizer, train_dataloaders=data_module, min_lr=10e-8, max_lr=10.0, ) # Plot with fig = results.plot(suggest=True) fig.show()
模型中的优化器配置
def configure_optimizers(self): """ :return: """ optimizer = torch.optim.AdamW(self.parameters(), lr=self.learning_rate) scheduler = get_linear_schedule_with_warmup( optimizer, num_warmup_steps=self.n_warmup_steps, num_training_steps=self.n_training_steps, ) return dict(optimizer=optimizer, lr_scheduler=dict(scheduler=scheduler, interval="step"))
当前问题表现
运行后生成的损失-学习率图表显示:在学习率从10e-8开始的低区间,损失不仅没有下降,反而持续上升,这和预期的趋势不符。
已尝试的调整
- 移除学习率调度器
- 切换Bert模型权重的冻结/解冻状态
- 修改初始学习率参数
预期的图表趋势
预期的图表应该是:损失随学习率增大先快速下降,进入一段平稳的低损失区间,之后随着学习率过大,损失开始急剧上升,能从中找到一个最优的学习率范围。
内容的提问来源于stack exchange,提问作者Toby
相关产品推荐
相关产品推荐

