【问题标题】:Can't train model from checkpoint on Google Colab as session expires会话过期时无法从 Google Colab 上的检查点训练模型
【发布时间】:2023-02-01 07:38:47
【问题描述】:

我正在使用 Google Colab 微调预训练模型。

我成功地预处理了一个数据集并创建了一个 Seq2SeqTrainer 类的实例:

trainer = Seq2SeqTrainer(
    model,
    args,
    train_dataset=tokenized_datasets["train"],
    eval_dataset=tokenized_datasets["validation"],
    data_collator=data_collator,
    tokenizer=tokenizer,
    compute_metrics=compute_metrics
)

问题是在会话结束后从最后一个检查点开始训练它。

如果我运行trainer.train(),它运行正确。由于需要很长时间,我有时会在几个小时后回到 Colab 选项卡,而且我知道如果会话崩溃我可以从最后一个检查点继续训练,如下所示:trainer.train("checkpoint-5500")

如果我回来得太晚,Google Colab 上的检查点数据已经不存在了,所以即使我知道训练已经到了这个点,我也必须重新开始。

有什么办法可以解决这个问题吗?即延长会议?

【问题讨论】:

  • 您是否考虑过将检查点保存在 colab 之外(如果您打算使用 colab,那么可能在您的驱动器上),当您回来时只需加载它们?
  • 谢谢,有一个比我想象的更简单的解决方案!再次感谢!
  • 保存检查点对你有帮助吗?如果是这样,我会为可能来到这里的未来开发人员制定一个你可以接受的答案
  • 是的,在创建 Seq2SeqTrainingArguments 的实例时将输出目录设置为 Google Drive 路径解决了我遇到的问题。是的,我会接受你的回答:)

标签: python machine-learning google-colaboratory


【解决方案1】:

要解决您的问题,请尝试添加一个完整的固定路径,例如您的谷歌驱动器并将 checkpoint-5500 保存到它。

使用您的培训师,您可以在创建 Seq2SeqTrainingArguments 的实例时将输出目录设置为您的 Google 云端硬盘路径。

当你回到你的代码时,如果会话确实结束了,你只需要从你的谷歌驱动器加载你的checkpoint-5500而不是重新训练一切。

添加以下代码:

from google.colab import drive
drive.mount('/content/drive')

然后在您的trainer.train("checkpoint-5500") 完成后(或作为最后一步)将您的检查点保存到您的谷歌驱动器。 或者,如果您愿意,可以在 fit 函数中添加一个 callback,以便在每个纪元之后保存和更新(也就是说,如果由于某种原因会话在它完成之前崩溃了,您仍然可以保存一些进度)。

【讨论】:

    猜你喜欢
    • 2018-08-05
    • 2020-03-31
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    相关资源
    最近更新 更多