從頭開始搭建谷歌云深度學(xué)習(xí)平臺(tái)

來源:CSDN
作者:紫薇星6
時(shí)間:2020-07-30
4608
今天我就來分享一下我是如何從頭開始搭建基于谷歌云的深度學(xué)習(xí)平臺(tái)。

對(duì)于研究深度學(xué)習(xí)的朋友來說,GPU服務(wù)器是必不可少的,但是對(duì)于很多朋友來說可能沒有現(xiàn)成的昂貴GPU服務(wù)器供使用,因此利用云服務(wù)器來訓(xùn)練模型成為另一個(gè)選型。谷歌云較其他云服務(wù)器(AWS,阿里云等等)的優(yōu)勢(shì)在于新注冊(cè)賬號(hào)有$300美金的免費(fèi)使用額度,對(duì)于手頭并不寬裕的學(xué)生黨來說這可能是一個(gè)大的利好消息。今天我就來分享一下我是如何從頭開始搭建基于谷歌云的深度學(xué)習(xí)平臺(tái)。

第一步,

注冊(cè)谷歌賬號(hào),登陸谷歌云網(wǎng)站,綁定visa信用卡,領(lǐng)取$300免費(fèi)使用額度(這一步比較簡(jiǎn)單,有不清楚的地方google一下~)。PS:1.可能需要翻墻,因?yàn)槲铱梢苑瓑?,沒有試過不翻墻是否能完成這一步。2.聽說最近好像要先花費(fèi)$25才能得到免費(fèi)額度。。。

第二步,

申請(qǐng)GPU配額。谷歌服務(wù)器提供三種GPU,分別是K80,P100和V100,大家可以根據(jù)需要申請(qǐng)。初學(xué)者一般K80就夠用了。PS:申請(qǐng)?zhí)峤恢笮枰欢ǖ臅r(shí)間審核。

ia_2800000025.jpg

第三步,

進(jìn)入谷歌云控制臺(tái),選擇computer engine,打開VM(Visual Machine),點(diǎn)擊創(chuàng)建實(shí)例;

ia_2800000026.jpg

Cpu選擇4核15G內(nèi)存,GPU選擇K80

ia_2800000027.jpg

系統(tǒng)選擇Ubuntu16.04,硬盤選擇200G機(jī)械硬盤。

防火墻流量選項(xiàng)都勾選上。

ia_2800000028.jpg

完成之后點(diǎn)擊創(chuàng)建按鈕,等待幾分鐘之后,完成VM實(shí)例的創(chuàng)建。

第四步,

    安裝深度學(xué)習(xí)的軟件環(huán)境。

1.安裝anoconda

    wget https://repo.continuum.io/archive/Anaconda3-5.0.0-Linux-x86_64.sh

    bash Anaconda3-5.0.0-Linux-x86_64.sh

    PS:可以選擇下載安裝不同的anaconda版本

   為了立刻使用 Anaconda,讀取你的啟動(dòng)文件:

    source ~/.bashrc

2.安裝cuda,cudnn

    安裝CUDA運(yùn)行時(shí)環(huán)境,首先確認(rèn)一下系統(tǒng)應(yīng)該至少?zèng)]有安裝除nvidia-common之外的任何nvidia的包:

dpkg -l | grep -i nvidia

否則使用以下命令刪除多余的包及配置文件:

sudo apt-get remove --purge name_of_ package

sudo apt-get autoremove

然后我們需要下載CUDA的安裝包和cuDNN:

sudo wgethttps://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

sudo wgethttps://developer.download.nvidia.com/compute/redist/cudnn/v6.0/cudnn-8.0-linux-x64-v6.0.tgz

sudo wgethttps://developer.nvidia.com/compute/cuda/8.0/Prod2/patches/2/cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64-deb

接下來安裝驅(qū)動(dòng)和運(yùn)行時(shí):

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運(yùn)行時(shí)版本:

sudo apt-cache policy cuda

安裝CUDA8.0

sudo apt-get install cuda=8.0.61-1

添加源并更新到最新驅(qū)動(dòng):

sudo add-apt-repository ppa:graphics-drivers/ppa

這里記得需要敲回車鍵確認(rèn)添加源

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*

設(shè)置環(huán)境變量:

sudo vim ~/.bashrc

在文件最后添加下面內(nèi)容:

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確認(rèn)驅(qū)動(dòng)安裝成功。

3.安裝opencv3

  conda install -c https://conda.anaconda.org/menpo opencv3 

