1. 文章主要內(nèi)容
? ? ? ?本篇博客主要涉及兩個主體內(nèi)容。第一個:從AutoDL網(wǎng)站中租用GPU服務(wù)器。第二個:用Pycharm軟件遠程連接租來的線上服務(wù)器,并以Yolov5項目為例,線上訓(xùn)練模型。此過程中會記錄重要的地方,以及本人踩坑之后,如何解決問題的所思所想(通讀本篇博客大概需要15分鐘左右的時間)。
? ? ? ?本篇博客參考的主要內(nèi)容來源于:
? ? ? ?孟孟單單-AutoDL使用教程
? ? ? ?嗜睡的篠龍-Pycharm連接遠程服務(wù)器(AutoDL)訓(xùn)練YOLOv5
2. 租用AutoDL服務(wù)器詳細教程
2.1 注冊AutoDL賬號,并申請學(xué)生認證(學(xué)生認證有優(yōu)惠,如果不是學(xué)生可以忽略此點)
? ? ? ?首先,我們打開AutoDL的官網(wǎng)(AutoDL官網(wǎng)),選擇右上角注冊按鈕,新用戶官網(wǎng)是送了10元的代金卷,可以用來租用服務(wù)器。注冊流程是比較簡單的,這里不詳細做過多的解釋。
? ? ? ?學(xué)生認證:注冊并登錄成功后,點擊鏈接學(xué)生認證手冊,根據(jù)教程操作即可,需要注意到的是,如果沒有教育郵箱,添加認證頁面下方的客服微信進行溝通,提供學(xué)生證相關(guān)信息、注冊賬號信息就可以通過學(xué)生認證。(給客服發(fā)送的學(xué)生證記得隱藏關(guān)鍵的信息,客服只需要一個學(xué)生證兜底就行)。
? ? ? ?學(xué)生認證通過后,我們就會變成煉丹會員,這樣我們租用GPU服務(wù)器就會較普通用戶更加的便宜,時間用的越久,越劃算。如下圖所示,學(xué)生認證成功變成煉丹會員:
2.2 算力市場選擇GPU,并選擇初始化配置環(huán)境
? ? ? ?認證通過以后,點擊主頁導(dǎo)航欄上面的算力市場,來到選擇租賃GPU的算力市場,這里詳細內(nèi)容還請參考孟孟單單-AutoDL使用教程對每個類別的詳細解釋。博主在這里選擇的是按量計費(類似于網(wǎng)吧上網(wǎng),多少錢一個小時)。GPU我選擇的是RTX 3060、顯存12GB,點擊下圖紅色箭頭按鈕即可跳轉(zhuǎn)到租賃界面:
? ? ? ?之后,選擇服務(wù)器的鏡像,說白了就是給服務(wù)器配置一些環(huán)境,這里我選擇基礎(chǔ)鏡像,后續(xù)鏡像中需要什么就自己配置即可(授人以魚不如授人以漁)。選擇的基礎(chǔ)鏡像如下圖所示:
? ? ? ?基礎(chǔ)鏡像是安裝在conda的base環(huán)境當(dāng)中,如果有小伙伴熟悉Anaconda的話,應(yīng)該能夠理解這段話的意思,后續(xù)我們會在conda中新建一個環(huán)境來訓(xùn)練項目,不要什么都往base里面放,東西多了容易起沖突和混亂。
2.3 控制臺參數(shù)解析,并使用相關(guān)參數(shù)登錄Xftp(Windows與Linux跨平臺傳輸軟件,很關(guān)鍵)
2.3.1 控制臺參數(shù)解析
? ? ? ?租賃GPU服務(wù)器之后,我們點擊網(wǎng)頁右上角的控制臺,就可以看到自己租用服務(wù)器的實例,如下圖所示:
? ? ? ?首先博主得說明一點,如上圖所示我們租用的084機器,里面的GPU顯卡是共享用的,假如這臺機器有8塊GPU,如果租賃的是單GPU,那么當(dāng)你選擇開機之后就會占用一塊GPU。所以當(dāng)我們看到上圖狀態(tài)一欄下方的綠色字體GPU充足的時候,證明084這臺機器中GPU至少有一塊是充足的。但當(dāng)084機器GPU都被占用的時候,就無法正常開機(但是可以無卡模式開機),一般的方式就是等待別人先用完再說。
? ? ? ?假如此時的GPU充足,如上圖所示,我們在操作一欄有兩個按鈕,一個是開機,一個是更多。鼠標(biāo)移到更多的按鈕上,會顯示出欄目,如下圖所示:
? ? ? ?實例開機占用GPU分為兩種,一種是無卡模式開機,一種是正常開機。無卡模式開機,意思是不占用GPU(一般GPU被別人占滿的時候,無卡模式還是依然能開機的),有CPU,費用是0.1元/時,如下圖所示:
? ? ? ?正常開機就是按操作一欄的開機按鈕,在算力市場中有明碼標(biāo)價說是多少錢一個小時,這種開機是占用GPU資源的,博主這里租用的RTX 3060卡的費用是0.6/時,如下圖所示:
? ? ? ?重要內(nèi)容:無卡模式和有卡模式有什么區(qū)別?它們分別用于什么場景呢?
? ? ? ?無卡模式和有卡模式從字面意思就知道是有無GPU卡的區(qū)別。無卡模式收費較有卡模式少很多,一般用于Windows與服務(wù)器Linux之間傳輸文件,而有卡模式收費較無卡模式收費比較多,一般用于訓(xùn)練模型(因為要用到GPU)。
? ? ? ?無論是無卡模式還是有卡模式開機,之后控制臺在SSH登錄一欄出現(xiàn)登錄指令和密碼,這里的登錄指令和密碼非常重要,將會在Xftp部分和Pycharm遠程連接部分詳細說明,現(xiàn)在知道有這么回事即可,如下圖所示:
2.3.2 Xftp下載以及配置
? ? ? ?首先我們介紹Xftp跨平臺傳輸軟件,這是為了能夠在windows和Linux之間可以輕松、簡單的傳輸文件,比如在服務(wù)器上訓(xùn)練好的模型想要下載到windows平臺,只要通過Xftp界面輕松移動即可。
? ? ? ?進入到Xftp官網(wǎng)Xftp官網(wǎng),點擊download下載,然后找到免費授權(quán)頁面,填寫相關(guān)信息,收到郵箱信息之后,打開郵箱中的免費下載鏈接即可下載免費版的Xftp,如下圖所示:
? ? ? ?安裝完之后,我們打開Xftp軟件,點擊左上角新建按鈕,之后會彈出一個新建鏈接配置信息的對話框,如下圖所示:
? ? ? ?回到博客的上一部分,有簡單說明SSH登錄賬號和密碼相關(guān)信息,這里我們和Xftp聯(lián)系起來做一個參數(shù)詳解,首先我們在AutoDL控制臺部分復(fù)制自己的賬號和密碼(這里做一個演示,賬號密碼為虛構(gòu),但格式都是一樣,博友們按照自己的賬號、密碼來就行)。格式如下:
? ? ? ? 登錄指令:ssh -p 66666 root@region-8.seetacloud.com
? ? ? ? 登錄密碼:123456
? ? ? ? 參數(shù)解析:66666代表的是端口號、root代表的用戶名(一般都是一樣的)、region-8.seetacloud.com代表的是主機域名,是什么就是什么、123456即為登錄的密碼。
? ? ? ? OK,我們介紹完參數(shù)解析,這時候?qū)?shù)對應(yīng)于上面的Xftp參數(shù)框,名稱是可以隨便取的、主機對應(yīng)于參數(shù)解析的主機域名、端口號對應(yīng)于參數(shù)解析的端口號、用戶名對應(yīng)于參數(shù)解析的用戶名,一般為root、密碼對應(yīng)于參數(shù)解析的登錄密碼,按照上面的例子,填寫完的樣例如下圖所示:
? ? ? ?到這里然后點擊連接按鈕,即可進行連接,連接成功后跳轉(zhuǎn)到如下頁面,要是想要傳輸文件,只需要挪動文件到另外一邊即可,如下圖所示:
3. 使用Pycharm軟件遠程連接服務(wù)器,并訓(xùn)練模型(以Yolov5項目為例)
3.1 Pycharm配置服務(wù)器參數(shù),遠程連接服務(wù)器
? ? ? ?首先我們需要下載Pycharm軟件,百度搜索進去官網(wǎng)下載。注意:Pycharm需要下載專業(yè)開發(fā)版本,不能下載社區(qū)版本,因為遠程連接服務(wù)器的相關(guān)功能社區(qū)版本不具有(另外:Pycharm專業(yè)版本如何破解,自行搜索)。由于安裝Pycharm網(wǎng)上有很多詳細教程,并比較簡單,這里不做過多解釋。
? ? ? ?下載安裝完成之后,打開Pycharm軟件,選擇左上角File ->Settings->Python Interpreter,如下圖所示:
? ? ? ?接著點擊右上角的小齒輪按鈕->add->SSH Interperter,具體操作如下圖所示:
? ? ? ?來到SSH Interpreter界面,熟悉的服務(wù)器參數(shù)界面,和Xftp服務(wù)器參數(shù)配置頁面很相似,這里做簡單的解釋:region-8.seetacloud.com代表的是Host,root代表的Username(一般都是一樣的),port代表的是端口號。點擊下方的Next按鈕(記住這里連接服務(wù)器操作的前提是AutoDL控制臺服務(wù)器已開機,不然是連接不上的!)
? ? ? ?跳轉(zhuǎn)到輸入密碼的頁面,輸入服務(wù)器對應(yīng)的密碼即可,如下圖所示:
? ? ? ?點擊下方的Next按鈕,跳轉(zhuǎn)到服務(wù)器與本地項目連接的配置頁面,這里需要關(guān)注的是三個點。第一點是Interpreter,這是解釋器,也是項目配置所需的環(huán)境,還記得我們租用服務(wù)器時,選擇的初始化miniconda3的環(huán)境們,它的存放路徑是在**/root/miniconda3/bin/python**,我們按下圖進行選擇配置:
? ? ? ?第二點非常重要是Sync folders同步文件夾操作,選擇windows項目文件的根目錄->服務(wù)器對應(yīng)的項目根目錄。我們點擊選擇文件路徑按鈕,可以自定義修改windows和服務(wù)器對應(yīng)根目錄的路徑,如下圖所示:
? ? ? ?踩坑點:服務(wù)器直接選擇默認路徑,項目文件就會存儲在系統(tǒng)盤中,一般來說系統(tǒng)盤比較小,一般盡量少放東西,不然等到系統(tǒng)盤滿的時候會下載、安裝不了很多東西,本人親自經(jīng)歷過這樣的問題。
? ? ? ?解決辦法:一般項目文件以及對應(yīng)的數(shù)據(jù)集存放于數(shù)據(jù)盤中,在AutoDL中對應(yīng)于/root/autodl-tmp/文件夾下,如下圖所示:(auto-tmp文件夾后面的project文件夾為自己所創(chuàng)建,根據(jù)個人的需求來。比如yolov5項目,服務(wù)器的地址可以這樣創(chuàng)建/root/autodl-tmp/project/yolov5。需要注意到:即使服務(wù)器對應(yīng)的文件夾,比如/root/autodl-tmp/project/yolov5中的yolov5不存在,也會自動創(chuàng)建)。
? ? ? ?第三點: 記得勾選Automatically upload復(fù)選框,這個按鈕的意思是,在本地pycharm中修改的代碼,會自動上傳到服務(wù)器對應(yīng)項目的同樣地方,如下圖所示:
? ? ? ?配置參數(shù)成功之后,點擊Tools->Start SSH Session即可連接服務(wù)器,之后彈出一個小窗口,選擇Remote Python開頭的服務(wù)器地址即可(當(dāng)然每個不同的項目,可以創(chuàng)建不同的連接)連接成功的界面如下所示:
? ? ? ?因為我這里開啟的是無卡模式,所以沒有GPU的顯示信息(一般傳數(shù)據(jù)集、修改相關(guān)代碼都可以使用無卡模式,這樣更省錢,訓(xùn)練模式的時候再切換有卡模式)。
3.2 配置pytorch和yolov5所需環(huán)境,以守護進程訓(xùn)練模型
? ? ? ?在選擇租用服務(wù)器那一章節(jié),我曾說到自己一步步來配置服務(wù)器的環(huán)境,不用AutoDL提供的熱門主流環(huán)境。由于目前的conda環(huán)境是base,我們重新創(chuàng)建一個conda的環(huán)境,名為yolo,并連同安裝python的版本(建議Python的版本>=3.8),并且刷新conda環(huán)境,使其生效。代碼如下所示(操作都在命令行中進行):
$ conda create -n yolo python=3.8
$ conda init bash && source /root/.bashrc
$ conda activate yolo
? ? ? ?我們已經(jīng)切換成yolo環(huán)境,此時開始安裝pytorch。首先我們要查看選擇服務(wù)器的cuda的版本。通過如下命令查看即可:
nvcc -V
? ? ? ?可以看到博主自己的版本號是11.1。打開Pytorch官網(wǎng),找到Previous versions of Pytorch,意思是pytorch以前的版本號,點擊進去。
? ? ? ?然后通過ctrl+f搜索11.1關(guān)鍵字,就可以定位到pip的下載命令,把命令粘貼到Pycharm控制臺窗口,回車下載即可(可能會比較慢),如下圖所示:
? ? ? ?下載完成之后,驗證pytorch的GPU版本是否成功,首先通過python進入到python命令行界面,再使用如下命令即可:
#判斷是否安裝了cuda
import torch
print(torch.cuda.is_available()) #返回True則說明已經(jīng)安裝了cuda
#判斷是否安裝了cuDNN
from torch.backends import cudnn
print(cudnn.is_available()) #返回True則說明已經(jīng)安裝了cuDNN
? ? ? ?踩坑點:博主在進行測試的時候,一直返回false。最初一直懷疑自己裝的pytorch版本是cpu版本,后來反復(fù)確認是gpu版本,才知道是自己的服務(wù)器開啟了無卡模式。無卡模式是沒有g(shù)pu的,所以會返回false。只需要開啟有卡模式,也就是正常開啟,則就會返回true。
? ? ? ?在第二節(jié)遠程連接服務(wù)器的時候,我們把本地的yolov5項目映射到了/root/autodl-tmp/project/yolov5,所以我們進入到此文件夾中,通過requirements.txt下載yolov5所需要的其它環(huán)境,代碼和圖如下所示(記住是yolo環(huán)境,別搞錯了):
pip install -r requirements.txt
? ? ? ?至此,我們將yolov5所需要的環(huán)境都配置完畢,接下來可以訓(xùn)練數(shù)據(jù),收集日志信息。
? ? ? ?如果我們直接啟動,那么相關(guān)的訓(xùn)練信息就會直接顯示在控制臺,一旦我們關(guān)閉了窗口,程序也就自動停止。我們是希望能夠讓程序在后臺(守護進程)執(zhí)行,并且收集日志到文件中,執(zhí)行完畢立馬進行關(guān)機。
? ? ? ?首先,博主的Linux是ubuntu系統(tǒng),我們需要通過如下命令安裝screen包(用來開啟守護進程):
apt-get install screen
? ? ? ?下載完screen之后,配置screen收集控制臺信息的日志文件路徑,使用如下代碼:
vim /etc/screenrc
? ? ? ?我這里存放的路徑是/root/autodl-tmp/logs/screenlog_%t.log,后面的%t是通配符,在接下來會進行說明,在/etc/screenrc添加如下代碼,并保存退出:
logfile /root/autodl-tmp/logs/screenlog_%t.log
? ? ? ?隨后,我們開啟一個screen守護進程,使用如下命令:
screen -L -t xxx -S yolov5
? ? ? ?這里的t也就是之前日志里面的通配符%t,這里可以用來傳日志文件的名字,我這里用xxx代表。后面的yolov5是守護進程的名字。通過screen -ls 命令,可以查看當(dāng)前的守護進程,如下圖所示:
? ? ? ?當(dāng)screen小括號后面的狀態(tài)變成(Dead),則為死亡狀態(tài),我們可以通過screen -wipe消除掉這些死亡進程,如下圖所示:
? ? ? ?非常重要:我們開啟守護進程后,切換到y(tǒng)olo環(huán)境,可以到存放環(huán)境的路徑查看日志文件,也就是/etc/screenrc配置文件中的日志路徑。我們在訓(xùn)練模型時,控制臺會不斷的輸出信息,想要退出項目輸出信息的控制臺,只需要鼠標(biāo)選中控制臺,然后按ctrl+a+d即可退出screen界面。如果想看看訓(xùn)練的輪次多少了,第一種方法是看日志文件,第二種方法通過screen -r 657.yolov5(守護進程的名字,如上圖所示)。
? ? ? ?關(guān)于訓(xùn)練技巧方面,我們上傳項目和數(shù)據(jù)集的時候,建議分開,單獨上傳,推薦使用無卡模式上傳,這樣更加省錢。項目(比如yolov5)中的數(shù)據(jù)集路徑要和上傳到服務(wù)器的數(shù)據(jù)集的絕對路徑一樣,切記要檢查仔細了。另外,我們在訓(xùn)練yolov5項目時,如果要想訓(xùn)練完立刻關(guān)機,切換到y(tǒng)olov5項目根目錄,可以使用如下命令:
python train.py && shutdown
? ? ? ?小細節(jié)理解:其實我們用Pycharm連接遠程服務(wù)器,代碼和數(shù)據(jù)集都放在服務(wù)器,本質(zhì)上和本地沒有一點關(guān)系,由于服務(wù)器沒有IDE友好界面,所以通過遠程同步操作。Pycharm代碼一改變,就會自動上傳,這是因為在配置遠程服務(wù)器中我們勾選了勾選Automatically upload復(fù)選框,如果不放心,可以在Pycharm的tools一欄,選擇如下圖所示的操作:文章來源:http://www.zghlxwxcb.cn/news/detail-779342.html
4. 本篇總結(jié)
? ? ? ?本篇主要介紹了AutoDL服務(wù)器租用流程,Pycharm遠程連接服務(wù)器并進行訓(xùn)練。通過詳細的步驟和小提示,讓更多的人少折騰在環(huán)境配置上面。另外,博客中如有任何問題,或者不理解的地方,歡迎在評論區(qū)交流。如博客對您有作用,點個小贊,謝謝大家!文章來源地址http://www.zghlxwxcb.cn/news/detail-779342.html
到了這里,關(guān)于【目標(biāo)檢測實驗系列】AutoDL線上GPU服務(wù)器租用流程以及如何用Pycharm軟件遠程連接服務(wù)器進行模型訓(xùn)練 (以Pycharm遠程訓(xùn)練Yolov5項目為例子 超詳細)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!