从头开始搭建谷歌云深度学习平台
对于研究深度学习的朋友来说,GPU服务器是必不可少的,但是对于很多朋友来说可能没有现成的昂贵GPU服务器供使用,因此利用云服务器来训练模型成为另一个选型。谷歌云较其他云服务器(AWS,阿里云等等)的优势在于新注册账号有$300美金的免费使用额度,对于手头并不宽裕的学生党来说这可能是一个大的利好消息。今天我就来分享一下我是如何从头开始搭建基于谷歌云的深度学习平台。
第一步,
注册谷歌账号,登陆谷歌云网站,绑定visa信用卡,领取$300免费使用额度(这一步比较简单,有不清楚的地方google一下~)。PS:1.可能需要*,因为我可以*,没有试过不*是否能完成这一步。2.听说最近好像要先花费$25才能得到免费额度。。。
第二步,
申请GPU配额。谷歌服务器提供三种GPU,分别是K80,P100和V100,大家可以根据需要申请。初学者一般K80就够用了。PS:申请提交之后需要一定的时间审核 。
第三步,
进入谷歌云控制台,选择computer engine,打开VM(Visual Machine),点击创建实例;
Cpu选择4核15G内存,GPU选择K80
系统选择Ubuntu16.04,硬盘选择200G机械硬盘。
防火墙流量选项都勾选上。
完成之后点击创建按钮,等待几分钟之后,完成VM实例的创建。
第四步,
安装深度学习的软件环境。
1.安装anoconda
PS:可以选择下载安装不同的anaconda版本
为了立刻使用 Anaconda,读取你的启动文件:
source ~/.bashrc
2.安装cuda,cudnn
安装CUDA运行时环境,首先确认一下系统应该至少没有安装除nvidia-common之外的任何nvidia的包:
dpkg -l | grep -i nvidia
否则使用以下命令删除多余的包及配置文件:
sudo apt-get remove --purge name_of_ package
sudo apt-get autoremove
然后我们需要下载CUDA的安装包和cuDNN:
接下来安装驱动和运行时:
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64.deb
sudo apt-get update
查看可用的CUDA运行时版本:
sudo apt-cache policy cuda
安装CUDA8.0
sudo apt-get install cuda=8.0.61-1
添加源并更新到最新驱动:
sudo add-apt-repository ppa:graphics-drivers/ppa
这里记得需要敲回车键确认添加源
sudo apt-get update
sudo apt-get upgrade
sudo reboot
安装cuDNN
tar -xvf cudnn-8.0-linux-x64-v6.0.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
设置环境变量:
sudo vim ~/.bashrc
在文件最后添加下面内容:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
export PATH="$CUDA_HOME/bin:$PATH"
生效更改
source ~/.bashrc
最后敲nvidia-smi确认驱动安装成功。
3.安装opencv3
conda install -c https://conda.anaconda.org/menpo opencv3
4.安装GPU版TensorFlow,keras,因为我安装的而是cuda8.0,因此需要安装对应的tensorflow和keras版本,大家可以根据自己的需求,更换不同的版本。
pip install tensorflow-gpu==1.4
pip install keras==2.1
5.安装unzip
sudo apt-get install unzip
6.pip install imutils
7,查看已经安装的软件包
Conda list
第五步,
上传代码,下载数据集,开始模型训练。这一步,我向大家演示一遍利用我们搭建的谷歌云平台训练kaggle猫狗图像分类模型。
1.我们不需要把数据集下载到本地再重新上传到谷歌云,直接利用下列指令完成数据集直接下载到服务器,简单快捷。
pip install kaggle-cli
kg download -u kaggle账户 -p 密码 -c dogs-vs-cats -f train.zip
通过上面两个指令,数据集就已经下载到服务器当前目录下了,ls查看一下吧~PS:下载数据集之前可能需要我们先登录kaggle,进入dogs-vs-cats竞赛,在Rules一栏中点击接受相关规则。
2.因为我是通过浏览器直接ssh到服务器的,因此在右上角就已经提供了上传和下载的功能,利用上传文件功能,将我们的代码上传到服务器吧。PS:大家也可以选择其他的方式上传代码,不会就google一下吧~
3.开始训练,保存模型和结果。我利用了Alexnet跑了一遍,这里我向大家展示一下我的训练结果,Epoch24能达到验证集89%的准确率,训练更多的Epochs还能提高1%-4%左右的准确率。
4.因为模型训练时间较长,ssh连接服务器的时候会因为长时间没有操作而断开,一旦连接断开,运行的训练程序也将被终止。。。
解决此问题有两种方法。
方案一:在客户端设置
方法很简单,只需在客户端电脑上编辑(需要root权限)/etc/ssh/ssh_config,并添加如下一行:
ServerAliveInterval 60
此后该系统里的用户连接SSH时,每60秒会发一个KeepAlive请求,避免被踢。
方案二:在服务器端设置
如果有相应的权限,也可以在服务器端设置,即编辑/etc/ssh/sshd_config,并添加:
ClientAliveInterval 60
需要注意的是在服务器端设置后需要重启该服务器以使连接生效:sudo reboot
重启后每一个连接到此服务器上的客户端都会受其影响。另外应注意启用该功能后,安全性会有一定下降(比如忘记登出时……)
第六步,
最后我们需要做的就是在训练完成之后,保存我们搭建深度学习的平台,下次需要直接就可以启用而不用再重新配置一遍。
进入GCP的磁盘一栏中,将之前创建的服务器磁盘(保存着我们的数据和代码)创建快照,完成之后,在快照一栏中查看是否已经生成快照。
在下次需要训练的时候,重新创建实例,并在启动磁盘中选择之前保存的快照,完成创建。进入服务器之后,你会发现之前所有的数据都还保存着,然后开始你的下一次训练吧~~
结语:以上就是我跟大家分享的“从头开始搭建谷歌云深度学习平台”的所有工作啦,如果大家觉得有帮助的话,可以扫一扫下面的二维码,酌情打赏,请我喝杯☕️~~