在训练开始后启动时, scale_batch_size 会运行零个批次每次尝试
QQ 错误描述
`scale batch-small'每一次试验在训练已经采取一些优化步骤后开始搜索时,将进行零批培训。 没有任何东西能提升一个OOM,所以每次试验"成功",搜索会不断翻倍,结果返回一个批量大小,模型实际上无法运行. 然后,与OOM一起结束培训。
这就是BatchSizeFinder ' 自行绘制文档的模式,在一系列里程碑上从on train epoch start'中调用`scale batch size':
类 FineTuneBatchSizeFinder( 批次SizeFinder) :
def on fit start(自身, *args, **kwargs) :
返回时
def 在 train epoch start(自己,教练员,pl 模块)上:
如果训练员,则自己成为当前时代。 里程碑或训练员。
自缩放 batch 大小( 训练员, pl 模块)有两个独立的原因,这就是为什么我填表而不是发送一行补丁。
**1. " 最大步骤 " 是绝对的,但设定为相对的。 **
QQscale batch reset params ('src/lightning/pytorch/tunner/batch size scalling.py:146') 表示:
[Python] 教练.fit loop.epoch loop.max steps=阶梯 per trial
`FitLoop.done'与绝对`global step'(`fit loop.py:179')相比较。 QQTry loop run " 在每次试验前都恢复了倾覆的循环状态,因此`global step'就是开始搜索时的状态。 一旦`Global step >=-per-trial',`done'即为`True',审判为不公开。 兄弟会的调音员说得没错:`lr finder.py:338'使用`num training + trainer.global step'.
**2. 恢复的`批量-进展 ' 使每个审判过程都经过了一个时代。 **
搜索开始时倾覆的回路状态带有已经飞行的时代的 " batch progress. current. ready " 。 每一次试验都恢复它 所以一个试验 其数据装载器的批量 少于该值 立即完成。 加上因果1而抵消的 " 全球步骤 " 是不够的。
装有仪器的审判,`步骤-审判=3',`最大-审判=4',`批量-大小=8'以上的OOM模型。 搜索时间为 0;搜索时间为 1 (`global step=5') 没有运行 :
QQ 搜索时间为 0 全球 step = 0 批次 进度. survey= 0 bs=2 num train batches=5个批次 准备 after restore=3个步骤 跑=3 bs=4个num train batches=16个批次 准备 after restore=3个步骤 跑=3 bs=8 num train batches=8个批次 准备 after restore=3步 跑=3个
QQ 搜索时间为 1 全球 step = 5 批次 进度. survey= 5 bs=2 num train batches=5个批次 准备 after restore=5个步骤 跑=0 bs=4个num train batches=16个批次 准备 after restore=5个步骤 跑=0 bs=8 num train batches=8批 准备 after restore=5步 跑=0 bs=16个num train batches=4个批次 准备 after restore=5个步骤 跑=0
搜索( global step, found batch small): [(0, 8, (5, 16)]
仅应用 QQ 教练器. global step" 抵消修正 导致 1 而不是 导致 2 , 因此搜索仍然返回 16 :
查找时间= 1 . . . . . . .
内容来源: Lightning-AI/pytorch-lightning