學習筆記-機器學習云服務器訓練-記錄
借用實驗室老哥工作站好幾次了,不大合適,打算自己弄個云服務器,比如微軟的azure或阿里云,先去了解一下吧。
認識:
目前大致看了,發(fā)現(xiàn)服務器大體上有三大類:
國內(nèi)BAT華為的云服務,不過價格昂貴,尤其是GPU服務,或許可以看看有沒有白嫖機會。
國內(nèi)較小云服務平臺AutoDL之類,挑選起來相當簡單,直接選擇顯卡,系統(tǒng)之類即可,價格一般在1-5r/h,還可以接受。
免費的notebook,按一位老哥介紹打開即用,但只易跑小數(shù)據(jù),或許可以看看:
kaggle:https://www.kaggle.com/code
colab:https://colab.research.google.com/#scrollTo=5fCEDCU_qrC0
選擇:
發(fā)現(xiàn)較多人推薦AutoDL,看了下,感覺價格什么的都不錯,決定也試試。
注冊與租賃:
手機號注冊,前兩天sim卡壞了,等到今天才辦好。注冊之后,發(fā)現(xiàn)有學生認證,認證了,成為了煉丹會員,有九五折,還不錯的亞子。


要選擇的東西少,配置的東西少,門檻低,只需要選擇顯卡,流量/包月計費,想要的環(huán)境,然后就可以了。真的比眼花繚亂的bat省心很多很多。不過,需要注意下顯卡最高支持cuda,有的僅支持11.5。

可以選擇無卡模式開機,用來上傳項目數(shù)據(jù)或配置環(huán)境時用,1毛每小時,是真不戳啊。

這玩意還有專門開發(fā)票的功能,它可真懂啊。
文件結構:
在AutoDL上,通過實例右側(cè)“快速工具”的JupyterLab可以進行管理。進入后的文件結構如下所示:

autodl-fs:autodl自帶可以上傳數(shù)據(jù)的網(wǎng)盤,在網(wǎng)盤功能那里上傳,然后在同區(qū)域(比如內(nèi)蒙A區(qū))的服務器實例文件結構中的autodl-fs中可以查看,不過在此文件夾中讀寫很慢,所以可以復制到autodl-tmp中,然后使用。網(wǎng)盤如下所示:

autodl-tmp:讀寫速度很快,我看到別人是用來存放項目的。我也是這樣。
autodl-pub:我翻了翻,發(fā)現(xiàn)里邊是一些公共的數(shù)據(jù)集。
miniconda3:用來進行python項目環(huán)境管理和配置,我自己配的環(huán)境就在這里。通過終端運行source miniconda3/bin/activate指令,可以使用conda命令。
tf-logs:不大感興趣,淺淺地查找,沒找到,以后再說。
系統(tǒng)為ubuntu,所有的文件夾都位于/root下。
除了使用上傳到網(wǎng)盤的數(shù)據(jù),此界面上方的箭頭也可以上傳本地文件,不過兩者速度感覺都在幾百K左右,上傳稍大的文件實在是得等一會。
配置環(huán)境:
在選擇顯卡的時候說是配置好環(huán)境了,不過我不大明白在哪里。這可能和我沒學過python,不大了解conda文件結構有關系(又需要去了解下文件結構了)。所以就自己配了環(huán)境,流程和之前在自己電腦上沒區(qū)別,除了上邊提到的通過終端運行source miniconda3/bin/activate指令,當然,我覺得這是我不怎么用ubuntu的原因。出乎意料的,在AutoDL上配環(huán)境本身倒是很快,這或許是服務器上本來有包嗎?我不大清楚,不過舒服很多。配置完的環(huán)境如下:

值得一提,在配置完后,我偶然間發(fā)現(xiàn),AutoDL的pip指令默認設置為阿里云的,還是什么,忘記了。
還有,我選擇的按量計費,所以按你使用GPU模式的開啟小時數(shù)計費。當你關機后,你的GPU會被釋放,有可能被他人占用,所以我認為最好在同一區(qū)域多租幾個(關機不計費),它們之間的環(huán)境和數(shù)據(jù)可以相互遷移(我覺得可以粗糙認為是autodl-tmp和miniconda的遷移,速度比較快,尤其是前者,有百兆字節(jié)每秒),這樣,當你想訓練時,發(fā)現(xiàn)GPU被占用了,可以看看同一區(qū)域的另外幾個能不能使用,這很方便。
還有,它的可視化操作太垃圾,刪除個文件夾如果里面有東西都不行,一看就是直接調(diào)用了rm指令,不帶參數(shù)的那種。以后多用終端吧。
還有,因為上傳的時候多用壓縮文件,所以,用比較早的算法,或者怎么說呢?反正就是有些算法壓縮的文件,在這里解壓不出來,會直接跳過。如果你選擇的壓縮算法不兼容,上傳解壓,只能得到一堆空文件夾,這個得注意一下。畢竟半兆字節(jié)的網(wǎng)速上傳大文件,是個表痛苦的事,尤其是反復上傳。
開始訓練:
把需要的yolov5工程文件夾和datasets數(shù)據(jù)集文件夾(新版yolov5的文件結構)放在autodl-tmp中,把環(huán)境配置好,在配置好的language環(huán)境下運行train.py就開始訓練了。值得一提,因為yolov5使用相對路徑,所以保持整個工程:yolov5和datasets同級不變就可以在不同的電腦上運行,這很省心。

48G大顯存用起來確實很舒服,256一批不在話下。半分鐘一輪,根本之前不敢想。也由此,需要去了解下怎么調(diào)參能把顯卡性能完全調(diào)用起來了。
Pycharm遠程鏈接:
右側(cè)是服務器實例的ssh和密碼。復制ssh。

pycharm中找到解釋器的shh。

輸入ssh和密碼,鏈接到服務器實例。


選擇實例上的解釋器或環(huán)境。

選擇上傳位置。

之后會上傳項目,完成后,然后就可以在對方的服務器上訓練或運行了。
總結:
在服務器上訓練,使用云端的算力,真是給人一種新奇感,仿佛過去的人第一次在家里用上自來水,用上天然氣,用上電力。這也讓我比較直觀的意識到什么叫做“基礎設施”級別的云計算了。真是有趣,當然,主要是省錢,逼近,幾萬的卡卡,還只是用來訓練,怎么想都有些虧。