
colab 不支持多个笔记本共享同一运行时会话,每个 .ipynb 文件均独占独立内核;但可通过 google drive 持久化数据、复用已安装包及序列化变量等方式高效衔接不同笔记本的工作流。
colab 不支持多个笔记本共享同一运行时会话,每个 .ipynb 文件均独占独立内核;但可通过 google drive 持久化数据、复用已安装包及序列化变量等方式高效衔接不同笔记本的工作流。
Google Colab 的设计原则是单笔记本—单运行时(single-notebook, single-runtime)隔离机制。这意味着:当你在 notebook1.ipynb 中下载数据、安装 torch, datasets, 或定义全局变量 model, train_loader 时,这些状态仅存在于该 Notebook 关联的 Python 进程中;一旦你打开或上传 notebook2.ipynb,Colab 会自动为其分配一个全新的、完全空白的运行时——此前所有内存对象、已加载模块、环境变量均不可见,也无法继承。
✅ 这不是限制,而是安全与可重现性的保障:隔离避免了状态污染和依赖冲突,符合 Jupyter 最佳实践。
那么,如何真正“延续工作”?以下是经过验证的三步协同方案:
1. 持久化核心资产到 Google Drive
挂载 Drive 后,将数据、模型权重、预处理结果等写入共享路径:
from google.colab import drive
drive.mount('/content/drive')
# 在 notebook1.ipynb 中保存
import pickle
with open('/content/drive/MyDrive/colab_shared/data_cache.pkl', 'wb') as f:
pickle.dump({'X_train': X_train, 'y_train': y_train}, f)
# 在 notebook2.ipynb 中加载(无需重新下载)
with open('/content/drive/MyDrive/colab_shared/data_cache.pkl', 'rb') as f:
cache = pickle.load(f)
X_train, y_train = cache['X_train'], cache['y_train']
2. 复用已安装的包(无需重复 pip install)
Colab 运行时重启后包会丢失,但同一会话生命周期内安装的包对所有后续执行单元有效。因此:
- 在
notebook1.ipynb中首次运行!pip install -q transformers datasets; - 然后在
notebook1中执行import transformers并验证; - 接着在
notebook2.ipynb中直接 import(只要不重启运行时)——因为两个 Notebook 实际共享的是同一个底层虚拟机(只是内核进程隔离),系统级包路径一致。
⚠️ 注意:若 notebook2 触发了运行时重启(如点击「重置运行时」或超时断连),则需重新安装。建议将安装命令统一放在首个代码块,并添加 --no-deps 或 --force-reinstall 防冲突。
3. 序列化运行时状态(进阶技巧)
对复杂对象(如训练中的模型、Tokenizer、自定义类实例),推荐使用 torch.save() 或 joblib:
# notebook1.ipynb
import torch
torch.save(model.state_dict(), '/content/drive/MyDrive/colab_shared/model.pth')
# notebook2.ipynb
model.load_state_dict(torch.load('/content/drive/MyDrive/colab_shared/model.pth'))
model.eval()
✅ 最佳实践总结
- 不要尝试“共享运行时”:技术上不可行,且违背 Colab 架构;
-
以 Drive 为“共享硬盘”:所有笔记本读写
/content/drive/MyDrive/colab_shared/下的文件; -
用
!pip list+import验证包可用性,而非重复安装; - 为每个 Notebook 添加清晰注释:说明其依赖哪些 Drive 中的资源,提升协作可维护性。
通过以上方式,你既能保持 Colab 的稳定性与安全性,又能实现跨笔记本的高效迭代——这才是云 Notebook 工作流的专业打开方式。











