欢迎光临

Google Colab 断线续训:用 Checkpoint 恢复 LoRA 训练(完整 Notebook)


Colab 运行时回收后,内存中的模型、优化器和临时磁盘文件都可能丢失。LoRA 训练想从上次进度接着跑,需要把完整 checkpoint 保存在持久化存储中,并在新运行时重新加载同一基础模型和训练配置。

下载完整 Colab LoRA 断线续训 Notebook。通过 Colab 的“文件 → 上传笔记本”打开,选择 GPU 运行时,按单元格顺序执行。Notebook 自带模型载入、训练样本、保存、恢复、文件校验和重新加载 adapter 推理流程。

验证日期为 2026 年 11 月 7 日。本站用 CPU 微型 Qwen2 + LoRA 模型,在两个独立 Notebook 内核中验证了第 2 步保存、重启后恢复至第 4 步,以及 adapter 重新加载推理。Colab GPU 和 Google Drive 挂载未在该验证环境中执行。

先分清 adapter 与训练 checkpoint

保存内容 用途 续训需要检查
LoRA adapter 权重与配置 配合原基础模型做推理 adapter_model.safetensors、adapter_config.json
Trainer 状态 恢复进度与调度 trainer_state.json、optimizer.pt、scheduler.pt、随机状态及训练参数
实验配置 重新构建相同实验 模型快照、依赖版本、数据校验值、LoRA 和训练参数

PEFT 的 adapter 文件主要保存适配器参数,载入时还需要基础模型。Trainer checkpoint 在此基础上保存继续训练所需的状态。文件格式可对照PEFT checkpoint 文档,恢复入口可对照Transformers Trainer 文档。

Notebook 的默认训练配置

示例采用公开的 Qwen2.5-0.5B-Instruct,LoRA rank 为 8,目标模块为 q_proj、v_proj,序列长度 256,单卡 FP16,每设备 batch 为 1,梯度累积 4 次,演示训练 16 个 optimizer steps。8 条自编问答仅用于验证流程,训练样本中的用户提示和 padding 均从 loss 中屏蔽。

这组配置方便先完成一次短训练。扩大任务时,先准备自己的数据并选择新的运行目录,再调整长度、batch 和训练步数。显存使用还取决于模型、实现与运行时,遇到 OOM 可以先缩短序列,再检查 batch 和其他显存占用。

Notebook 固定 transformers 4.57.6、peft 0.18.1、accelerate 1.12.0,并检查 PyTorch 至少为 2.6。首次训练记录实际 PyTorch 版本与模型 commit。新运行时使用同一份保存的配置,版本不一致时先恢复原环境。GPU 选择与资源入口见本站Colab GPU 使用指南。

首次运行时做什么

  1. 上传 Notebook,切换 GPU,运行依赖单元格。
  2. 挂载自己的 Google Drive,并确认运行目录。默认位于 MyDrive/tbr8-lora/qwen25-05b-lora-resume-v1。
  3. 载入固定快照的基础模型并添加 LoRA,检查可训练参数和样本数。
  4. 启动训练,观察每 4 步保存完成的提示。
  5. 检查 Drive 中 checkpoint 目录里的 COMPLETE.json,再继续长任务。

默认直接把较小的 LoRA checkpoint 写入 Drive,适合本文的短演示。更大的任务可以将本地保存与后台复制分开,但需要额外验证复制完成和文件一致性。Drive 的空间、配额和 I/O 会影响保存,相关限制见Colab FAQ。

保存中断时怎样选恢复点

最后一个 checkpoint 目录可能只写完一部分文件。Notebook 在 Trainer 保存结束后,计算文件 SHA-256,最后写入 COMPLETE.json。重连时逐个核对清单、必需文件和 global_step,再按步数选出最新的完整版本。目录编号更大但未通过校验时,会选择之前的有效 checkpoint。

保存策略使用 save_only_model=False,保留两个近期 checkpoint。校验值用于发现文件不完整或损坏,仍应只加载自己生成、来源可信的训练状态。若所有目录均不完整,Notebook 会停止,保留现场供检查。

1
2
latest = last_complete_checkpoint()
trainer.train(resume_from_checkpoint=latest)

完整 Notebook 已定义上面的查找函数和 Trainer。恢复参数传给 train()。恢复前会重新载入基础模型并创建相同 LoRA 结构,由 Trainer 读入保存的 adapter、优化器、调度器和进度。

断线后从头运行,保持原目录

重连一个新的 GPU 运行时后,重新安装固定依赖、挂载相同 Drive,再按顺序运行全部单元格。基础模型文件可能需要重新下载,训练状态则来自持久化目录。不要把恢复时的 output_dir 指向新的空目录。

Notebook 会输出 start_step 与 final_step。若上次保存到第 8 步,恢复后应从保存的进度继续向 16 步推进。checkpoint 之间尚未保存的工作需要重新计算。不同 GPU、内核或随机实现可能影响数值,恢复训练状态并不保证跨硬件得到逐位一致的结果。

达到设定步数后,同一目录再次运行会提示训练已经完成。需要改变数据、模型或训练参数时,使用新的 RUN_NAME 建立新实验,便于保留两组配置和结果。

恢复后再做一次独立加载验证

Notebook 最后一节释放训练模型,按保存的 revision 重新载入基础模型,再通过 PeftModel.from_pretrained() 加载持久化 checkpoint 中的 adapter,进行简短生成。这样能检查保存结果是否可以独立读取。小样本演示的文本输出用于确认链路,不作为任务质量评测。

遇到的问题 建议检查
重连后找不到 checkpoint Drive 账号、挂载目录和 RUN_NAME 是否与上次一致
训练又从 0 开始 是否使用了空目录,是否只保存了 adapter,是否真正传入恢复路径
run_config 不一致 依赖、模型、数据和训练参数是否被修改
最新 checkpoint 校验失败 最后一次写入是否中断,之前的完整版本是否可用
Drive 报 I/O 或配额错误 可用空间、文件数量与读写配额

确认恢复流程后,再投入较长训练。保存间隔可以按“可接受损失的训练时间 ÷ 每步耗时”估算,再结合存储写入耗时调整。训练结束后保存完整目录和配置,方便之后复查。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » Google Colab 断线续训:用 Checkpoint 恢复 LoRA 训练(完整 Notebook)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址