我們服務(wù)器遇到的大多數(shù)找不到包的問題
都是因為國內(nèi)的網(wǎng)絡(luò)環(huán)境以及墻的問題,導(dǎo)致我們服務(wù)器使用了源,或conda使用了源的問題。
使用命令: conda install ,提示找不到包,很可能是因為我們使用了源,然后源里沒存那個包。
使用命令: conda search cudatoolkit,找不到包,那其實是這個源里沒這個包,不是說conda真的裝不上那個特定版本的cuda。
又比如,使用git clone, git reset,一直報很奇怪的錯,網(wǎng)上搜索的方法試了又試,都解決不了這個問題,之后發(fā)現(xiàn)是國內(nèi)鏈接github比較慢,使用一下學(xué)術(shù)加速就解決了。
又比如,conda install pytorch -c pytorch,怎么都裝不上,找不到包,也是連接pytorch官網(wǎng)比較慢
所以這里,筆者通過在autodl上搭建環(huán)境的例子,重新整一遍linux新環(huán)境中配置cuda,cudnn,pytorch以及安裝好一個github包,并通過git硬調(diào)apex版本,來掩飾一下,當(dāng)國內(nèi)網(wǎng)不好,或使用的服務(wù)器網(wǎng)不好的時候,我們有多少種方法把環(huán)境給配好。(比如本地安裝,換源,conda換pip之類的。)
一,服務(wù)器安裝cuda和cudnn
使用conda在線安裝cuda和cudnn
一般情況下,我們使用conda在虛擬環(huán)境中安裝cuda和cudnn,我們會先搜索conda能提供的cuda包和cudnn包再安裝。
比如使用如下所示代碼:
conda search cudatoolkit
conda search cudnn
之后安裝顯示出來的列表里圖里有的cuda和cudnn版本。
conda install cudatoolkit==xx.xx
conda install cudnn==xx.xx
比如當(dāng)我在autodl上默認(rèn)環(huán)境中運(yùn)行:conda search cudatoolkit
時,顯示出來的是如下畫面:
可以看到,顯示出來的包不全,導(dǎo)致我們配環(huán)境也配的很困難(conda search cudnn同理,同樣是不全。)
不管是直接使用命令進(jìn)行安裝conda install cudatoolkit==xx.xx
,還是使用命令conda search cudatoolkit --info
自己根據(jù)鏈接下載里面對應(yīng)的包再本地安裝,前提是我們得能搜索到對應(yīng)的包啊,連包都搜索不到怎么安裝(比如我們想安裝11.1版本的cuda,我們至少得能搜索到cuda11.1啊,但這里的cudatoolkit連11.1都搜索不到。)
為什么conda能提供的cuda版本和cudnn版本這么少?我嘗試運(yùn)行了一下這兩行命令進(jìn)行搜索:
conda search cudatoolkit -c conda-forge
conda search cudnn -c conda-forge
這回能搜索到一系列的包。
確定原因:是網(wǎng)絡(luò)和源的問題,導(dǎo)致conda搜索不到。
嘗試換一下源再搜索:
#conda清除添加源,恢復(fù)默認(rèn)源
conda config --remove-key channels
#添加一些清華源(有時候清華源崩了,可以換阿里源,阿里源崩了,可以換中科大源。國內(nèi)安環(huán)境遇到問題,比如查找不到包的問題,很多都是網(wǎng)絡(luò)的問題)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
這時候再重新運(yùn)行命令:
conda search cudatoolkit
conda search cudnn
這時候就能顯示一系列能安裝的conda 包了(conda搜索不到包,還是源的問題。)
這時候運(yùn)行命令就可以了:
conda install cudatoolkit==xx.xx
conda install cudnn==xx.xx
使用conda進(jìn)行本地安裝
有時候直接去搜索conda-forge,去安裝的時候,因為服務(wù)器沒法訪問外網(wǎng),如果不是用源里面的文件,可能下載速度會很慢。我們可以使用這條命令:
conda search cudatoolkit --info
訪問搜索出來的包的url,然后自己下載好,上傳到服務(wù)器上,之后使用命令安裝。
比如我們下載的兩個包是cudatoolkit-11.3.1-h2bc3f7f_2.conda和cudnn-8.2.1-cuda11.3_0.conda,我們可以運(yùn)行這兩個命令進(jìn)行安裝。(下載的如果是壓縮包,記得解壓)
conda install ./cudatoolkit-11.3.1-h2bc3f7f_2.conda
conda install ./cudnn-8.2.1-cuda11.3_0.conda
檢查conda安裝的cuda和cudnn
conda list | grep cudatoolkit
conda list | grep cudnn
本地直接安裝cuda和cudnn
方法一:直接更換鏡像
實際上我們沒必要把每一步都按照自己的想法去強(qiáng)迫其實現(xiàn),這樣會很浪費(fèi)我們的時間,有時候同一張卡,我們直接升降配置換個鏡像,就可以配好了。這能極大的提升我們做科研的速度。(不過我還是想把整體配環(huán)境的流程配一遍)
方法二:在nvidia官網(wǎng)下載cuda和cudnn之后進(jìn)行安裝
比如我們想安裝cuda11.1.1和配套的cudnn7.6.5,我們首先要在nvidia官網(wǎng)的cuda-toolkit頁面下載cuda11.0。
我們點進(jìn)該頁面,之后選擇相關(guān)的文件,然后下載就可以了。
之后按照這個頁面下面的鏈接運(yùn)行即可成功安裝上。
之后是配置cuda的環(huán)境變量的部分。具體安裝過程如圖所示:安裝CUDA并配置環(huán)境變量?;騾⒖歼@個帖子的配置環(huán)境變量過程:Linux系統(tǒng)下CUDA和cuDNN環(huán)境配置 。
接著我們進(jìn)入nvidia-cudnn網(wǎng)址進(jìn)一步下載cudnn
(這一步需要登陸)
安裝cudnn之后,要執(zhí)行一些列復(fù)制頭文件的命令,參考此網(wǎng)址即可。對命令具體不懂的,可以詢問ChatGPT 。
conda安裝的cuda沒有nvcc
我之前的autodl設(shè)置的環(huán)境一直是cuda10.1,然后conda里安裝的cudatoolkit也是10.1的版本,所以一直沒發(fā)現(xiàn)這個問題,。
當(dāng)換了另一個服務(wù)器后,另一個服務(wù)器沒有安裝cuda10.1,conda安裝了10.1版本的cudatoolkit之后無法使用nvcc命令,同時apex也無法正常安裝(一直調(diào)用的外部的不匹配的cuda)
命令行運(yùn)行命令
nvcc -V
或
nvcc --version
發(fā)現(xiàn)提示沒有nvcc。
這是因為conda安裝的cuda是不完全的版本。如果想使用conda安裝具有nvcc的cuda,有兩個辦法:
方法一:
安裝具有nvcc功能的cuda包。 參考以下三個網(wǎng)址:在Conda/無網(wǎng)絡(luò)服務(wù)器/非root情況下安裝Apex,安裝cudatoolkit時Nvcc丟失?,Nvcc missing when installing cudatoolkit?.
conda search cudatoolkit
conda install -c conda-forge cudatoolkit-dev=10.1
上面第一句,如果網(wǎng)絡(luò)不好的話可能搜索不到,直接安裝cudatoolkit-dev就行了。網(wǎng)絡(luò)好的服務(wù)器可以直接安裝(不過暫時沒有去試過只安裝dev,不安裝cuda能不能使用apex,至少conda下有nvcc功能了)
方法二:
安裝nvidia官網(wǎng)提供的cuda包。(nvidia conda channel is now available: nvidia/cuda and nvcc is in it.)
里面的示例安裝命令是:
conda install cuda -c nvidia/label/cuda-11.3.0
但是似乎這個cuda包沒有我們需要的系統(tǒng)版本(cuda10.1),里面有的版本都包含在這個網(wǎng)址里了:
nvidia / packages / cuda 12.3.0
二:服務(wù)器安裝pytorch
換源或換命令安裝pytorch
pytorch官網(wǎng)
比如官網(wǎng)的conda安裝命令是:
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 -c pytorch
實際上這個版本還有對應(yīng)的pip安裝命令:
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
在安裝pytorch的過程中,我們還可以換源
換源安裝pytorch
本地安裝pytorch
pytorch離線下載網(wǎng)址
比如如果pytorch官網(wǎng)告訴我們的安裝命令是:
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 -c pytorch
我們可以去上面的離線包下載網(wǎng)址,把對應(yīng)python版本和cuda版本的pytorch,torchvision還有torchaudio都下載上:
torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl
torchaudio-0.8.0-cp38-cp38-linux_x86_64.whl
torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl
之后我們把下載的包上傳到服務(wù)器以后,在本地路徑上直接pip安裝就可以了。
pip install torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl
pip install torchaudio-0.8.0-cp38-cp38-linux_x86_64.whl
報錯: xxx.whl is not a supported wheel on this platform
不過本地安裝pytorch的whl文件的一個問題就是,我們可能需要改一下文件的名字(因為新版的pip必須把文件名按規(guī)定的語法來修改才能安裝上)
具體可以參考這三個網(wǎng)址:ERROR: torch-1.12.0+cu116-cp38-cp38-win_amd64.whl is not a supported wheel on this platform.,xxx.whl is not a supported wheel on this platform-查看pip支持的安裝包版本,用whl安裝pytorch踩坑實錄(whl is not a supported wheel on this platform.)??
我改了文件名后,成功安裝上了。
我改的文件名:
torch-1.8.0+cu111-py38-none-linux_x86_64.whl
然后就成功安裝上了
pip install torchvision-0.9.0+cu111-py38-none-linux_x86_64.whl
最后:
pip install torchaudio-0.8.0-py38-none-linux_x86_64.whl
檢查pytorch是否成功安裝:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
# 打印當(dāng)前可見可用的GPU數(shù)目
print(torch.cuda.device_count())
# 獲取GPU名字
print(torch.cuda.get_device_name())
# 獲取torch運(yùn)行的cuda版本
torch.version.cuda
三:服務(wù)器運(yùn)行g(shù)it命令(git reset/ git clone)
這個同樣是源或網(wǎng)絡(luò)的問題,autodl有一個學(xué)術(shù)加速。
四:服務(wù)器conda安裝gcc和g++
這里一看幾條參考命令就都懂了。
比如我們之前conda安裝了gcc和g++,但是軟鏈接的是高版本的gcc和g++,現(xiàn)在無法使用,那么就可以這樣:
先刪除之前版本的gcc和gxx
conda remove gcc_linux-64
conda remove gxx_linux-64
再安裝對應(yīng)版本的gcc和gxx
conda search gcc
conda search gxx
conda install gcc_linux-64=7.3.0
conda install gxx_linux-64=7.3.0
如果之前已經(jīng)加上了軟連接,那先刪除之前的軟連接 (通過這條命令,再通過下面的建立軟鏈接的命令可以看出,軟鏈接就是創(chuàng)建了一個文件,訪問這個文件時可以鏈接訪問到我們真的希望他訪問的文件。比如這里創(chuàng)建的文件是在環(huán)境的bin下創(chuàng)建了gcc和g++兩個文件,結(jié)合下面添加新的軟鏈接可以理解清楚,訪問bin/gcc時,實際訪問的是bin/x86_64-conda_cos6-linux-gnu-gcc,也就是我們conda實際安裝的gcc文件)
rm /home/fengsiyuan/anaconda3/envs/scene_graph_benchmark/bin/gcc
rm /home/fengsiyuan/anaconda3/envs/scene_graph_benchmark/bin/g++
添加新的軟鏈接
ln -s /home/fengsiyuan/anaconda3/envs/scene_graph_benchmark/bin/x86_64-conda_cos6-linux-gnu-gcc /home/fengsiyuan/anaconda3/envs/scene_graph_benchmark/bin/gcc
ln -s /home/fengsiyuan/anaconda3/envs/scene_graph_benchmark/bin/x86_64-conda_cos6-linux-gnu-g++ /home/fengsiyuan/anaconda3/envs/scene_graph_benchmark/bin/g++
當(dāng)然,有的系統(tǒng)沒有用conda,軟鏈接鏈接的是usr/local/bin下的gcc和g++,那就是另一回事了
五:服務(wù)器conda升級python版本的小技巧
比如我今天在復(fù)現(xiàn)cogtree的時候,因為scene graph generation benchmark我一直用的python是3.8,但是cogtree在最后nbdt文件夾安裝相應(yīng)包的時候,報錯需要使用python3.9這個包。那我需要重新設(shè)置一個conda環(huán)境,把所有的安裝流程都重復(fù)一遍嗎?可能不用,我可能只需要這樣一條命令:文章來源:http://www.zghlxwxcb.cn/news/detail-701420.html
conda install python=3.9
當(dāng)然也不絕對,有的環(huán)境的其他包都是根據(jù)python3.8來安裝的,這樣升級可能會使其他包出錯。不過可以先跑一下試試文章來源地址http://www.zghlxwxcb.cn/news/detail-701420.html
到了這里,關(guān)于【autodl/linux配環(huán)境心得:conda/本地配cuda,cudnn及pytorch心得】-未完成的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!