很多同學(xué)表示:出國(guó)沒(méi)辦法帶GPU主機(jī)or MacOS不方便安裝外接顯卡
在此演示一種基于騰訊云(阿里云/Google云相同)的GPU主機(jī)訓(xùn)練的配置指南
在本文將講解三種方法,配置難度依次升高:
1.SSH到GPU主機(jī),然后使用shell命令運(yùn)行python代碼,完成模型訓(xùn)練
2.GPU主機(jī)開(kāi)放Jupyter Web服務(wù),瀏覽器中連接主機(jī)運(yùn)行python代碼
3.Pycharm連接到遠(yuǎn)程GPU主機(jī),在Pycharm中運(yùn)行代碼
PS:本文選擇騰訊云服務(wù)器的原因單純是因?yàn)楸阋?,沒(méi)有任何可用性/并發(fā)行/穩(wěn)定性的側(cè)重。
只要是SSH,那么連接方法都是通用的。意味著如果有連接實(shí)驗(yàn)室服務(wù)器的經(jīng)驗(yàn)就會(huì)簡(jiǎn)單很多。有所不同的是實(shí)驗(yàn)室服務(wù)器訓(xùn)練時(shí)所需數(shù)據(jù)集可以在服務(wù)器磁盤上,而云服務(wù)器的訓(xùn)練數(shù)據(jù)需要額外存儲(chǔ)/本地上傳。
1.示例代碼在CPU的訓(xùn)練時(shí)間(1.8GHz i5,8G DRAM)需要62.9秒
2.騰訊云官網(wǎng)cloud.tencent.com,點(diǎn)擊購(gòu)買
3.選擇機(jī)器配置
一定要選【自定義配置】【按量計(jì)費(fèi)】【地區(qū)選跟自己近的】【GPU機(jī)型】【具體機(jī)型看實(shí)際需要-此示例選擇最便宜的P4】【鏡像市場(chǎng)-GPU服務(wù)器Ubuntu 18.04帶tensorflow】【按使用流量】
4.在鏡像市場(chǎng)中選擇鏡像
5.配置機(jī)器
【端口情況任意-本例選擇“放空全部端口”】【設(shè)置密碼】【不啟動(dòng)定時(shí)銷毀】。如果定時(shí)銷毀可能會(huì)導(dǎo)致訓(xùn)練未完成則被銷毀。最好的辦法是在訓(xùn)練的代碼最后保存模型,同時(shí)加一個(gè)云短信API,在訓(xùn)練結(jié)束時(shí)可以收到通知。
6.這步直接默認(rèn)開(kāi)通
7.開(kāi)通后可以在控制臺(tái)看到機(jī)器,記住IP地址,很重要。然后選擇登陸
本次的IP是106.52.54.61
登陸有很多種,默認(rèn)選擇云上的terminal,可以有圖形頁(yè)面
如果選擇zsh,bash登陸的話,則用命令:
ssh-q-l ubuntu-p 22 106.52.54.61
8.云上直接輸密碼登陸(或使用剛剛提到的SSH命令,兩者相同?。?/strong>
登陸后是這樣
9.驗(yàn)證GPU是否可以使用(可跳過(guò)本步)
使用三個(gè)命令來(lái)查看“PCI總線外接設(shè)備、CUDA版本、GPU使用情況”:
lspci
cat/usr/local/cuda/version.txt
nvidia-smi
10.驗(yàn)證tensorflow是否可用GPU(可跳過(guò)本步)
在shell中使用python3
使用python語(yǔ)句:
import tensorflow as tf
sess=tf.Session(config=tf.ConfigProto(log_device_placement=True))
quit()#退出python,返回shell
到此為止,全部配置就完成了??梢灾苯釉赽ash中創(chuàng)建python文件,使用python3命令運(yùn)行.py文件(tensorflow代碼)。
下面配置Jupyter Web服務(wù)
11.安裝Jupyter
按順序在bash中輸入命令:
pip3 install jupyter
echo PATH=~/.local/bin:$PATH>>.bashrc
echo export PATH>>.bashrc
source.bashrc
jupyter notebook--ip=0.0.0.0--port=8000
復(fù)制第二個(gè)紅框中的token!??!
12.遠(yuǎn)程登陸jupyter
瀏覽器輸入“IP:端口”,此例是https://106.52.54.61:8000。輸入剛才復(fù)制的token進(jìn)入jupyter。
新建python3運(yùn)行環(huán)境
13.運(yùn)行代碼
在這寫代碼運(yùn)行or把代碼粘到這運(yùn)行
運(yùn)行結(jié)果:
只要11.2秒,遠(yuǎn)小于本地CPU所用的62.9秒
Jupyter Web可以遠(yuǎn)程訪問(wèn),通過(guò)瀏覽器運(yùn)行代碼。
最后是使用Pycharm,直接用Pycharm連接遠(yuǎn)程服務(wù)器
14.Pycharm中添加服務(wù)器
在【Preferences】中選【Deployment】【+】【SFTP】
輸入【服務(wù)器地址-106.52.54.61】【用戶名-ubuntu】【密碼】,然后測(cè)試連接是否成功
連接成功
配置“本地-服務(wù)器文件映射”【mapping】【本地路徑】【云上路徑(可直接寫“/”,會(huì)自動(dòng)配置。沒(méi)特殊要求,單純運(yùn)行代碼的話,此處不重要)】
15.配置運(yùn)行環(huán)境
在【preferences】中選擇【project interpreter】【V】【show all】(不選擇本地解釋器,選擇remote解釋器)
點(diǎn)擊【+添加】
選擇【SSH interpreter】【existing server configuration】【列表中選擇剛才的服務(wù)器】【Move this server to IDE setting】
手動(dòng)寫明python3的路徑
成功后可以看到遠(yuǎn)程運(yùn)行環(huán)境中的配置,什么依賴Lib都沒(méi)有的話說(shuō)明導(dǎo)入失敗??梢钥吹絫ensorflow-GPU(還有Pytorch也在)
16.運(yùn)行
點(diǎn)擊運(yùn)行
只需要7.7秒
寫在最后。本地CPU 62.9秒,Jupyter Web 11.2秒,Pycharm連接7.7秒。
阿里云和騰訊云在登陸名上有所差別,阿里云一般直接為root。
用完記得銷毀服務(wù)器
面向初次使用者,略了很多驗(yàn)證的步驟。改進(jìn)可以寫在下面。
一些答疑:
1.為什么示例代碼中沒(méi)有指定GPU的部分?tensorflow默認(rèn)調(diào)用最優(yōu)資源,這是配置云環(huán)境文章,不是tensorflow-GPU代碼教程。
2.為什么阿里云的服務(wù)器沒(méi)有這個(gè)鏡像?阿里云有一個(gè)基于CentOS的,一樣用。服務(wù)器的用戶登錄名不同,其他無(wú)所謂。
3.如何預(yù)估我的訓(xùn)練時(shí)間?沒(méi)辦法,靠經(jīng)驗(yàn)or先跑小樣本。
4.為什么我的Pycharm中沒(méi)有這個(gè)功能?professional版本才有這個(gè)功能,社區(qū)版沒(méi)有。
5.為什么我代碼在云上無(wú)法運(yùn)行?請(qǐng)查看對(duì)應(yīng)的tensorflow版本,請(qǐng)以云上版本為準(zhǔn)。如果有import 3rd Lib依賴,請(qǐng)寫在requirement.txt中。
6.我怎么知道我的代碼能不能運(yùn)行?先買小機(jī)器,再買大機(jī)器······