Google Colab介绍
依据官方介绍,Google Colaboratory项目(简称Google Colab)旨在提供一个提供一个基于Jupyter的云端在线工具,帮助实现Machine Learning的教育和研究。而对于AI的研发人员来说,Google Colaboratory有以下几个非常有诱惑力的地方:
- 提供免费的GPU资源:一直以来,算力的限制使得咱们普通老百姓对大型的AI算法望而却步,虽然像AWS等云服务提供商在他们的商品列表中提供有GPU配置的云服务器,但是仍然需要花费一定的费用。而Google Colab自其推出以来,GPU的使用一直是免费的!长久看Google Colab应该不会一直免费下去,所以各位且行且珍惜。除了提供免费的GPU资源,Google还在大力推广自家的TPU,详细信息可以参看:Google Cloud TPU Tutorial。
- 即开即用:打开一个Google Colab Notebook就像打开一个Jupyter Notebook一样,不需要太多额外的配置和操作。当然由于工作环境是在云端,自然免不了与本地资源的一些互动,如文件上传下载等等。
Google Colab的使用
对于习惯使用Jupyter Notebook的Python码农来说,上手使用Google Colab几乎不存在任何门槛。Python工具包的安装,导入等几乎与Jupyter Notebook的操作一模一样。
唯一需要额外关注的是文件的管理。用户在打开一个Google Colab的时候,会被分配一台Linux虚拟机,我们需要在此Linux虚拟机上构建程序运行所需以来的文件系统。注意Linux虚拟机上本地文件是不会持久化的,为了更好的管理文件,最好的方式是挂载Google Drive,这样与运行程序相关的文件的上传,下载,输出文件的持久化保存等都可以由Google Drive来管理了。后面会具体介绍挂载Google Drive的方法。
在Google Colab上执行AI算法的总体流程
基于上面对Google Colab的一个大体的介绍,我们可以将在Google Colab上执行AI算法的总体流程总结未如下步骤:
- 离线开发和测试模型:针对一个深度学习或机器学习的项目,我们首先可以在本地(最好是有GPU的主机或服务器)进行一些最基本的调试,例如针对深度学习使用一些较为简单的神经网络架构,使用数据量级比较有限的数据集先验证整个算法流程。
- 上传相关文件到Google Drive:AI算法一般来说需要包括AI算法代码,相关数据等,这些都可以上传到Google Drive的特定位置。
- 新建一个Google Colab Notebook并进行相关的配置:为AI算法新建一个Google Colab Notebook,并进行如下配置:
- 配置GPU资源:使用Google Colab的主要原因也是希望利用云端免费的GPU资源,所以在运行程序之前一定要为当前notebook配置相应的GPU资源。
- 挂载Google Drive硬盘:在Google Colab Notebook的Code Line中输入并运行:
from google.colab import drive drive.mount('/content/drive')
- 设定工作目录:在所挂载的Google Drive目录中找到相应的工作目录(即存放了算法代码文件及数据文件的目录)。
import os path = "/content/drive/My Drive/[YOUR_WORKSPACE_PATH]" os.chdir(path)
- 检查和安装算法运行依赖的Python工具包:如,算法需依赖tensor2tensor工具包,则在Google Colab Notebook的Code Line中输入:
!pip install tensor2tensor
- 配置GPU资源:使用Google Colab的主要原因也是希望利用云端免费的GPU资源,所以在运行程序之前一定要为当前notebook配置相应的GPU资源。
- 运行AI算法: 运行算法的方式有两种,取决于原始的AI算法的设计。
- 一种方式是直接以Python命令行的方式运行,这种情况下直接在Google Colab Notebook的Code Line中输入相关Python命令即可,例如:
model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(512, activation=tf.nn.relu), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=5) model.evaluate(x_test, y_test)
- 另外一种方式是以Linux命令的方式运行,这种情况下需要在Google Colab Notebook的Code Line中输入相关命令并在命令前面加上“!”(实际上这点也继承了Jupyter Notebook的使用方法),例如:
!python run_classifier.py \ --task_name=MRPC \ --do_train=true \ --do_eval=true \ --data_dir=$GLUE_DIR/MRPC \ --vocab_file=$BERT_BASE_DIR/vocab.txt \ --bert_config_file=$BERT_BASE_DIR/bert_config.json \ --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \ --max_seq_length=128 \ --train_batch_size=32 \ --learning_rate=2e-5 \ --num_train_epochs=3.0 \ --output_dir=/tmp/mrpc_output/
- 一种方式是直接以Python命令行的方式运行,这种情况下直接在Google Colab Notebook的Code Line中输入相关Python命令即可,例如:
- 收集结果:根据算法的设定,算法相关的输出,如模型,如评估结果应该会存入制定的文件目录,由于挂载了Google Drive,相关结果可以在Google Drive中找到。
附A:挂载Google Drive硬盘的其他方法
参考了Google Colab挂载Google Drive并运行程序这篇博客中的介绍,总结如下:
第一步:安装配置google-drive-ocamlfuse工具。
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
第二步:使用google-drive-ocamlfuse挂载Google Drive至工作空间所在的虚拟服务器。
!mkdir -p drive
!google-drive-ocamlfuse -o nonempty drive