PyTorch Lightning中leave=True时如何让训练进度条显示训练时长
解决训练进度条不显示时长的问题
你遇到的问题是因为TQDMProgressBar设置leave=True后,每个epoch的进度条会保留在控制台,挤占了训练step进度条的显示空间,导致step进度条无法正常更新或被覆盖。以下是具体解决方法:
优先调整
leave参数:将leave=True改为默认的leave=False,这样每个epoch结束后会自动清除该epoch的step进度条,避免干扰整体显示:from pytorch_lightning.callbacks import TQDMProgressBar trainer = Trainer( callbacks=[TQDMProgressBar(leave=False)], max_epochs=10 # 确保设置明确的训练轮次 )自定义回调保留进度条(如果需要):如果你确实需要保留每个epoch的进度条记录,可以自定义回调,单独控制训练step进度条的
leave属性,避免冲突:from pytorch_lightning.callbacks import TQDMProgressBar class CustomTQDMProgressBar(TQDMProgressBar): def init_train_tqdm(self): # 仅对训练step进度条设置leave=True,epoch进度条保持默认 bar = super().init_train_tqdm() bar.leave = True return bar trainer = Trainer( callbacks=[CustomTQDMProgressBar()], max_epochs=10 )确保关键参数配置正确:进度条的时长计算依赖明确的训练参数,比如
max_epochs、limit_train_batches等必须正确设置,否则无法预估剩余时长。同时建议更新PyTorch Lightning到最新版本,旧版本可能存在回调逻辑的bug。
只要以上配置正确,训练进度条就会自动显示当前耗时和剩余预估时长。
内容的提问来源于stack exchange,提问作者Skyrax
相关产品推荐
相关产品推荐

