Google Colab 不仅可以通过浏览器运行 Jupyter Notebook,还可以借助官方 Colab CLI,将云端 GPU 运行时作为临时 Linux Server 使用。
通过 SSH-over-WebSocket,可以从本地终端、VS Code 或 Coding Agent 访问远程 GPU,实现代码执行、模型训练与数据处理。
本文介绍 Colab 的资源模型、CLI 安装、实例管理、SSH 接入、Google Drive 挂载,以及临时环境下的开发工作流。
一、Google Colab 概述
1.1 什么是 Google Colab
Google Colab(Colaboratory)是 Google 提供的托管式 Jupyter Notebook 服务,主要面向 Python 开发、数据科学和机器学习。
它具有以下特点:
-
云端计算:代码在 Google 提供的 Linux 虚拟机中执行。
-
GPU/TPU 支持:可以按需申请 NVIDIA GPU 或 Google TPU。
-
免环境配置:预装 Python、PyTorch 等常用机器学习组件。
-
Notebook 集成:支持交互式代码执行、可视化和结果展示。
-
Google Drive 集成:可以直接挂载 Google 云盘访问数据。
-
命令行访问:通过 Colab CLI 管理运行时,并使用 SSH 进行远程开发。
Colab 可以免费使用部分 CPU、GPU 资源,付费版本则提供更多计算额度和硬件选择。
1.2 GPU 资源与 Compute Units
Colab 使用 Compute Units(CU)衡量部分付费计算资源的消耗。
不同 GPU 的计算性能、显存容量及 CU 消耗速率不同。
Colab CLI 当前支持请求的 GPU 包括:
| GPU | 显存 | 架构 | 主要用途 |
|---|---|---|---|
| NVIDIA T4 | 16GB | Turing | 推理、轻量训练 |
| NVIDIA L4 | 24GB | Ada Lovelace | 推理、中等规模训练 |
| NVIDIA G4 | 24GB | Blackwell | 新一代 AI 计算 |
| NVIDIA A100 | 40/80GB | Ampere | 大规模模型训练 |
| NVIDIA H100 | 80GB | Hopper | 高性能深度学习训练 |
实际可分配的 GPU 取决于账号权益、当前资源供应及动态使用限制。CLI 支持请求某种硬件,并不意味着该硬件始终可用。
可以通过以下命令查看账户计算额度:
colab usage
输出示例:
Current balance: 0.00 compute units
Usage rate: 0.08/hr
Active assignments: 1
其中:
-
Current balance:账户剩余 CU。 -
Usage rate:所有活动实例当前合计的 CU 消耗速率。 -
Active assignments:当前分配的运行时数量。
CU 消耗速率由 Colab 后端返回,并非固定不变的 GPU 价格。Colab 也没有公开完整的、保证实时有效的各 GPU CU 费率表。
1.3 临时运行时与生命周期
Colab 与传统云服务器最重要的区别是:运行时不保证持久化。
Colab 为用户临时分配虚拟机,实例具有空闲超时和最长生命周期限制。
Google 官方说明,即使是付费用户,运行时仍然可能因空闲、运行时长限制或资源管理策略而被终止。
通常情况下:
| 方案 | 连续运行时间 | 持久化系统盘 |
|---|---|---|
| Colab Free | 最长通常约 12 小时 | 不提供 |
| Colab Pro | 通常约 12 小时 | 不提供 |
| Colab Pro+ | 持续执行代码时最长可达 24 小时 | 不提供 |
| Colab Pay As You Go | 通常约 12 小时 | 不提供 |
这些时间不是服务保证值。Google 可能动态调整限制,也没有公布固定的空闲超时时间。
需要注意:
-
SSH 断开不代表实例立即销毁。
-
实例空闲不代表已经停止。
-
保持 SSH 连接不能保证实例不会回收。
-
即使 CU 余额充足,也不能保证实例一直运行。
-
实例被销毁后,系统环境和临时磁盘数据无法恢复。
因此,应当将 Colab 视为可随时重新创建的计算节点,而不是持久化开发服务器。
官方说明:Google Colab FAQ。Google Research
二、Colab CLI 安装与实例管理
2.1 安装 Colab CLI
Colab CLI 是 Google 提供的命令行工具,可用于创建计算实例、执行代码、传输文件和管理 GPU 资源。
官方仓库:
https://github.com/googlecolab/google-colab-cli
当前官方支持 macOS 和 Linux。
推荐使用 uv 安装 Colab CLI:
uv tool install google-colab-cli
检查安装:
colab --help
colab version
如果已安装,可以更新:
uv tool upgrade google-colab-cli
部分较新功能可能只存在于 GitHub 版本中,可以直接安装最新源码:
uv tool install --force \
--from git+https://github.com/googlecolab/google-colab-cli.git \
google-colab-cli
安装后检查:
colab ssh --help
2.2 Google 账号认证
Colab CLI 支持两种主要认证方式:
-
oauth2:通过浏览器完成 Google OAuth 授权。 -
adc:使用 Google Cloud Application Default Credentials。
对于个人 Google 账号,推荐 OAuth。
可以通过一个只读命令触发登录:
colab --auth=oauth2 sessions
首次执行时,CLI 会提供 Google 授权链接。完成授权后,凭据会缓存在本地。
相关配置通常位于:
~/.config/colab-cli/
├── token.json
├── sessions.json
└── settings.json
可以检查当前账号:
colab --auth=oauth2 whoami
需要注意,colab auth 与 CLI 登录不是同一概念。
colab auth 用于在远程 Colab 运行时中配置访问 Google Cloud 服务的认证,而不是单纯登录本地 CLI。
如果使用 ADC,则需要先通过 Google Cloud CLI 配置合适的凭据和权限。
2.3 创建 GPU 实例
使用 colab new 创建运行时。
例如创建名为 dev 的 T4 GPU 实例:
colab new -s dev --gpu T4
创建 L4:
colab new -s dev --gpu L4
其中:
-
-s dev:指定本地会话名称。 -
--gpu L4:请求 NVIDIA L4 GPU。
创建后,Colab 会分配一台实际的 Linux 虚拟机。
可以将其理解为:
Session: dev
│
▼
Colab Runtime
├── Linux
├── NVIDIA GPU
├── CPU / RAM
├── Python
└── 临时磁盘
dev 只是 Colab CLI 使用的会话名称,并不是永久绑定的云服务器。
如果实例被销毁,即使重新创建相同名称的会话,底层虚拟机也可能完全不同。
2.4 查询实例状态
查看所有活动实例:
colab sessions
查看实例状态:
colab status -s dev
输出示例:
[dev] gpu-t4-s-kkb-ass1c0-32vr0r2gxp6qg
Hardware: T4
Shape: Standard
Variant: GPU
Status: IDLE
其中:
-
Hardware:GPU 类型。 -
Shape:机器规格。 -
Variant:计算资源类型。 -
Status:当前运行状态。
IDLE 表示实例空闲,并不意味着虚拟机已经关闭。
查看计算额度:
colab usage
2.5 远程代码执行
Colab CLI 支持直接在远程实例执行 Python 代码。
执行单行代码:
echo 'print("Hello Colab")' | colab exec -s dev
执行本地 Python 文件:
colab exec -s dev -f train.py
该命令会读取本地脚本并将代码发送给远程 Python 内核执行。
需要注意,这不等于将整个项目目录上传到远程文件系统。
对于包含多个 Python 模块、配置文件和资源文件的工程,仍然需要通过 Git、SSH、rsync 等方式同步项目。
CLI 还提供一次性任务模式:
colab run --gpu T4 train.py
它会创建临时运行时、执行代码,并在完成后释放资源。
2.6 释放 GPU 实例
使用 colab stop 主动释放运行时:
colab stop -s dev
然后检查:
colab sessions
colab usage
正常释放后,活动实例数量会减少。
colab stop 不是持久化云服务器的关机操作,而是释放当前临时运行时。
因此,停止前应确保代码、数据和训练检查点已经保存到持久化存储。
实例被销毁后,通常需要重新安装软件和恢复 Python 环境。
三、基于 SSH-over-WebSocket 的远程访问
3.1 SSH 连接机制
Colab CLI 支持通过 SSH-over-WebSocket 访问运行时。
传统 SSH 通常直接连接远程服务器的 TCP 22 端口,而 Colab 并不向用户提供稳定的公网 SSH 地址。
因此,Colab CLI 使用 WebSocket 建立数据通道,并通过本地代理接入 OpenSSH。
整体结构如下:
Local Machine
│
├── OpenSSH Client
│ │
│ ▼
│ Colab CLI
│ │
│ │ HTTPS / WebSocket
│ ▼
│ Google Colab
│ │
│ ▼
└── Remote Linux Runtime
├── SSH Server
├── Python
└── NVIDIA GPU
这种方式不需要给 Colab 实例分配公网 IP,也不需要开放 TCP 22 端口。
3.2 SSH 密钥配置
首先,在本地生成 SSH 密钥:
ssh-keygen -t ed25519
如果已有 Ed25519 密钥,可以直接使用。
检查:
ls ~/.ssh/id_ed25519*
确认 Colab CLI 支持 SSH:
colab ssh --help
直接连接已有实例:
colab ssh -s dev
如果连接成功,就会进入远程 Linux Shell。
可以验证 GPU:
nvidia-smi
3.3 配置 OpenSSH ProxyCommand
为了实现:
ssh colab
可以在本地编辑:
micro ~/.ssh/config
增加:
Host colab
HostName colab
User root
ProxyCommand /Users/touken/.local/bin/colab ssh --proxy-mode -s dev
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking accept-new
其中:
-
Host colab:定义 SSH 主机别名。 -
HostName colab:提供给 OpenSSH 的目标主机名。 -
User root:远程登录用户。 -
ProxyCommand:通过 Colab CLI 建立 WebSocket 数据通道。 -
IdentityFile:指定用于 SSH 认证的私钥。
注意将 ProxyCommand 中的可执行文件路径替换为本机实际路径:
command -v colab
使用 StrictHostKeyChecking accept-new 可以自动接受首次连接的主机密钥,同时保留后续的主机身份检查。重新创建 Colab 运行时后,SSH 主机密钥可能变化,需要确认后更新 known_hosts。
完成配置后:
ssh colab
即可连接 dev 运行时。
3.4 自动创建指定 GPU 实例
可以在 ProxyCommand 中指定 GPU 类型:
Host colab
HostName colab
User root
ProxyCommand /Users/touken/.local/bin/colab ssh --proxy-mode -s dev --gpu L4
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking accept-new
此时:
-
如果
dev已存在,则连接现有实例。 -
如果
dev不存在,则尝试创建新的 L4 实例。 -
如果
dev已经使用 T4,--gpu L4不会将其转换为 L4。
因此,--gpu 主要控制自动创建实例时的硬件类型。
3.5 SSH 连接复用
Colab SSH-over-WebSocket 存在连接并发限制。
例如,在一个终端已经连接时,再从 VS Code 建立新的 SSH 连接,可能遇到:
Already-active SSH session (HTTP 429):
another `colab ssh` is connected to this runtime.
可以通过 OpenSSH 的 ControlMaster 复用底层 SSH 连接。
增加:
Host colab
HostName colab
User root
ProxyCommand /Users/touken/.local/bin/colab ssh --proxy-mode -s dev
IdentityFile ~/.ssh/id_ed25519
ControlMaster auto
ControlPath ~/.ssh/colab-control-%C
ControlPersist 600
ServerAliveInterval 30
ServerAliveCountMax 3
StrictHostKeyChecking accept-new
其中:
-
ControlMaster auto:复用已有 SSH 主连接。 -
ControlPath:指定连接复用使用的本地 Unix Socket。 -
ControlPersist 600:最后一个 SSH 客户端退出后,主连接继续保留 600 秒。 -
ServerAliveInterval:定期检测连接是否正常。
可以打开两个终端,分别执行:
ssh colab
验证两条 SSH 客户端连接能否共享同一个底层通道。
查看复用状态:
ssh -O check colab
正常情况下会输出类似:
Master running (pid=12345)
连接复用可以缓解 Colab 的单连接限制,但不能保证 Colab 实例持续运行。
四、Google Drive 挂载与数据持久化
4.1 Google Drive 的作用
Colab 的本地文件系统是临时的。
因此,不能将模型、数据集和训练检查点仅保存在 /content 中。
Google Drive 可以提供持久化存储,使数据独立于 Colab 运行时存在。
典型结构:
Google Drive
└── MyDrive
├── datasets/
├── checkpoints/
└── outputs/
Colab Runtime
└── /content
├── gpu/
├── datasets/
└── drive/
└── MyDrive/
其中,/content/drive/MyDrive 是云盘挂载目录,而不是普通的临时本地目录。
4.2 挂载 Google Drive
在本地 Mac 终端执行:
colab drivemount -s dev
首次运行时可能需要通过浏览器进行 Google 授权。
默认挂载路径:
/content/drive
挂载后,通过 SSH 访问:
ssh colab
查看文件:
ls /content/drive/MyDrive
在 Python 中访问:
from pathlib import Path
data_dir = Path("/content/drive/MyDrive/datasets")
for path in data_dir.iterdir():
print(path)
也可以指定其他挂载路径,具体参数可以通过以下命令查看:
colab drivemount --help
4.3 挂载生命周期
Google Drive 挂载依附于当前运行时。
| 操作 | Drive 挂载 | Drive 文件 |
|---|---|---|
| 退出 SSH | 保留 | 保留 |
| 关闭 VS Code | 保留,前提是实例仍在 | 保留 |
| 重新连接同一个实例 | 通常保留 | 保留 |
| Colab 实例被销毁 | 挂载消失 | 保留 |
| 创建新实例 | 需要重新挂载 | 保留 |
例如:
colab stop -s dev
执行后,Colab 虚拟机及其挂载状态会被释放。
但 Google Drive 中的数据不会因为解除挂载而删除。
新实例创建后重新执行:
colab drivemount -s dev
即可再次访问云盘文件。
需要特别注意:挂载目录中的删除、覆盖等文件操作可能直接修改 Google Drive 中的真实数据。卸载或销毁实例不会删除云盘文件,但通过挂载目录执行的删除操作会影响云盘。
4.4 数据读取与训练性能
Google Drive 是远程存储,不适合作为高频随机 I/O 的训练数据目录。
尤其是包含大量小文件的数据集,直接访问 Drive 可能产生较明显的性能瓶颈。
推荐采用以下方式:
Google Drive
│
│ 复制数据
▼
Colab /content/datasets
│
│ 本地高速读取
▼
PyTorch Training
│
│ 保存 Checkpoint
▼
Google Drive
例如:
mkdir -p /content/datasets
cp -a \
/content/drive/MyDrive/datasets/. \
/content/datasets/
如果数据集包含大量小文件,建议先打包为 .tar,在 Colab 本地解压。
训练完成后,将模型保存到 Google Drive:
import torchtorch.save( model.state_dict(), "/content/drive/MyDrive/checkpoints/model.pt")
对于重要检查点,更稳妥的方式是先保存到本地临时文件,再复制或上传到 Drive,避免文件写入中断后形成不完整的检查点。
Google 官方也建议减少对挂载 Drive 的频繁小文件读取。Google Research
五、使用限制与注意事项
Colab CLI 让普通 Colab 获得了接近远程 Linux Server 的操作体验,但并没有改变 Colab 的资源模型。
需要特别注意以下几点:
-
实例不持久化:运行时被回收后,安装的软件和本地文件可能全部丢失。
-
SSH 不保证保活:保持连接无法绕过空闲超时或最长运行时长。
-
Compute Units 不是资源预留:即使还有 CU,也不能保证某张 GPU 随时可用。
-
GPU 类型可能变化:重新创建实例时,不保证获得与之前相同的硬件。
-
Drive 挂载不是本地磁盘:大量小文件和频繁随机读写可能影响训练性能。
-
长时间训练需要 Checkpoint:应该将任务设计为可中断、可恢复。
-
GPU 使用后应主动释放:退出 SSH 不等于释放计算实例。
Google Colab 更适合短期、交互式、能够自动恢复环境的计算任务。如果需要长期保留系统环境、随时开关机,或连续运行多天的 GPU 任务,应考虑 Google Compute Engine 等具有持久化磁盘的计算服务。