Google colab免费GPU使用教程

Google colab免费GPU使用教程

  • 创建并进入colab
  • 打开一个ipynb文件
  • 挂载Google Drive
  • 使用命令行
  • 其他常用命令
    • 切换TF
    • 克隆代码
    • 查看GPU
    • 查看cuda版本
    • 安装依赖包
    • 内嵌画图
    • 下载文件
    • 解压文件
    • 编辑文件
    • 运行文件
    • opencv cv2.imshow
    • 重新连接

创建并进入colab

点击进入云端硬盘
或者 + 打开新的标签页,右上角
Google colab免费GPU使用教程_第1张图片
进入谷歌硬盘之后右键 => 更多
第一次需要关联colab,更多 => 关联更多应用
关联应用之后 => Google Colaboratory
Google colab免费GPU使用教程_第2张图片
关联Colaboratory
Google colab免费GPU使用教程_第3张图片

打开一个ipynb文件

如果已经创建过文件
在这里插入图片描述
打开:右键 => 打开方式 => Google Colaboratory
Google colab免费GPU使用教程_第4张图片

挂载Google Drive

在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小时的使用时间,而且中途会不定时断开连接。

其他常用命令

切换TF

官方文档建议,在谷歌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,那么可以使用以下命令来查看GPU类型和显存:

!/opt/bin/nvidia-smi

TensorFlow

import tensorflow as tf
tf.test.is_gpu_available

Pytorch

import torch
torch.cuda.is_available()

查看cuda版本

! 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

opencv cv2.imshow

使用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);

后续继续补充


其实旷世的MegStudio也是类似的,甚至我觉得界面还更加人性化,因为我们的浏览器一般都是横向长,纵向短,如果把很多界面设置都安排在垂直方向,那能代码区域就显得矮肥,代码又看不了几行,而右边一般都是空置着的。而MegStudio就很好利用了横向的空间。估计是其开发人员也深知这个痛点吧。

Tensorflow with GPU:Colab GPU大概是CPU的35倍。

你可能感兴趣的:(Deep,Learning,tensorflow,linux,深度学习,pytorch)