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