Google Colaboratory 小技巧
Tilden Ji 菜鸟Lv3

最近在用 Google Colaboratory 跑实验,开一贴用来记录、整理一些使用过程中发现的小技巧。不定期更新。

修订记录

  • 2021 年 5 月 14 日 初版目录

白嫖无限盘存储数据集

Colab 是可以挂载 Google Drive 来导入训练需要的数据集的,但 Google Drive 只有 15Gb 的免费空间,稍微多放几个数据集空间就不够用了。为了解决这个问题,你当然可以直接花钱购买存储空间,100Gb 空间的价格差不多是 2 美元一个月。但鉴于数据集也不是啥隐私数据(主要是穷),于是我就找了些免费的团队盘来存储。团队盘大概是谷歌云盘的企业方案提供的功能,企业可以建立一个独立的团队盘,无空间限制并且可以自由添加管理员或者内容管理者。团队盘和云盘用起来没啥区别,都可以挂载到 Colab 里, 但并不稳定(可能会被企业回收)且企业管理员可以看到所有团队盘的内容,所以不要在里面放任何隐私文件!

至于如何申请到免费的团队盘。在 Youtube 上搜到了一个视频教程,里面给出了一些网址如下图,只试了第一个网址就成功申请到了:

免费账户使用高内存高算力 GPU

之前在推特上刷到一个免费用户白嫖 P100 的推文,只要使用指定的 ipynb 文件就能申请到 P100。当时看到也第一时间尝试了一下,果然可以 100% 申请到 P100,而且还是高内存机器!笔记本地址:P100.ipynb

不过我最近也没有这样用过了,也不知道现在(2021 年 5 月 14 日)这个方法还能不能稳定使用 ,刚尝试了一次,申请到的是较弱的 Tesla T4。 至于为啥最近没有这样用了,因为… 我氪金上 Colab Pro 了(手动狗头)

在 Colaboratory 中运行 Shell 命令

Colab 实际上是一个在线的 Jupyter notebook,在 notebook 里,可以在命令行前加上”!”执行 Shell 命令:

1
!pip install xxx

但这样是存在缺陷的,当通过这种方式执行命令时,脚本会在一个临时的 SubShell 里执行,所以譬如运行 !cd EpicWord 的命令时是没有达到预期效果的(当然这里可以用 magic methods %cd 改变工作目录,或者直接用 automagic methods cd,后文也会提到)。一个优雅地运行 Shell 命令的方式是使用工具函数 run,该函数接受命令列表和工作路径,创建对应的 sh 脚本,自动 cd 到工作目录并按顺序执行命令:

1
2
3
4
5
6
7
8
9
"""Helper to run command formated in python."""
def run(cmds, root="/content"):
if not isinstance(cmds, list):
cmds = [cmds]
os.system(f"echo cd {root} > cmd.sh")

for cmd in cmds:
os.system(f"echo {cmd} >> cmd.sh")
!bash cmd.sh

用起来非常方便,一些例子如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看 GPU 信息
run("nvidia-smi")

# 解压准备数据集
run([
f'tar -xf {mini_imagenet_tar_dir}/train.tar -C {ds_target_dir}',
f'tar -xf {mini_imagenet_tar_dir}/test.tar -C {ds_target_dir}',
f'tar -xf {mini_imagenet_tar_dir}/val.tar -C {ds_target_dir}',
])

# 更新实验代码
run("git pull", f"/content/{repository}")

# 运行模型代码
run(
r'python train_fsl.py --save_dir /content/drive/MyDrive/savedirs --max_epoch 200 ...',
f"/content/{repository}"
)

这种方式可以满足大部分运行命令行的需求,顺带提一句,如果你想在当前笔记本的 IPython 环境里运行 Python 代码,可以这样做:

1
2
%cd EpicWork
%run main.py

使用 Github 私人仓库托管代码

使用 Tensorboard 监控实验状态

Telegram 推送训练日志

  • 本文标题:Google Colaboratory 小技巧
  • 本文作者:Tilden Ji
  • 创建时间:2021-05-14 08:22:13
  • 本文链接:https://itiandong.com/2021/colab-tips/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论