colab notes

colab代码

如何合理使用资源

  1. P100 usage is 4units/hr,

  2. V100 usage is 5 units/hr,

  3. A100 usage is 13.08units/hr

  4. 将训练过后的模型日志和其他重要的文件保存到谷歌云盘,而不是本地的实例空间

  5. 运行的代码必须支持“断点续传”能力,简单来说就是必须定义类似checkpoint功能的函数;假设我们一共需要训练40个epochs,在第30个epoch掉线了之后模型能够从第30个epoch开始训练而不是从头再来

  6. 仅在模型训练时开启GPU模式,在构建模型或其他非必要情况下使用None模式

  7. 在网络稳定的情况下开始训练,每隔一段时间查看一下训练的情况

  8. 注册多个免费的谷歌账号交替使用

使用key

1
2
3
4
5
from google.colab import userdata

# Defined in the secrets tab in Google Colab
HF_TOKEN = userdata.get('HF_TOKEN')
print(HF_TOKEN)

使用google drive中的文件

1
2
3
4
5
from google.colab import drive
drive.mount("/content/drive",force_remount=True)
file_names = os.listdir(path) # 获取文件夹下的所有文件名
for name in file_names:
print(name)

查看显卡驱动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 确定自己是否在GPU环境下,如果输出gpu则证明在
import tensorflow as tf
tf.test.gpu_device_name()

# 查看显卡驱动
!/opt/bin/nvidia-smi

# ----------------------------------------------------

# 输出显卡主要信息
gpu_info = !nvidia-smi
gpu_info = '\n'.join(gpu_info)
if gpu_info.find('failed') >= 0:
print('Not connected to a GPU')
else:
print(gpu_info)

加载自己的数据集

深度学习中,数据集一般由超大量的数据组成,如何在Colab上快速加载数据集?

  1. 将整个数据集从本地上传到实例空间

理论可行但实际不可取。经过作者实测,无论是上传压缩包还是文件夹,这种方法都是非常的慢,对于较大的数据集完全不具备可操作性。

  1. 将整个数据集上传到谷歌硬盘,挂载谷歌云盘的之后直接读取云盘内的数据集

理论可行但风险较大。根据谷歌的说明,Colab读取云盘的I/O次数也是有限制的,太琐碎的I/O会导致出现“配额限制”。如果数据集包含大量的子文件夹,也很容易出现挂载错误。

  1. 将数据集以压缩包形式上传到谷歌云盘,然后解压到Colab实例空间

实测可行。挂载云盘不消耗时间,解压所需的时间远远小于上传数据集的时间

此外,由于实例空间会定期释放,因此模型训练完成后的日志也应该存放在谷歌云盘上。综上所述,谷歌云盘是使用Colab必不可少的一环,由于免费的云盘只有15个G,因此个人建议至少拓展到基本版。