点击进入云端硬盘
或者 + 打开新的标签页,右上角
进入谷歌硬盘之后右键 => 更多
第一次需要关联colab,更多 => 关联更多应用
关联应用之后 => Google Colaboratory
关联Colaboratory
如果已经创建过文件
打开:右键 => 打开方式 => Google Colaboratory
在Linux下,mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录上。访问这个目录就是访问该存储设备。
下面的代码调用colab封装好的命令google.colab.drive.mount
,将Google Drive挂载到colab的/gdrive
,这样就可以在colab上通过访问/gdrive
来访问谷歌硬盘。如果想把文件永久保存,就需要使用这个来挂载,然后将文件保存到谷歌硬盘对应的位置,你也可以上传文件到谷歌硬盘,然后通过colab去读取这些文件。有些人说谷歌colab虽然免费,但是也挺坑人的,每次上传半天的文件,下次打开就没了,又要上传一次。其实就是少了这一步而已,自己没把文件保存起来。
from google.colab import drive
drive.mount("/gdrive")
colab就是一个随机分配的虚拟环境,挂载硬盘之后,其实挺方便的。Google colaboratory文件是一个ipython notebook,文件结尾是.ipynb,跟你本地电脑中的jupyter notebook是一样的,只是Google colaboratory做了更多的扩展,对jupyter notebook是兼容的。我使用的思想就是把Google colaboratory文件当做一个终端,就想在Linux中一样,通过命令行的形式去访问硬盘中的文件。使用命令行可以按照如下方式。
# 单行命令
# 一般的命令都可以在其前面添加!使用,加!是为了区分命令和python代码。
!ls ...
!pwd ...
!wget ...
!curl ...
...
# 特别的是change directory,即cd命令,需要在前面添加%
%cd ...
# 多行命令
%%bash
ls ...
pwd ...
已经介绍完如何在colab使用命令行,那么要如何使用Google Drive呢?
%cd "/gdrive/My Drive/"
这样就切换路径到你的谷歌硬盘了,注意这里需要使用引号将路径引起来,应为路径中My Drive中间带有空格,这个名字不是你起的,是谷歌自己起的,不明白谷歌为什么要埋下这个坑。
此时,你可以在当前路径下读取你保存在谷歌硬盘的文件,或者在当前路径保存文件到谷歌硬盘。
谷歌colab的免费GPU每天最多有12小时的使用时间,而且中途会不定时断开连接。
官方文档建议,在谷歌colab上不要随意的改变其环境,上面有自带的TensorFlow 1和TensorFlow 2。默认的TF版本是TF2,如果你需要使用TF1,可以使用以下魔术命令来切换TF的版本。
%tensorflow_version 1.x
很多时候会使用到开源的代码库,可以使用下面的命令:
!git clone https://github.com/github/covid19-dashboard.git
设置GPU:代码执行程序 -> 更改运行时类型 -> 硬件加速器 -> GPU -> 保存
如果你已经切换了运行时为GPU,那么可以使用以下命令来查看GPU类型和显存:
!/opt/bin/nvidia-smi
TensorFlow
import tensorflow as tf
tf.test.is_gpu_available
Pytorch
import torch
torch.cuda.is_available()
! nvcc --version
!pip install torch
%matplotlib inline
找到对应的文件链接,不需要下载到本地再去上传,只需要直接下载,文件基本秒下:
!wget http://download.tensorflow.org/models/object_detection/mask_rcnn_inception_v2_coco_2018_01_28.tar.gz
解压.tar文件到当前路径
如果是.tar.gz结尾就用-xzvf,如果是.tar结尾就用-xvf
!tar -xzvf ../mask_rcnn_inception_v2_coco_2018_01_28.tar.gz
解压zip包
!unzip datasets.zip
当你上传文件或者克隆的文件需要修改某些参数时,colab上可以添加插件来编辑py文件或者txt等文件,但是目前的插件基本不太友好,广告多,界面小,保存有延时,所以介绍一种个人比较常用的方式。
假设已有文件test.py
!cat test.py
然后复制输出
%%writefile test.py
将文件内容输出粘贴到此处
!python test.py
使用cv2_imshow()代替cv2.imshow()
from google.colab.patches import cv2_imshow
!curl -o logo.png https://colab.research.google.com/img/colab_favicon_256px.png
import cv2
img = cv2.imread('logo.png', cv2.IMREAD_UNCHANGED)
cv2_imshow(img)
colab上使用时间过长,则会断开连接,需要及时重连,有时候训练模型,需要几个小时,不可能一直盯着,那么可以在训练之前,运行以下代码,模拟每隔一个小时点击以下右上角的重连,参考:
# 经过测试,这种方式会一直在console报错,而且文档重新加载时依旧会运行,即使使用IPython.clear_output()也无法清除,还是不建议使用
# 报错:Uncaught TypeError: Cannot read property 'shadowRoot' of null
"""
import IPython
js_code = '''
function ConnectButton(){
console.log("Connect pushed");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click()
}
setInterval(ConnectButton,60000);
'''
display(IPython.display.Javascript(js_code))
"""
按F12打开开发者工具,然后将下面代码复制到console:
var hour = 10;
var count = 0;
function ConnectButton(){
count++;
if ((count)%(6*60*hour)==0){
console.log("time out!");
clearInterval(stop)}
if (document.querySelector("paper-button#ok")){ document.querySelector("paper-button#ok").click(); console.log("click OK button!"); }
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect-icon").click()
console.log("click Connect button!"); }
var stop = setInterval(ConnectButton,10000);
后续继续补充
Tensorflow with GPU:Colab GPU大概是CPU的35倍。