實(shí)驗(yàn)室剛到一臺(tái)Dell服務(wù)器主機(jī),里面配置一張RTX 4090和RTX 3090顯卡,弄了好久終于能成功運(yùn)行PyTorch深度學(xué)習(xí)模型,現(xiàn)在將過程描述如下:
1. 基礎(chǔ)
首先是系統(tǒng),選擇的是Ubantu 18.02版本,這個(gè)直接下載安裝就不說了,直接下一步下一步,沒什么問題
然后是顯卡驅(qū)動(dòng),這個(gè)由于我們的主機(jī)是4090,所以下載的最新的顯卡驅(qū)動(dòng)525
下載后出現(xiàn)第一個(gè)坑:如果你和我們一樣,有兩張不平衡的顯卡,那么下載顯卡驅(qū)動(dòng)極有可能會(huì)下載的低等級(jí)的那個(gè)驅(qū)動(dòng),導(dǎo)致開機(jī)異常,表現(xiàn)為開不了機(jī),屏幕一直閃
解決方法:只留高的顯卡,我們只留了4090,然后成功可以開機(jī),安裝好4090的驅(qū)動(dòng)后,再將3090插入,依然可以啟動(dòng)
解決完舉動(dòng)之后,安裝conda和CUDA,conda沒什么好說的,直接anaconda3官網(wǎng)下載安裝,至于CUDA,這里我們選擇的是最新的CUDA 12.0,在官網(wǎng)搜索下載即可,下載安裝后需要更新bashrc文件:
使用vim ~/.bashrc
打開文件,沒有vim就按照提示安裝vim或使用gedit。隨后在文件底部添加:
export PATH="/usr/local/anaconda3/bin:$PATH"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda12.0/lib64
export PATH=$PATH:/usr/local/cuda-12.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-12.0
第一句是conda的命令,后三句是cuda的命令,記得改成自己的相應(yīng)路徑
2. 用戶訪問
首先需要將該主機(jī)設(shè)置為可以用ssh訪問的狀態(tài),千萬(wàn)注意端口號(hào)的修改,我們當(dāng)時(shí)就是因?yàn)槎丝谔?hào)沒有修改成可用狀態(tài)擱置了很久。
首先安裝openssh-server
sudo apt-get install openssh-server
Ubantui如果默認(rèn)安裝了就不用安裝了,沒有的話就安上
然后確認(rèn)ssh-server是否啟動(dòng):
ps -e |grep ssh
如果看到sshd就說明ssh已經(jīng)啟動(dòng),如果沒有的話需要啟動(dòng):
sudo /etc/init.d/ssh start
接著需要修改端口號(hào):
sudo vim /etc/ssh/sshd_config
默認(rèn)是22,將文件里面的22注釋掉后修改成自己想要的端口號(hào),這個(gè)可以咨詢網(wǎng)絡(luò)管理員你們的IP和端口是多少
最后重啟ssh
systemctl restart sshd.netword
設(shè)置完后創(chuàng)建用戶,這里出現(xiàn)第二個(gè)坑,創(chuàng)建用戶后出現(xiàn)無(wú)法登陸的BUG,經(jīng)檢查后發(fā)現(xiàn)是useradd -d
命令沒有生成對(duì)應(yīng)的目錄導(dǎo)致無(wú)法登陸,解決方法是在后面加上一句-m,但加上-m后會(huì)出現(xiàn)第三個(gè)坑,登陸后沒有用戶名,只有一個(gè)$,解決方法是在useradd 后面加上 -s /bin/bash,最后使用的添加用戶的命令為:
useradd 用戶名 -d /home/user_1/用戶名 -m -s /bin/bash
隨后設(shè)置相應(yīng)的密碼:
passwd 用戶名
創(chuàng)建用戶后登錄,需要設(shè)置bashrc文件以運(yùn)行顯卡
輸入代碼
vim ~/.bashrc
在尾部添加代碼:
export PATH="/usr/local/anaconda3/bin:$PATH"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.0/lib64
export PATH=$PATH:/usr/local/cuda-12.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-12.0
更新bashrc:
source ~/.bashrc
初始化conda:
conda init
如果提示沒有conda就關(guān)閉連接重新ssh接入,再輸入
再次連接ssh即可使用conda
3. Pytorch環(huán)境的問題
這個(gè)是最麻煩的,你或許嘗試過conda,嘗試過pip,嘗試過反復(fù)復(fù)制Pytorch官網(wǎng)的下載命令,但最后總得到 torch.cuda.is_available()
的結(jié)果為False
那么這個(gè)時(shí)候就不要妄想通過PyTorch官網(wǎng)的命令來安好了,什么去掉-c之類的,多半是沒有用的,解決辦法就是去PyTorch官網(wǎng)去找自己的whl文件下載來安裝。具體如下:
首先看到pip命令下面的下載鏈接:
點(diǎn)進(jìn)去之后會(huì)有下載選項(xiàng),一般需要下載以下三個(gè)依賴包:
這里以PyTorch為例子,點(diǎn)進(jìn)去之后選擇想要的版本,cp指的是python版本,cu指的是cuda版本,一定不能下錯(cuò),這里以python3.7,cuda11.7為例:
下載后通過winscp傳輸?shù)椒?wù)器中,或者使用U盤傳送到服務(wù)器中,使用pip install xx.whl
安裝即可
如果出現(xiàn)報(bào)錯(cuò)那么極有可能是:1,python版本問題,下載的時(shí)候看仔細(xì);2,文件傳輸損壞了,重新下載即可。
最后記得驗(yàn)證一下 torch.cuda.is_available()
,如果為False則繼續(xù)重復(fù)上述步驟
4. 顯卡調(diào)度問題
由于我們的服務(wù)器配置的顯卡型號(hào)不一致,使用過程會(huì)出現(xiàn)很多問題,顯卡不一致不支持雙卡并行
我們的是一塊4090和一塊30-90,尤其是使用4090顯卡,若不強(qiáng)制指定會(huì)導(dǎo)致3090顯卡莫名占用顯存,需要設(shè)定環(huán)境變量,具體如下:
使用4090顯卡運(yùn)行程序示例:
方法一:在shell命令前強(qiáng)制指定顯卡
CUDA_VISIBLE_DEVICES="0" python main.py
方法二:在代碼中強(qiáng)制指定顯卡
在主程序中加入如下代碼:
import os
os.environ['CUDA_VISIBLE_DEVICES'] = "0"
然后直接運(yùn)行:python main.py
即可
如需使用另一塊3090顯卡則將 “0”改為 “1”
顯卡型號(hào)不一致極有可能和我們這個(gè)情況一樣
若運(yùn)行中出現(xiàn)如下警告:
`UserWarning:
There is an imbalance between your GPUs. You may want to exclude GPU 1 which
has less than 75% of the memory or cores of GPU 0. You can do so by setting
the device_ids argument to DataParallel, or by setting the CUDA_VISIBLE_DEVICES
environment variable.
warnings.warn(imbalance_warn.format(device_ids[min_pos], device_ids[max_pos]))`
說明顯卡沒有配置正確,需要ctrl+c停止代碼后指定顯卡
建議運(yùn)行代碼后,使用 nvidia-smi
檢查一下顯存,如果兩張顯卡顯存同時(shí)升高,則顯卡指定有誤,需要重新指定
5. 各種各樣的小BUG
5.1 Liunx創(chuàng)建新用戶登錄異常:/usr/bin/xauth: error/timeout in locking authority file /home/user/.Xauthority
注意下面 的“/home/user_1/用戶名”
要修改成你的用戶名路徑?。?!
先使用su創(chuàng)建文件
sudo mkdir /home/user_1/用戶名
賦予權(quán)限:
chown 用戶名:用戶名 -R /home/user_1/用戶名
usermod -s /bin/bash 用戶名
重置bashrc:
cp /etc/skel/.bashrc ~/
重新添加bashrc文件中的conda等環(huán)境變量
5.2 服務(wù)器更換了地方連不上網(wǎng),只有IPV6地址,ping不通
解決方法:
首先進(jìn)入以太網(wǎng)端口,手動(dòng)設(shè)置IPV4的IP地址,這里因人而異,自行咨詢網(wǎng)絡(luò)管理員IP、子網(wǎng)掩碼、網(wǎng)關(guān)是多少
然后進(jìn)入etc/network
文件(此時(shí)應(yīng)使用su賬號(hào))
cd /etc/network
使用vim打開 interfaces
文件
vim interfaces
在文件尾端添加你手動(dòng)輸入的IP地址,網(wǎng)關(guān),子網(wǎng)掩碼等:
iface 你的網(wǎng)口名稱(ipconfig可以看到,一般是enp0) inet static
address 你的IP地址
gatway 你的網(wǎng)關(guān)
netmask 你的子網(wǎng)掩碼
然后更新網(wǎng)絡(luò)即可:文章來源:http://www.zghlxwxcb.cn/news/detail-450160.html
service network-manager restart
先寫到這里,后續(xù)有什么BUG繼續(xù)更新文章來源地址http://www.zghlxwxcb.cn/news/detail-450160.html
到了這里,關(guān)于Ubantu從0開始配置深度學(xué)習(xí)RTX 4090+3090顯卡的服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!