谷歌于2018年首次公开发布了Colab。如果你需要一个稳定的笔记本电脑环境,并且有在笔记本、工作站和网络笔记本Chromebook之间无缝访问和共享的需求,不妨试试Colab。
不要在浏览器中使用Colab
这条不算是Colab的管理技巧,但首先你最好让Colab退出浏览器。使用Colab管理界面和一堆笔记本电脑是没法解决问题的,因此要把Colab作为独立应用程序运行。这依赖于操作系统(OS),但需要你在Chrome浏览器中安装Colab“app”,并从应用程序上下文菜单(context menu)中选择“打开为窗口”和“创建快捷方式...”,之后你需要找到快捷方式,并通过此快捷方式在自己的窗口中打开应用程序。
现在你可以在自己的窗口中打开Colab,如上图所示,先从Colab的图标开始。这条不是很切题,但仍然很有用。
1.下载文件到本地计算机
这是一个简单但值得一提的技巧。一个用例:你创建了一个Keras模型,并希望可视化。然后调用plot_model来创建PNG文件,但由于Colab虚拟机不能永久存储文件,因此你需要下载该图像。部分执行代码如下:
# plot model
plot_model(model, to_file='rnn-mnist.png', show_shapes=True)
# download model image file
from google.colab import files
files.download('rnn-mnist.png')
执行上述代码,将会弹出对话框,提示你输入下载位置。这将引导我们到内联显示图像。
是的,这是基本的。要内联显示上面的图像,请使用:
# display model image file inline
from IPython.display import Image, display
Image('rnn-mnist.png')
这是一个快速直观的修改,通过它你会如预期一样内联各种其他文件。教训:记住你在使用普通的Jupyter笔记本。
下面介绍关于Colab的相关内容。
2.访问你的Google Drive文件系统
假设你想将该模型图像文件保存到你的Google Drive中而不是保存到本地计算机。有多种方法可以将文件导入和导出Google Drive。这是获取CSV数据的最直接的方式,比如从Google Drive中导出。
# save model image file to Google Drive
from google.colab import drive
drive.mount('/content/gdrive')
单击链接并输入授权代码后,你可以按如下方式访问驱动器:
# save model image file to Google Drive
当然,它不是永久的,但并不费力,它似乎比使用任何其他方法更直接(并且是非永久的)。如果你使用像AutoKey(https://github.com/autokey/autokey)这样的桌面自动化和文本扩展工具,那么就会使常用的代码和命令变得更加容易。
回到主题。现在你可以将文件保存到(或从中获取文件)Google Drive了。放松点,只要你在终端感到舒服就好了。你可以使用数据文件所在的位置,也可以将其移动或复制到Colab VM根目录的几个目录级别中。但是,它在删除实例后就会从此处消失,因此如果只从文件系统中的CSV文件中读取数据会更有意义:
# import pandas as pd
titanic_train = pd.read_csv('/content/gdrive/My Drive/Colab Notebooks/datasets/titanic/train_clean.csv')
3.使用存储在Google Drive中的自定义库(custom libraries)和模块
那么,如果你要将自定义Python库或模块导入Colab项目,该怎么做呢?
例如,在你的Colab目录中有一个名为'my_modules'的文件夹,存储了你希望在Colab中访问的常见.py文件。你不想将它们存储在GitHub上,而且它们不是干净的文件,你不想与他人分享。假设它们是你习惯使用的简单辅助模块集合; 数据加载器功能,数据清理功能等。
像这样存储在Dropbox文件夹中的任何文件,与你在Google Drive中同步的名称都相同。这样在Colab内部和外部都可以使用该文件。你可以直接利用操作系统访问Google Drive内容 -在Chrome上,及在Ubuntu的ocamlfuse(https://github.com/astrada/google-drive-ocamlfuse)上——并且你可以利用之前提到的Google Drive文件系统访问技巧,然后开始使用它们。
这段代码很有用。假设你的my_modules目录中有一个名为naive_sharding.py的模块。由于它是一些目录级别,如果想让文件保持原样并在Colab中导入,对你来说最简单的方法如下:
import sys
sys.path.insert(0, '/content/gdrive/My Drive/Colab Notebooks/my_modules')
import naive_sharding
就是这样, naive_sharding.py模块已导入,可以使用了。
修改上面的一些代码,你可以看到,如果将权重模型放入和缩小到Colab环境中是多么容易。因此,除了上面的简短说明和创新思维之外,你可以用Google Colab完成非常多的工作。
由于没有繁琐的设置,Chromebook访问也很普通,所以Colab是一个理想的编码工具。