Google Colab——用谷歌免费GPU跑你的深度学习代码
Google Colab简介
Google Colaboratory是谷歌开放的一款研究工具,主要用于机器学习的开发和研究。这款工具现在可以免费使用,但是不是永久免费暂时还不确定。Google Colab最大的好处是给广大的AI开发者提供了免费的GPU使用!GPU型号是Tesla K80!你可以在上面轻松地跑例如:Keras、Tensorflow、Pytorch等框架。
官方教程
新手指引:https://medium.com/deep-learning-turkey/google-colab-free-gpu-tutorial-e113627b9f5d
常见问题:https://research.google.com/colaboratory/faq.html
官方给出的新手指引当中已经给出了前期配置、常见软件和库的安装等方法。大家凭借官方教程可以基本入门Colab,但如果想更加自如地在Colab上跑通自己的代码,可能还需要更多的学习。
我写的这篇教程结合了官方给的资料和网上其他小伙伴的经验,希望对刚接触Colab的童鞋有所帮助: )(我自己使用Colab的时间其实不长,文中如果有错误的地方还望大家指正~)
基本操作
认识Google Colab
依赖平台:Google Drive
Colab需要从Google Drive(谷歌云盘)进入。为了方便整理,我先在Google Drive中创建了一个新文件夹"Colab"。

然后,我们在"Colab"文件夹中新建一个Colab项目,如图所示:

注意:首次创建Colab项目需要点击“关联更多应用”,添加“Colaboratory”应用。
创建完项目之后我们就可以进入Colab的主界面了。
现在,我们就可以在代码框中输入一些代码。这里注意,如果我们直接输入代码,系统会当作是Python代码执行。例如我们输入:
a = 1
print(a)
运行之后输出框中会打印出"1"。
而如果我想执行系统命令,需要在命令前加感叹号!。例如我们输入:
!ls
执行后输出框中会显示当前目录下的所有文件夹。是不是很像Linux下的命令行操作哈哈!
其实我们在Colab中连接的云端的那台虚拟机正是使用的Ubuntu操作系统,我们可以将自己在Colab中的一切操作看作是在用命令行控制云端的那台Ubuntu虚拟机。你可以用它来直接跑代码,也可以使用一些系统命令(我们后面要安装第三方软件都需要借助一系列的系统命令)。看到这有没有感觉自己瞬间多了一台电脑~
前期配置
1. 修改笔记本环境
我们每新建一个Colab项目,先对笔记本环境进行配置,选择是Python2还是Python3,是否使用GPU。(其中Python2是2.7版本,Python3是3.6版本)

修改完后点击保存。
2. 安装必要的包和软件
在代码段中输入以下代码:
!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}
运行代码,运行中会提示输入验证码,点击程序给出的网址进行验证即可。
3. 挂载Google Drive
其实完成前面的操作我们就可以在Colab中敲写代码或者输入一些系统命令了,但是我们现在连接的虚拟机是和Google Drive脱离的,也就是说我们跑的程序无法使用谷歌云盘里的文件,这就非常受限制了。所以我们一般需要将谷歌云盘看作是虚拟机中的一个硬盘挂载,这样我们就可以使用虚拟机轻松访问谷歌云盘。
挂载Google Drive代码:
!mkdir -p drive
!google-drive-ocamlfuse drive
挂载完后在虚拟机中会多出一个文件夹"drive",我们可以用!ls命令查看。
安装深度学习平台
在官方教程中已经有Keras、Tensorflow、Pytorch的安装方法,我平时使用Pytorch比较多,所以这里只给出Pytorch的安装代码。
!pip install http://download.pytorch.org/whl/cu80/torch-0.3.1-cp36-cp36m-linux_x86_64.whl torchvision
我这里安装的是0.3.1的版本,大家可以根据自己的需要调整版号。
安装完后输入import pytorch没有报错,基本上就是安装成功了。
到此,我们介绍完了Colab中的基本操作,我们现在可以在Colab中跑一些简单的代码了。但这显然还不够,下面我将介绍一些进阶操作以及举例说明如何在Colab中跑自己写好的.py文件。
进阶操作
更改工作目录
在Colab中cd命令是无效的,切换工作目录使用chdir函数。
import os
os.chdir("drive")
执行以上代码,当前工作目录会进入到drive文件夹下。我们再使用!ls命令会发现系统输出的是drive文件夹下的目录。
回到上级目录:os.chdir('../')
安装Java8
有的第三方Python库可能需要依赖Java或是其他软件才能运行,有了前面的介绍,我们就可以在Colab中安装Java8了,其他复杂的软件安装也可以参考Java8的安装步骤进行安装。
0. Colab前期配置(前面已经说了,这里不重复说啦)
1. 添加ppa
!add-apt-repository ppa:webupd8team/java --yes
!apt-get update
注意:--yes这个小操作很关键,如果我们不在那句代码中加入后缀--yes,系统会给出这样的信息:

