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

如何利用检查点从上次epoch继续训练DETR模型?

在Google Colab中实现DETR模型断点续训的解决方案

问题根源

你当前的代码缺少检查点自动保存机制,且续训时未正确指定检查点路径,导致无法从中断位置恢复训练。另外Colab本地文件会在会话结束后清空,必须将检查点存储到持久化位置(比如Google Drive)才能保留。

步骤1:配置检查点保存并挂载Google Drive

先挂载Google Drive确保检查点不会丢失,同时添加ModelCheckpoint回调实现自动保存:

from pytorch_lightning.callbacks import EarlyStopping, ModelCheckpoint
from pytorch_lightning import Trainer
from google.colab import drive

# 挂载Google Drive,授权后Drive会被挂载到/content/drive路径
drive.mount('/content/drive')

# 定义DETR模型、数据集等必要元素
MAX_EPOCHS = 200

# 修正早停回调的监控指标(注释说监控验证AP,但原参数写的是training_loss,要对应实际指标名)
early_stopping_callback = EarlyStopping(
    monitor='val_ap',  # 替换为你实际使用的验证AP/AP50等指标名
    min_delta=0.00,
    patience=3,
    mode='max'
)

# 配置检查点保存规则
checkpoint_callback = ModelCheckpoint(
    dirpath='/content/drive/MyDrive/detr_checkpoints/',  # 检查点存到Drive的指定文件夹
    filename='detr-epoch-{epoch:02d}-val_ap-{val_ap:.2f}',
    save_top_k=3,  # 保存Top3最优模型
    monitor='val_ap',
    mode='max',
    save_last=True,  # 强制保存最后一个epoch的检查点,方便续训
    every_n_epochs=1  # 每个epoch保存一次
)

trainer = Trainer(
    devices=1,
    accelerator="gpu",
    max_epochs=MAX_EPOCHS,
    gradient_clip_val=0.1,
    accumulate_grad_batches=8,
    log_every_n_steps=5,
    callbacks=[early_stopping_callback, checkpoint_callback]  # 加入检查点回调
)

# 首次训练直接调用:trainer.fit(model)
# 续训时指定检查点路径:
trainer.fit(model, ckpt_path='/content/drive/MyDrive/detr_checkpoints/last.ckpt')

步骤2:正确执行续训

会话中断后重新打开笔记本:

  1. 重新挂载Google Drive
  2. 确保模型、数据集、回调的定义和首次训练时完全一致(结构、超参数不能变)
  3. 在trainer.fit()中通过ckpt_path参数指定上次保存的last.ckpt或最优检查点路径,训练会自动从中断的epoch继续,直到完成200个epoch。

关键注意事项

  • 模型结构必须和首次训练完全一致,否则加载检查点会报错
  • 早停回调的monitor参数要和实际监控的验证指标名匹配,避免逻辑错误
  • Colab免费版会话最长约12小时,若200epoch训练时长超限时,需分批次续训,或考虑使用Colab Pro/Pro+获取更长会话时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:53:15