在训练开始后启动时, scale_batch_size 会运行零个批次每次尝试

作者: yentur创建于 2026年8月14日更新于 2026年8月16日
标签ver: 2.7.x

QQ 错误描述

`scale batch-small'每一次试验在训练已经采取一些优化步骤后开始搜索时,将进行零批培训。 没有任何东西能提升一个OOM,所以每次试验"成功",搜索会不断翻倍,结果返回一个批量大小,模型实际上无法运行. 然后,与OOM一起结束培训。

这就是BatchSizeFinder ' 自行绘制文档的模式,在一系列里程碑上从on train epoch start'中调用`scale batch size':

zz
类 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