程序会卡在这个地方,让你输入回车继续安装或者Ctrl-C结束安装。但是Colab中不支持用户在程序运行过程中与命令行进行交互,我们没办法将回车键输给命令行,所以需要提前在代码中就告诉系统我们在后面的选择中选'yes'。
这个小技巧在Colab中会被经常用到。
2. 安装oracle-java-installer
!echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections
!apt-get install oracle-java8-installer
和步骤一中同样的道理,第一句代码是为了提前告诉系统我们同意 oracle 的服务条款,否则安装程序会因为无法弹出协议窗口而自动停止。
到这里我们就正式地开始下载并安装Java了,Colab下载各种东西的速度都很快,不用担心网速的问题~
3. 设置系统默认jdk
!update-java-alternatives -s java-8-oracle
4. 测试Java是否安装成功
!java -version
!javac -version
系统正确输出Java版本即表示安装成功。
5. 查看Java的安装路径
Java是安装完了,但是我们有时候还需要在代码中声明Java的安装路径才能调用Java。如何找到Java的安装路径呢?大家可以参考下面这篇文章:
https://www.cnblogs.com/oxspirt/p/6294754.html
例如我查找到的安装路径是:/usr/lib/jvm/java-8-oracle/jre/bin/java
运行自己的代码
好了,各种准备工作都做好了,我们如何在Colab上直接运行自己写好的代码呢?其实很简单,就跟在自己电脑上一样,使用命令!python XXX.py就可以了!详细步骤如下:
1. 将.py文件和其它必要的文件上传到Google Drive
上传速度很快,不用担心网速问题~
2. 将工作目录切换到.py文件所在目录
import os
os.chdir('drive/Colab/Your project folder')
不放心的话切换完之后用!ls命令看一下是不是到了指定目录下。
3. 运行代码
!python XXX.py
4. 注意事项
Linux系统下文件路径使用'/'而不是'\'
如果需要记得在代码里声明第三方软件或库的路径,例如我在使用Stanford Parser工具的时候,声明模型和Java的路径:
# 添加stanford环境变量 (content是系统根目录下的一个文件夹)
os.environ['STANFORD_PARSER'] = '/content/drive/Stanford_NLP/jars/stanford-parser.jar'
os.environ['STANFORD_MODELS'] = '/content/drive/Stanford_NLP/jars/stanford-parser-3.9.1-models.jar'
# 添加Java环境变量
os.environ['JAVAHOME'] = "/usr/lib/jvm/java-8-oracle/jre/bin/java"
总结
可以把Colab看成是一台带有GPU的Ubuntu虚拟机,只不过我们只能用命令行的方式操作它。你可以选择执行系统命令,亦或是直接编写运行python代码。
挂载完Google Drive,会在虚拟机里生成一个drive文件夹,直接将Google Drive当成是一块硬盘即可。访问drive文件夹里的文件,就是在访问你的Google Drive里的文件。
Colab最多连续使用12小时,超过时间系统会强制掐断正在运行的程序并收回占用的虚拟机。(好像再次连接到虚拟机后,虚拟机是被清空的状态,需要重新配置和安装库等等)
好了,Google Colab的使用方法就先介绍到这里了,笔者也是刚接触不久,发现国内介绍Colab的博文还是少了点,所以写下了这篇教程与大家分享。文中若有问题之处,还请大家多多包涵,可以在评论区指出我的错误,互相学习: )
参考资料
官方教程
官方FAQ
https://www.cnblogs.com/smiler/p/6939913.html
https://www.cnblogs.com/oxspirt/p/6294754.html
作者:Caria_W
链接:https://www.jianshu.com/p/000d2a9d36a0
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Google Colab——用谷歌免费GPU跑你的深度学习代码的更多相关文章
- 如何免费使用GPU跑深度学习代码
从事深度学习的研究者都知道,深度学习代码需要设计海量的数据,需要很大很大很大(重要的事情说三遍)的计算量,以至于CPU算不过来,需要通过GPU帮忙,但这必不意味着CPU的性能没GPU强,CPU是那种综 ...
- supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境
开发环境介绍 在SuperVessel云上,我们为大家免费提供当前火热的caffe深度学习开发环境.SuperVessel的Caffe有如下优点: 1) 免去了繁琐的Caffe环境的安装配置,即申请即 ...
- TVM 优化 ARM GPU 上的移动深度学习
TVM 优化 ARM GPU 上的移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与桌面平台上所做的类似,在移动设备中使用 GPU 既有利于推理速度,也有利于能源 ...
- TVM在ARM GPU上优化移动深度学习
TVM在ARM GPU上优化移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与在台式机平台上所做的类似,在移动设备中使用GPU可以提高推理速度和能源效率.但是,大 ...
- win10+anaconda+cuda配置dlib,使用GPU对dlib的深度学习算法进行加速(以人脸检测为例)
在计算机视觉和机器学习方向有一个特别好用但是比较低调的库,也就是dlib,与opencv相比其包含了很多最新的算法,尤其是深度学习方面的,因此很有必要学习一下.恰好最近换了一台笔记本,内含一块GTX1 ...
- 使用colab运行深度学习gpu应用(Mask R-CNN)实践
1,目的 Google Colaboratory(https://colab.research.google.com)是谷歌开放的一款研究工具,主要用于机器学习的开发和研究.这款工具现在可以免费使用, ...
- 免费深度学习GPU,Google Yes!
深度学习越加火热,但是,很多实验室并没有配套的硬件设备,让贫穷的学生党头大 经过网上大量的搜罗,我整理了适合学生党的深度学习解决方案.利用Colab + Kaggle两大免费的GPU环境,让深度学习变 ...
- 想要学深度学习但是没有GPU?我帮你找了一些不错的平台
本文始发于个人公众号:TechFlow,原创不易,求个关注 上次给大家推荐了免费的spark集群之后,就有很多小伙伴来问我有没有好的云GPU平台推荐.我一直没给大家推荐,主要原因是我常年使用Mac,对 ...
- 如何挑选深度学习 GPU?
如何挑选深度学习 GPU? 深度学习是一个对计算有着大量需求的领域,从一定程度上来说,GPU的选择将从根本上决定深度学习的体验.因此,选择购买合适的GPU是一项非常重要的决策.那么2020年,如何选择 ...
随机推荐
- 【logo】设计书籍的logo
一个女孩发光般的看着,眼前发现的书籍 含义:这本书就是女孩想要得到的书籍 平台的宗旨:就是让学生能够得到想要的书籍 书籍来源:其他学生的书籍 目的:实现书籍回收再利用,同时让接受者低于市场价得到
- fileinput URL携带参数的问题,uploadExtraData,Bootstrap
因为无法在URL中执行其他代码,通过阅读文档可知可以由uploadExtraData参数携带数据.于是在这里携带,如果uploadExtraData 无法接收到数据,一般是格式有误, 先尝试这个简单的 ...
- Vue--过渡动画实现的三种方式
一.使用vue的transition标签结合css样式完成动画 <!DOCTYPE html> <html lang="en"> <head> ...
- NYoj 155最短路
//dij #include<stdio.h> #include<string.h> #include<queue> using namespace std; #d ...
- Ubuntu下安装go语言
参考:http://golang.org/doc/install/source 1. 下载go源代码 sudo apt-get install mercurial hg clone -u releas ...
- twisted(转)
reactor.protocol 这两个类都在 twisted.internet 命名空间中 reactor对象是Twisted编程当中的第一步,它就是一个反应器,专门负责与服务端的连接以及监听与服务 ...
- C++ 实现十大排序算法
教你手撕排序,这里有一个概念就是稳定排序.假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前, ...
- 网页性能测试之WebPageTest
想知道您的网站,性能怎么样? 很自然,首先得找一个广被认可的测试工具.我们推荐WebPageTest: WebPageTest 它是google 开源项目”make the web faster “的 ...
- 深入浅出Cocoa之消息【转】
在入门级别的ObjC 教程中,我们常对从C++或Java 或其他面向对象语言转过来的程序员说,ObjC 中的方法调用(ObjC中的术语为消息)跟其他语言中的方法调用差不多,只是形式有些不同而已. 譬如 ...
- JVM学习篇章(一)
熟悉Java开发的同学,应该都知道jvm是什么,---它就是Java虚拟机,今天我们就学习一下: 内存分配原则: 常用的监控命令