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

机器之心报道

编辑:陈萍、小舟

「至尊会员」的坑,看完测评再决定入不入吧......

对于没有 GPU 的小伙伴们来说,谷歌 Colab 是一个公认的「真香」神器,穷苦学生党也能免费薅羊毛。

不过,使用的人多了,难免会出现不如意的情况,几个小时就掉一次线、分配的 RAM 不足等问题随之而来。然后 Colab 开启了会员机制。

就在前几天 Colab 搞了个会员 Colab Pro+,每月 50 刀、训练 24 小时不掉线。除了这种堪称至尊会员 Pro + 外,还有每月差不多 10 美元的 Colab Pro 超级会员。

据了解,Pro + 最大的特点是「后台执行」,关了浏览器还能运行那种。此外,Pro + 版的 GPU、内存和运行时长也将全面升级。

Pro + 究竟升级了什么,谷歌在「常见问题解答」里写得非常清楚。总结一下就是:

  • 免费的就只能用老古董 K80,Pro 和 Pro+ 用户可以使用 T4 和 P100 GPU,还可以优先使用 TPU;
  • Colab Pro+ 订阅者能享受更高的连接稳定性,即使关闭计算机或浏览器标签页后,笔记本也能继续执行,上限是 24 小时;
  • 但是,在几乎所有服务中,资源供应还是没有保证,并且依然存在用量限额。

50 刀的价格属实不菲,入手之前不如先看看别人怎么说。一位名叫 Martin Henze 的开发者最近充了 Colab Pro + 会员,我们来看看 ta 的「开箱测评」。

事情是这样的,Martin Henze 参加了 Kaggle 的比赛,用的是自己的笔记本电脑,对于小模型和小图像来说自己的电脑也够用,但要想在排行榜上打榜升级,就必须扩大模型和数据规模,这样一来,电脑完全 hold 不住了。在 GPU 不够用的情况下,Henze 决定使用 Google Colab 付费选项来解决。

Henze 表示自己以前只使用过免费版的 Colab,现在发现还有 2 个付费版:Colab Pro 和 Colab Pro+。与 Pro 相比,Pro+ 版本宣传「优先访问更快的 GPU」。这么看来 Pro + 多了一个优先级,Pro 用户接下来的使用体验可能就没那么丝滑了。因此 Henze 萌生了测试 Pro + 的想法。

Henze 写了一篇博客来介绍自己在 Colab Pro+ 中发现的功能,以及在 Kaggle 比赛中使用 Colab 的最佳方法。此外,文章最后还介绍了 Colab 的可替代方案。

Colab Pro + 的特性


  • GPU 资源 :订阅 Pro + 后,在「High-RAM」GPU 运行时设置下,Henze 可以使用 1 块 V100 GPU,一次只能运行其中一个会话。另外,「Standard」RAM 运行时选项允许用户每次使用 1 块 P100 GPU 运行 2 个并发会话;
  • 「High-RAM」运行时提供了 53GB 的 RAM 和 8 个 CPU 核。在「Standard」RAM 会话中,Henze 得到了 13GB RAM 和 2 个 CPU(Henze 认为这个配置可能是免费版 Colab 就能提供的);
  • 对任意会话 运行时限制 都是 24 小时。Pro + 用户即使关闭浏览器后也能在后台运行,这种「后台执行」能力是一个非常有用的功能, 但 Henze 没有进行测试。请注意,一段时间没有任何活动(即没有单元正在运行),即使是 Pro+ 用户,也会断开连接;
  • 对于大数据来说, 存储 是非常重要的,与 Pro 的 100GB 存储量相比,Pro + 提供了 150GB 的磁盘空间。事实证明,磁盘空间的提升具有重要作用,它允许 Henze 可以复制训练数据与测试数据,而且还可以安装更新一些库。

至于 Colab 的 TPU 运行时以及并发 CPU 会话的数量,Henze 还没进行测试。

一方面有优势,与免费的 Colab 和 Kaggle 资源相比,Pro + 用户能享受更高的连接稳定性,即使关闭计算机或浏览器标签页后,程序也能继续执行,上限是 24 小时。另一方面也有一些限制,例如在时间紧迫的情况下,一次只能进行 1 个会话,或者使用较慢的 P100 进行 2 个会话。

