tensorflow切换到gpu_使用免费的GPU进行深度学习

96ae9e0dc2ac7edc93d4a124c8bec433.png

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

进入创建好的文件夹,你可以在任何空白区域右键鼠标,选择"Colaboratory"

81f0ba82056b4a371379d02b5fc879af.png

基本语法

所有的用法基本与jupyter notebook一致,让我们说一些区别;因为这里没有命令行终端,你可以通过'!'符号 来执行一些Linux命令( 部分命令不加!前缀也可以直接运行)

!ls
!pip 
!apt-get

GPU实例

Colab的GPU实例是免费使用的,不过单次运行时间不能超过12小时;对于一些中小规模的网络已经足够了,非常适合初学者练习GPU训练神经网络

切换GPU实例

点击上方的"代码执行程序"=>"更改运行时类型"

f281cd99bb8aec2e069b2b157de69936.png

选择"硬件加速器",切换到GPU实例。保存后需要稍等片刻,系统会重新分配一个GPU虚拟机

6c6c13f0f712a13f22b19fe3db08e592.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

操作文件

由于是虚拟机环境,因此很多时候需要使用存储在别的地方的文件

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

也可以通过执行代码后,点击"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;因为真诚,不要问为什么,问就是"百度" :)

希望能够帮助大家入门深度学习,来加速训练大型网络的时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值