4.安裝GPU版TensorFlow,keras,因?yàn)槲野惭b的而是cuda8.0,因此需要安裝對(duì)應(yīng)的tensorflow和keras版本,大家可以根據(jù)自己的需求,更換不同的版本。

    pip install tensorflow-gpu==1.4

    pip install keras==2.1

5.安裝unzip

    sudo apt-get install unzip

6.pip install imutils

7,查看已經(jīng)安裝的軟件包

 Conda list

第五步,

    上傳代碼,下載數(shù)據(jù)集,開始模型訓(xùn)練。這一步,我向大家演示一遍利用我們搭建的谷歌云平臺(tái)訓(xùn)練kaggle貓狗圖像分類模型。

1.我們不需要把數(shù)據(jù)集下載到本地再重新上傳到谷歌云,直接利用下列指令完成數(shù)據(jù)集直接下載到服務(wù)器,簡(jiǎn)單快捷。

    pip install kaggle-cli

    kg download -u kaggle賬戶 -p 密碼 -c dogs-vs-cats -f train.zip

通過上面兩個(gè)指令,數(shù)據(jù)集就已經(jīng)下載到服務(wù)器當(dāng)前目錄下了,ls查看一下吧~PS:下載數(shù)據(jù)集之前可能需要我們先登錄kaggle,進(jìn)入dogs-vs-cats競(jìng)賽,在Rules一欄中點(diǎn)擊接受相關(guān)規(guī)則。 

ia_2800000029.jpg

2.因?yàn)槲沂峭ㄟ^瀏覽器直接ssh到服務(wù)器的,因此在右上角就已經(jīng)提供了上傳和下載的功能,利用上傳文件功能,將我們的代碼上傳到服務(wù)器吧。PS:大家也可以選擇其他的方式上傳代碼,不會(huì)就google一下吧~

ia_2800000030.jpg

3.開始訓(xùn)練,保存模型和結(jié)果。我利用了Alexnet跑了一遍,這里我向大家展示一下我的訓(xùn)練結(jié)果,Epoch24能達(dá)到驗(yàn)證集89%的準(zhǔn)確率,訓(xùn)練更多的Epochs還能提高1%-4%左右的準(zhǔn)確率。

ia_2800000031.jpg

4.因?yàn)槟P陀?xùn)練時(shí)間較長(zhǎng),ssh連接服務(wù)器的時(shí)候會(huì)因?yàn)殚L(zhǎng)時(shí)間沒有操作而斷開,一旦連接斷開,運(yùn)行的訓(xùn)練程序也將被終止。。。

解決此問題有兩種方法。

方案一:在客戶端設(shè)置

方法很簡(jiǎn)單,只需在客戶端電腦上編輯(需要root權(quán)限)/etc/ssh/ssh_config,并添加如下一行:

ServerAliveInterval 60

此后該系統(tǒng)里的用戶連接SSH時(shí),每60秒會(huì)發(fā)一個(gè)KeepAlive請(qǐng)求,避免被踢。

方案二:在服務(wù)器端設(shè)置

如果有相應(yīng)的權(quán)限,也可以在服務(wù)器端設(shè)置,即編輯/etc/ssh/sshd_config,并添加:

ClientAliveInterval 60

需要注意的是在服務(wù)器端設(shè)置后需要重啟該服務(wù)器以使連接生效:sudo reboot

重啟后每一個(gè)連接到此服務(wù)器上的客戶端都會(huì)受其影響。另外應(yīng)注意啟用該功能后,安全性會(huì)有一定下降(比如忘記登出時(shí)……)

第六步,

最后我們需要做的就是在訓(xùn)練完成之后,保存我們搭建深度學(xué)習(xí)的平臺(tái),下次需要直接就可以啟用而不用再重新配置一遍。

進(jìn)入GCP的磁盤一欄中,將之前創(chuàng)建的服務(wù)器磁盤(保存著我們的數(shù)據(jù)和代碼)創(chuàng)建快照,完成之后,在快照一欄中查看是否已經(jīng)生成快照。

ia_2800000032.jpg

在下次需要訓(xùn)練的時(shí)候,重新創(chuàng)建實(shí)例,并在啟動(dòng)磁盤中選擇之前保存的快照,完成創(chuàng)建。進(jìn)入服務(wù)器之后,你會(huì)發(fā)現(xiàn)之前所有的數(shù)據(jù)都還保存著,然后開始你的下一次訓(xùn)練吧

ia_2800000033.jpg

原文鏈接:點(diǎn)擊前往 >
版權(quán)說明:本文內(nèi)容來自于CSDN,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家