在最近一次Kaggle比赛的最后几天,我发现自己需要更多的GPU能力。就像人们在这种场合下经常做的那样。我自己的笔记本电脑的GPU设置,在处理各种小模型和小图像方面做得很好,但要进一步攀登排行榜,就必须扩大这两方面的规模。我的首选方案GCP和AWS很快就被证明需要增加配额,而这些配额要么没有发生,要么花了太长时间。因此,我决定探索谷歌Colab的付费选项。
我只用过Colab的免费版本,然后发现有两个付费订阅。Colab Pro和Colab Pro+。与10美元/月的专业版相比,50美元/月的Plus版宣传的是 "优先使用更快的GPU"。在研究这个问题和该网站提供的功能描述中的其他模糊之处时,我很快意识到Plus仅在一两天前推出。而且似乎没有人真正知道具体的规格是什么。所以我对自己说 "一分钱,一分货"。或者按照目前的汇率,大约36英镑。还不如买下Plus,弄清楚它是什么。
这篇文章描述了我在Colab Pro+中发现的功能,以及如何在Kaggle比赛中最好地使用任何版本的Colab的一些说明。在Twitter上分享了一些发现后,我收到了许多关于Colab替代品的非常有用的建议,这些建议在文章的最后部分进行了汇编。
Colab Pro+的特点
-
GPU资源。Plus订阅让我在其 "高内存 "GPU运行时间设置中获得了1个V100 GPU。我一次只能运行其中的一个环节。另外,"标准 "RAM运行时间选项允许我运行2个并发会话,每个会话有1个P100 GPU。
-
高内存 "运行时间提供了53GB的内存和8个CPU核心,确实证明了它的名字是正确的。在我的 "标准 "内存会话中,我得到了13GB内存和2个CPU(我认为这可能是免费Colab中包含的内容)。
-
任何会话的运行时间限制是24小时;这在我的测试中是一致的。Plus套餐宣传说,即使关闭浏览器,笔记本也会继续运行,这可能是一个有用的功能。但我没有测试这个。要注意的是,即使在Pro+中,运行时间在一定的非活动时间(即没有单元格运行)后仍然会断开连接。
-
对于大数据,存储是很重要的。与专业版的100GB相比,Pro+为我提供了150GB的磁盘空间。这在允许我复制所有的火车和测试数据方面起到了至关重要的作用,此外还有管道安装更新库。
-
我没有测试的东西。Colab的TPU运行时间以及并发的CPU会话数量。
这些功能是否值得花50美元/月?一方面,拥有24小时的V100动力是比免费的Colab和Kaggle资源的一个显著的进步。另一方面,在时间紧迫的情况下,被限制在一次1个会话,或2个会话的慢速P100,可能是一个限制性因素。
还要注意的是,Colab的FAQ说:"Colab Pro和Pro+中的资源优先提供给最近使用较少资源的用户,以防止少数用户垄断有限的资源"。因此,一个人似乎不太可能在一整个月内全天候使用V100 GPU。我打算进行更多的实验,可能迟早会遇到这个限制。
Colab上的Kaggling
如果你已经超过了本周的Kaggle资源(相当多),或者像我一样,在短时间内需要更多的马力,那么把你的Kaggle笔记本移到Colab中是一个很好的选择,可以继续进行训练和实验。不过这可能并不简单,对我来说,两个主要的挑战是获取数据和设置笔记本环境。好吧,再加上Colab选择放弃许多标准的Jupyter键盘快捷键,这让人有点生气(说真的:为什么?)
**把你的数据输入Colab:**到目前为止,最好最快的方法是通过他们的GCS_DS_PATH ;即谷歌云存储路径复制数据。自从Kaggle在2017年被谷歌收购后,其框架已经被大量整合到谷歌的云环境中。Kaggle数据集和竞赛数据都有云存储地址,可以从那里快速转移到Colab。
你可以通过在Kaggle笔记本中运行以下代码获得GCS_DS_PATH 。用你的比赛或数据集的名称代替seti-breakthrough-listen 。
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
有两点需要注意:安装之后,你需要重新启动你的运行时间,以便能够import 新的库。不用担心:重启后你的数据仍然在那里。还要确保留下足够的磁盘空间来安装你需要的一切。
把你的输出保存在驱动器上。最后,请确保将你的实验结果--无论是训练好的权重、提交的文件,还是EDA的视觉效果--复制到你的Google Drive账户上,以确保在运行时断开连接时不会丢失它们。从我的错误中学习总比自己犯错要好。你总是可以手动下载东西,但我发现自动复制它们更可靠。
你可以像这样在你的Colab笔记本中安装Drive。
from google.colab import drive
drive.mount('/content/drive')
然后复制文件,例如通过Python的os.system 。
其他云GPU选项
虽然Colab和它的专业版本,如上所述,有几个优点,但你可能想探索其他云GPU的替代品,要么提供更多的力量(A100s!),要么更便宜或更灵活的使用。这里的选择是由其他ML从业者通过Twitter贡献的,不按特定顺序列出。我这里不包括著名的GCP或AWS,尽管有人推荐了这些平台上的可抢占(又称 "现货")实例。
-
Paperspace Gradient:G1订阅费用为8美元/月,提供较小的GPU的免费实例,运行时间限制为6小时。除此之外,支付2.3美元/小时来运行一个V100实例。包括200GB存储空间,以及5个同时运行的笔记本。
-
JarvisCloud:伟大的登陆页面,加上2.4美元/小时的A100 GPU,是这里有吸引力的特点。他们还提供最新的Pytorch、FastAI、Tensorflow作为预装框架。存储量最高可达500GB,每小时最高7美分。
-
Vast.ai:是一个供人们出租其GPU的市场。你也可以在这里访问GCP、AWS和Paperspace资源。价格相差很大,但在类似的可靠性水平下,有些看起来比大公司的价格要便宜很多。
-
OracleCloud:V100的价格似乎在3美元/小时左右,这与AWS相当。A100s "即将上市"
-
OHVcloud:一个以价格不高而闻名的法国供应商。他们有一个400GB存储的V100,起价为1.7美元/小时;这一点也不坏。
有很多选项可供进一步探索。也许我们会看到在这种健康的竞争中价格会下降一些。
希望这些对你在Kaggle或其他地方的项目有用。祝你玩得开心。