另外请注意,Colab FAQ 指出:为了防止有限的资源被少数用户垄断,Colab Pro 和 Pro + 中的资源优先考虑最近使用资源较少的用户。因此,用户似乎不太可能在一个月的时间里全天候使用 V100 GPU。对于这一点,作者也打算进行更多的实验,也许会遇到这个限制。

将 Kaggle Notebook 移到 Colab 上

如果你在一周内已经超出了可以使用的(相当多的)Kaggle 资源,或者在短时间内需要更多的资源,将 Kaggle Notebook 移到 Colab 将是一个很好的选择,在 Colab 上可以继续训练和实验。但这一过程并不容易,需要面临两个挑战:获取数据、设置 notebook 环境。此外,Colab 放弃了许多标准的 Jupyter 快捷键,这种做法会增加用户的工作量。

数据导入 Colab 方面:目前最好和最快的方法是通过 GCS_DS_PATH 复制数据,即谷歌云存储路径。自 2017 年 Kaggle 被谷歌收购以来,其框架已被大量集成到谷歌的云环境中。Kaggle 数据集和比赛数据都有云存储地址,可以从那里将数据转移到 Colab 上。

你可以通过在 Kaggle Notebook 中运行以下代码来获得 GCS_DS_PATH。将 seti-breakthrough-listen 替换为你自己的比赛(competition)或数据集的名称:

from kaggle_datasets import KaggleDatasets
GCS_DS_PATH = KaggleDatasets().get_gcs_path("seti-breakthrough-listen")
print(GCS_DS_PATH)

在 Colab 中,你可以使用 gsutil 工具复制数据集,甚至是单个文件夹,就像这样:

!gsutil -m cp -r {GCS_DS_PATH}/"train" .
!gsutil -m cp -r {GCS_DS_PATH}/"test" .

这比从 Google Drive 复制或通过 Kaggle API 下载来检索数据的速度要快得多。当然,获取数据也受到 24 小时运行时的限制。需要注意的是,会话断开后数据就丢失了,需要在新的会话中重新设置。

在会话中创建的文件(例如经过训练的模型权重或提交文件)或用户安装的自定义库,也要受到类似的限制。Colab 安装了常用的 Python 和深度学习工具,但都是旧版本。用户可以通过 pip 进行更新:

!pip install --upgrade --force-reinstall fastai==2.4.1 -qq
!pip install --upgrade --force-reinstall timm==0.4.12 -qq
!pip install --upgrade --force-reinstall torch -qq

需要注意两件事:安装后需要重新启动才能导入新库。不用担心,重启后数据仍然存在,但你需要确保留出足够的磁盘空间来安装。

将输出保存在 Drive 上:最后要确保将实验结果(经过训练的权重、提交文件等)复制到 Google Drive 账户,以确保在运行时断开连接却不会丢失它们。当然你也可以手动下载,但自动复制相对更可靠。

可以像这样在 Colab notebook 中使用 Drive:

from google.colab import drive
drive.mount('/content/drive')

然后复制文件,例如通过 Python 中的 os.system。

可供选择的其他云 GPU

除了 Colab 及其付费版以外,还有其他的云 GPU 替代方案,或许它们可以提供更多的性能(也许能用上 A100),或许是更便宜、使用更灵活。除了大家所熟知的 GCP 和 AWS,还包括以下:

Paperspace Gradient :G1 使用费用为每月 8 美元,并提供 GPU 和 6 小时运行时限制的免费版。除此之外,每小时花费 2.30 美元可以运行 V100。此外,G1 还能提供 200GB 的存储空间和 5 个并行运行的 notebook。

JarvisCloud :每小时 2.4 美元可使用 A100 GPU 。此外,JarvisCloud 还提供最新的 Pytorch、FastAI、Tensorflow 作为预安装框架。存储高达 500GB,每小时最高 7 美分。

Vast.ai :是一个出租 GPU 的平台。你可以在此访问 GCP、AWS 和 Paperspace 资源。不过价格差异很大,但有些看起来比具有相似可靠性的大公司便宜得多。

OracleCloud :每小时支付约 3 美元可运行 V100,与 AWS 相当。此外, A100 也即将投入使用。

OHVcloud :一家以价格优惠而闻名的法国供应商。每小时支付 1.7 美元就可以使用 1 块 V100,并提供 400GB 的存储空间。

当前市面上有很多云 GPU 选择,也许在这种良性竞争下,我们会看到价格的合理调整。