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

求助:Colab/Jupyter重启后如何避免重新运行所有单元格

解决Colab/Jupyter单元格执行状态无法保存的问题

核心原因

Colab和Jupyter的运行时会话是临时的,关闭浏览器、断开连接或会话超时后,运行时内存中的变量、模型状态、中间计算结果都会被清空,这是平台的默认设计机制,并非设置错误。

Google Colab 专属解决方案

  • 防止会话自动断开:在单独的单元格运行以下代码,每隔5分钟输出一个字符,避免Colab因长时间无交互断开会话:
    import time
    while True:
        print(".", end="")
        time.sleep(300)  # 5分钟一次输出
    
    若使用Colab Pro/Pro+,可在「运行时」菜单选择「暂停会话」,下次打开时直接恢复之前的运行状态,无需重新执行;付费版的会话保持时长也远长于免费版。
  • 训练过程 checkpoint 化:训练时定期保存模型权重、优化器状态、当前训练轮次等关键信息,示例代码(以PyTorch为例):
    # 保存checkpoint
    import torch
    torch.save({
        "epoch": current_epoch,
        "model_state_dict": model.state_dict(),
        "optimizer_state_dict": optimizer.state_dict(),
        "loss": current_loss
    }, "/content/drive/MyDrive/checkpoint.pth")
    
    # 恢复checkpoint
    checkpoint = torch.load("/content/drive/MyDrive/checkpoint.pth")
    model.load_state_dict(checkpoint["model_state_dict"])
    optimizer.load_state_dict(checkpoint["optimizer_state_dict"])
    start_epoch = checkpoint["epoch"] + 1
    
    Keras可使用model.save_weights()配合model.load_weights()实现类似逻辑,下次启动直接从start_epoch继续训练。
  • 挂载Drive保存所有中间结果:将预处理后的数据集、特征数组等用pickle或np.save保存到挂载的Google Drive,示例:
    import pickle
    import numpy as np
    
    # 保存预处理数据
    with open("/content/drive/MyDrive/preprocessed_data.pkl", "wb") as f:
        pickle.dump(preprocessed_data, f)
    np.save("/content/drive/MyDrive/features.npy", features)
    
    # 恢复数据
    with open("/content/drive/MyDrive/preprocessed_data.pkl", "rb") as f:
        preprocessed_data = pickle.load(f)
    features = np.load("/content/drive/MyDrive/features.npy")
    

Jupyter Notebook 专属解决方案

  • 使用%store魔法命令:直接保存单个变量到磁盘,跨会话恢复:
    # 保存变量
    %store my_model
    %store training_history
    
    # 恢复变量(新会话中执行)
    %store -r my_model
    %store -r training_history
    
  • 序列化保存整个会话:使用dill库保存整个运行环境,恢复时直接加载:
    # 安装dill(首次运行)
    !pip install dill
    
    # 保存会话
    import dill
    dill.dump_session("training_session.pkl")
    
    # 恢复会话(新会话中执行)
    dill.load_session("training_session.pkl")
    
    注意:大模型或复杂环境会生成较大文件,且Python版本、库版本不一致可能导致恢复失败。
  • 安装会话管理插件:通过jupyter nbextensions安装sessionmanager插件,支持手动保存和恢复会话状态,需确保插件与Jupyter版本兼容。

通用优化技巧

  • 拆分Notebook:将数据预处理、模型训练、结果评估拆分为独立的Notebook,训练完成后保存关键结果,后续仅运行评估或微调部分,无需重复执行全流程。
  • 训练逻辑脚本化:把训练代码写成独立的.py脚本,在Notebook中用!python train.py执行,脚本内置checkpoint检查逻辑,即使会话断开,下次运行脚本会自动从最近的checkpoint继续训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:10:22