Pytorch-Lightning--Tuner

Pytorch-Lightning--Tuner,第1张

Pytorch-Lightning--Tuner Pytorch-Lightning–Tuner lr_find() 参数详解 参数名称含义默认值modelLightningModule实例train_dataloaders训练数据加载器Noneval_dataloaders验证数据加载器NonedatamoduleLightningDataModule实例Nonemin_lr学习率最小值1e-08max_lr学习率最大值1num_training测试学习率的训练轮数100mode学习率寻找策略,分为指数(默认)和线性(linear)exponentialearly_stop_threshold当任意一点的loss>=early_stop_threshold*best_loss时停止搜索,设置为None禁用该项4.0update_attr将搜索到的学习率更新到模型参数中False 使用注意

暂时只支持单个优化器暂不支持DDP 用法

使用self.learing_rate或self.lr作为学习率参数

class LitModel(LightningModule):
    def __init__(self, learning_rate):
        self.learning_rate = learning_rate

    def configure_optimizers(self):
        return Adam(self.parameters(), lr=(self.lr or self.learning_rate))


model = LitModel()

# 开启 auto_lr_find标志
trainer = Trainer(auto_lr_find=True)
# 寻找合适的学习率
trainer.tune(model)

使用其他的学习率变量名称

model = LitModel()

# 设置为自己的学习率超参数名称 my_value
trainer = Trainer(auto_lr_find="my_value")

trainer.tune(model)

使用lr_find()查看自动搜索学习率的结果

model = MyModelClass(hparams)
trainer = Trainer()

# 运行学习率搜索
lr_finder = trainer.tuner.lr_find(model)

# 查看搜索结果
lr_finder.results

# 绘制学习率搜索图,suggest参数指定是否显示建议的学习率点
fig = lr_finder.plot(suggest=True)
fig.show()

# 获取最佳学习率或建议的学习率
new_lr = lr_finder.suggestion()

# 更新模型的学习率
model.hparams.lr = new_lr

# 训练模型
trainer.fit(model)

scale_batch_size() 参数详解 参数名称含义默认值modelLightningModule实例train_dataloaders训练数据加载器Noneval_dataloaders验证数据加载器NonedatamoduleLightningDataModule实例Nonemode学习率寻找策略,分为幂次方(默认)和二分(binsearch)powersteps_per_trial每次测试当前batch_size的训练step数量3init_val初始batch_size大小2max_trials算法结束前batch_size最大增量25batch_arg_name存储batch_size的属性名'batch_size'

Returns:搜索结果

将在如下地方寻找batch_arg_name

modelmodel.hparamstrainer.datamodule (如果datamodule传递给了tune()) 使用注意

暂时不支持DDP模式

由于需要使用模型的batch_arg_name属性,因此不能直接将dataloader直接传递给trainer.fit(),否则此功能将失效,需要在模型中加载数据

原来模型中的batch_arg_name属性将被覆盖

train_dataloader()应该依赖于batch_arg_name属性

def train_dataloader(self):
    return DataLoader(train_dataset, batch_size=self.batch_size | self.hparams.batch_size)
用法 使用Trainer中的auto_scale_batch_size属性
# 默认不执行缩放
trainer = Trainer(auto_scale_batch_size=None)

# 设置搜索策略
trainer = Trainer(auto_scale_batch_size=None | "power" | "binsearch")

# 寻找最佳batch_szie,并自动设置到模型的batch_size属性中
trainer.tune(model)
使用scale_batch_size()
# 返回搜索结果
new_batch_size = tuner.scale_batch_size(model, *extra_parameters_here)

# 覆盖原来的属性(这个过程是自动的)
model.hparams.batch_size = new_batch_size

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5711429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存