You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在恢复模型训练后继续TensorBoardLogger的日志记录?

解决分阶段训练TensorBoard历史日志不连贯问题

问题原因

每次启动新训练阶段时,默认初始化的TensorBoardLogger会自动生成新的版本子目录(如training-logs/test_2/version_0、version_1),TensorBoard默认仅加载单个版本的日志,导致历史训练记录无法展示。

解决方法

1. 复用同一日志版本目录

训练时手动指定TensorBoardLogger的version参数为已存在的版本号,让新训练的日志写入同一目录:

# 假设第一次训练的日志目录是 training-logs/test_2/version_0
logger = TensorBoardLogger("training-logs", name="test_2", version=0)

checkpoint_callback=ModelCheckpoint(dirpath="model",filename="newmodel_2",save_last=True,verbose=True,monitor="val_ce_loss",mode="min")
trainer = pl.Trainer(
    callbacks=[checkpoint_callback],
    max_epochs=100,  # 设置总训练轮数(5阶段×10epoch)
    gpus=1,
    max_steps = max_steps,  
    logger=logger,    
)

2. 完整恢复训练状态

仅加载模型参数无法让Trainer知晓历史训练进度,需通过resume_from_checkpoint参数完整恢复训练状态(包括epoch数、全局步数、优化器状态等),确保日志的x轴计数连贯:

base_path_ckpt = '/home/tt/model/last.ckpt'

# 初始化Logger时指定复用的版本号
logger = TensorBoardLogger("training-logs", name="test_2", version=0)
checkpoint_callback=ModelCheckpoint(dirpath="model",filename="newmodel_2",save_last=True,verbose=True,monitor="val_ce_loss",mode="min")

# 通过resume_from_checkpoint恢复完整训练状态
trainer = pl.Trainer(
    callbacks=[checkpoint_callback],
    max_epochs=100,
    gpus=1,
    max_steps = max_steps,  
    logger=logger,
    resume_from_checkpoint=base_path_ckpt
)

# 无需手动加载模型,Trainer会自动处理
trainer.fit(datamodule=datamodule)

3. 正确启动TensorBoard

启动时指定根日志目录,确保加载所有历史日志:

tensorboard --logdir=training-logs

注意事项

  • 务必将max_epochs设置为总训练轮数(如100),而非单阶段的10,否则Trainer会判定训练已完成,无法继续。
  • 若之前未指定固定version,可查看training-logs/test_2下的子目录,找到对应版本号后后续训练统一使用该值。

内容的提问来源于stack exchange,提问作者diamond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:45:25