相关文章推荐
帅气的面包  ·  google colab ...·  1 年前    · 
帅气的面包  ·  Colab ...·  1 年前    · 
帅气的面包  ·  Stable Diffusion ...·  1 年前    · 
帅气的面包  ·  【どう違う?】Google ...·  1 年前    · 

Google Colab 的正确使用姿势

2023 年更新:Colab Pro 的价格已经上涨了不少,如果大家需要国内的算力平台,可以 试试 Featurize ,开箱即用,Stable Difussion 的镜像也有,直接使用即可。


推荐看原文:

Colab 已经被越来越多的人用于炼丹,但我也听到很多抱怨的声音,例如 Colab 太慢,不方便,还会中途强迫掉线 etc... 这篇文章就跟大家介绍一下正确使用 Colab 的姿势。


氪金

白嫖党先别跑。

如果你还在白嫖 Colab,那你应该看看我的另外一篇文章:

总之, 9.9$ 一月从白嫖党升级为 Pro 用户才能算是真正的「白嫖」Colab。

除了 Colab,你还应该扩充 Google Drive 的存储空间,因为想要用好 Colab,Google Drive 是肯定少不了的。

Google Drive 提供很多订阅方式,我当前使用的是下面的年付订阅:

200 G 不限速云盘,就算不是用来配合 Colab 他也很香呀

然后,你还需要找一个稳定的梯子,出于众所周知的原因我这里就不做过多介绍了。

那么一个月的成本大约是:
Colab Pro 9.9$ + Google Drive 2.5$= 12.5$

你获得的是:
SUPER POWER (指无限使用的 V100 算力,甚至还能多开)


避免滥用

9.9$ 一月无限用 V100,还可以同时用多张?这种本身只会出现在白日梦中的事,Google 给咱实现了。秉持知足常乐的精神,你不应该同时占用过多的实例,根据我的经验,同时开启 1 至 3 台实例都是可以的(再多我没有尝试过了,也不想尝试,正道的光)。

注意:在 Colab 中切换 runtime 类型实际上是开启了一个新的实例,之前的实例似乎并没有被立即销毁,你可以通过右上角的 session 管理器来查看当前已经开启的实例,以及关闭没有使用的实例。
session 管理器

除了实例占用过多的问题,你可能还会经常收到这样的警告:

这是因为你当前开启的是一台 GPU 实例,但你还没有使用 GPU。

我们应该尽量避免这样的警告。最好的情况是:你的 Notebook 已经开发完成,可以直接运行,那么你在申请 GPU 后直接运行 Notebook 即可。

但有时候你可能还需要在 Notebook 上做一些开发工作才能运行,为了避免被提醒,你可以:

1. 先申请一台非 GPU 的实例,当调试通过后,再换为 GPU 实例运行。
2. 实例申请过后立即运行一小段会占用显存的代码(亲测有效),如下所示。

placeholder = torch.Tensor([1000, 1000, 1000]).cuda()  # 大约占用 1.1G 显存

整理工作流

即使是 Colab Pro 用户,也会受限于 Colab 的各种约束,跟纯本地的开发、训练过程肯定有所不同,我们需要知道 Colab 具体有哪些限制,以及如何以最简单的方式来应对这些限制。

Colab 的常见限制如下:

  1. 使用了容器技术, 实例释放后所有实例中的数据会清空 。这会影响数据集和模型存储的方式。
  2. 运行 24 小时之后系统会自动回收实例。这会考验代码是否支持无缝衔接(resumption)。

下面是我在 Colab 上的工作流:

  1. 将本地数据集压缩成单个压缩文件,上传到 Google Drive 中。
  2. 打开一个 Notebook,mount Google Drive。

3. 在 Notebook 中添加一个 Section 命名为「安装环境」。然后在这个 Section 中做一些数据复制、解压,以及安装第三方包的工作。实例代码如下:

为什么不直接将数据集存放至 Drive 直接使用,而是要先压缩,再从 Drive 中拷贝出来解压使用?

因为直接从 Drive 中读取数据是通过网络传输的,并不是从本地文件磁盘读取。如果数据文件多,那么就会发很多次网络请求,导致加载数据非常慢,进而严重影响训练速度;这也是很多小伙伴抱怨 Colab 慢的原因之一。所以我们提前压缩好数据集文件,每次训练前复制压缩文件到实例的磁盘,再进行解压,最大程度保证网络传输次数少,传输数据量小。

4. 环境准备好后,写好训练代码就可以开始训练了。在选择训练工具框架或自己徒手写训练代码的时候,将训练产生的所有中间文件(如图片、日志、Checkpoint等)都存放至 Drive 的目录中。另外,训练的代码要能够完美地从某个 Checkpoint 中恢复训练。

我所使用的深度学习框架是 PyTorch,辅助的训练工具是 MineTorch,MineTorch 可以将所有的训练日志同步至 Google Sheet,以方便我做实验的结果可视化和对比:

MineTorch 产生的实验日志

MineTorch 也支持 Resumption 和简单的实验管理,所以配合 Colab 使用非常方便。



以上就是我使用 Colab 的一些经验分享。

另外,如果你有其他疑问需要解决,包括但不限于 Python 代码、Kaggle 竞赛、视觉等相关问题,我还提供付费的咨询服务,欢迎关注微信公众号「 阿布猫 」咨询。

编辑于 2023-04-26 09:22 ・IP 属地四川