![96ae9e0dc2ac7edc93d4a124c8bec433.png](https://i-blog.csdnimg.cn/blog_migrate/f04f99a7a3736633a485b53e07e64892.jpeg)
Colab简介
Google做过一件很酷的事情——提供免费的GPU云服务器,内置Jupyter Notebook环境,叫做"Colaboratory"。因此它是一个很好的工具,可以帮助你快速开发深度学习应用。
Colab提供GPU,并且完全免费!当然也有一些限制,例如实例单次运行时间不能超过12小时,不过这对于一些中小规模的网络已经足够了,大规模的也可以通过断电训练来分多次训练。
Colab的使用非常自由,你可以使用任何深度学习框架,例如PyTorch, Keras, TensorFlow, and OpenCV;你可以在Colab中创建notebooks、上传notebooks,并存储、分享它们;你可以挂载你的Google Drive(网盘),使用任何里面的文件;你可以上传本机的notebooks、GitHub中的notebooks、上传Kaggle文件...
参考:
- 官网:https://colab.research.google.com
- 有趣的项目:https://research.google.com/seedbank/
创建notebook
你不需要安装任何软件,只需要一个Chrome浏览器,打开Google Drive你就可以在任意目录下创建note book。当然,有个大前提: 你能够登陆得了Google,咳咳 :)
为了更好地管理代码,我们单独创建一个文件夹(虽然从技术上来说,这一步不是必须的)
![885ceb5f72c7724075763b4502304f7f.png](https://i-blog.csdnimg.cn/blog_migrate/c722849d94457c2d1eca83bd1ab0b9ea.png)
进入创建好的文件夹,你可以在任何空白区域右键鼠标,选择"Colaboratory"
![81f0ba82056b4a371379d02b5fc879af.png](https://i-blog.csdnimg.cn/blog_migrate/3f7fabcaaa49265cc2a5e94fd0c6561c.png)
基本语法
所有的用法基本与jupyter notebook一致,让我们说一些区别;因为这里没有命令行终端,你可以通过'!'符号 来执行一些Linux命令( 部分命令不加!前缀也可以直接运行)
!ls
!pip
!apt-get
GPU实例
Colab的GPU实例是免费使用的,不过单次运行时间不能超过12小时;对于一些中小规模的网络已经足够了,非常适合初学者练习GPU训练神经网络
切换GPU实例
点击上方的"代码执行程序"=>"更改运行时类型"
![f281cd99bb8aec2e069b2b157de69936.png](https://i-blog.csdnimg.cn/blog_migrate/5b6025ac97e1aad95f531dffb8bd6b67.png)
选择"硬件加速器",切换到GPU实例。保存后需要稍等片刻,系统会重新分配一个GPU虚拟机
![6c6c13f0f712a13f22b19fe3db08e592.png](https://i-blog.csdnimg.cn/blog_migrate/3dacb7af9b7228d6224a03dee2b2b24e.png)
查看GPU
!nvidia-smi # 查看GPU信息
!cat /proc/cpuinfo # 查看CPU信息
!cat /proc/meminfo # 查看内存信息
Colab最早和Kaggle一样,只提供K80的GPU;不过19年,新增了Tesla T4系列(这次谷歌真的太有诚意了...京东上查了下,这块卡要18k...)
分配的GPU可能是根据当前空闲GPU的库存决定的;我自己的使用经验,有的时候是K80,有的时候能分配到T4
![a617ef19df1b4240da35cb2eea155dd4.png](https://i-blog.csdnimg.cn/blog_migrate/2af847ef0f01000ebafa3e9235465166.png)
操作文件
由于是虚拟机环境,因此很多时候需要使用存储在别的地方的文件
Google Drive
在虚拟机中挂载云端硬盘后,你就可以把网盘当作本地的文件夹,使用里面任意文件
from google.colab import drive
drive.mount('/content/gdrive')
!ls "/content/gdrive/My Drive/"
请注意,此操作仅支持读取、写入和移动文件;要程序化地修改共享设置或其他元数据,请使用PyDrive
Tips:如果是训练神经网络,推荐把文件完全复制到虚拟机上;否则训练时,可能会每个batch都要从网盘通过网络读取,这样训练的瓶颈就变成网络IO了
下载网络资源
使用wget命令直接下载资源,例如
!wget -cq https://s3.amazonaws.com/content.udacity-data.com/courses/nd188/flower_data.zip
!unzip -qq flower_data.zip
本机上传小文件
在界面左侧也有"Upload"按钮,可以直接点击上传文件
![24684d8502c52b7db3277b477f935222.png](https://i-blog.csdnimg.cn/blog_migrate/1f7ba7a105e7fa2a74de4229ca4f9c42.png)
也可以通过执行代码后,点击"Choose Files"按钮 选择本地的文件上传
from google.colab import files
files.upload() # 会返回已上传文件的字典。 此字典的键为文件名,值为已上传的数据
补充: 将文件下载到本地文件系统
# 创建一个文件用来测试
with open('example.txt', 'w') as f:
f.write('some content')
from google.colab import files
files.download('example.txt')
从git拉取
找到感兴趣的repository直接克隆就行
!git clone <git_URL>
下载Kaggle DataSet
第一步:使用pip命令,安装kaggle库
!pip install kaggle
第二步:登陆kaggle账号,下载token文件(json格式),将token文件上传到Colab
!mkdir -p ~/.kaggle # 创建隐藏目录
!cp kaggle.json ~/.kaggle/ # 我将token文件放在了Drive里,这样每次直接拷贝到虚拟机即可
!chmod 600 ~/.kaggle/kaggle.json
第三步:找到想要导入的Kaggle Dataset,复制相应的API 在最前面增加!,然后执行
!kaggle competitions download -c severstal-steel-defect-detection -p /gdrive/'My Drive'/Kaggle/'Severstal Steel Defect Detection'/ --force
我们以Kaggle某比赛的数据集为例,虽然文件有2G多,但是虚拟机能达到150M/s的下载速度,可以说相当快了
下载完成后,解压数据:
# 命令行
!unzip *.zip
# python代码
from zipfile import ZipFile
with ZipFile("data.zip",'r') as zip:
zip.extractall(path= './{}/'.format(file_name.split('.')[0]))
print("Done")
总结
现在能薅羊毛的平台不止Colab一个,但我个人比较喜欢的就是Colab和Kaggle;因为真诚,不要问为什么,问就是"百度" :)
希望能够帮助大家入门深度学习,来加速训练大型网络的时间