記錄一下我這兒用到的組建:ubuntu18+Anaconda+2070super驅(qū)動+cudaToolkit10.2+Pytorch1.5
踩坑注意
- 首先裝驅(qū)動建議選穩(wěn)定版本的驅(qū)動嫩痰,然后驅(qū)動的時候CUDA好像就安裝好了拗踢,不過這個CUDA是最新的烁落,有可能pytorch還沒適配上笨腥,所以要調(diào)整一下CUDA(截止到更新,最新CUDA是11.2堵未,pytorch用的是11.0)
- 裝完CUDA要看對應(yīng)的cudnn,這個要和CUDA對應(yīng),好像
11.0
清女、11.1
、11.2
對應(yīng)的cudnn是一樣的晰筛。 - CUDA和cudnn我是裝到了根目錄嫡丙,然后因?yàn)楦夸浟舻目臻g不夠,所以報了空間不足的錯读第,建議留出足夠多的空間用于安裝曙博。
- 最后裝pytorch沒啥好說的,反正目前中科大源沒有了怜瞒,如果有的話可以幾個源ping一下看看哪個快父泳。
20感覺有些地方還是不兼容般哼,不是非常順手。換回18了
一共分為幾步惠窄,參考:https://blog.csdn.net/gdymind/article/details/82153643
安裝Anaconda(沒有程序需求可以裝miniconda)
從官網(wǎng)下sh版本的直接安裝在自己的家目錄
安裝完在家目錄下面會有一個anaconda文件夾
在ubuntu上安裝好anaconda后蒸眠,如果輸入conda命令報錯,大概率是沒有把conda加入環(huán)境變量
所有可執(zhí)行二進(jìn)制文件都存放在:~/anaconda3/bin
在終端輸入:sudo gedit ~/.bashrc
(命令行模式可以使用vim ~/.bashrc
進(jìn)行打開杆融,如果只是在自己的家目錄操作好像不需要使用sudo)
在 ~/.bashrc最后一行加入 export PATH=~/anaconda3/bin:$PATH
然后保存退出
命令行界面輸入source ~/.bashrc
激活環(huán)境
測試:
(rna) dicklim@ubuntu:~$ conda -V
conda 4.8.2
在ubuntu實(shí)機(jī)上測試了可以使用
配置Anaconda(20200524測試可用)
配置過程主要就是替換channel楞卡,因?yàn)楣倬W(wǎng)channel太慢了,所以改用清華的源脾歇。
清華鏡像站里的方法蒋腮,不是非常好,用生成condarc之后去改藕各,我試了幾次沒成功池摧,所以我我還是決定用命令行模式來修改
基本語法:conda config --add channels https://
后面跟要加的url
下面貼一些比較常用的命令:
# Anaconda Python 免費(fèi)倉庫
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
# Conda Forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
# msys2
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
# bioconda
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
# menpo
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
# pytorch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
# for legacy win-64
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/
# 這句代碼感覺不是必要
conda config --set show_channel_urls yes
這兒加鏡像我覺得是要啥加啥,沒必要直接全加(不知道會不會拖慢速度)
像free和main都是必要的座韵,剩下pytorch是深度學(xué)習(xí)用的险绘,bioconda是生信的,conda-forge查了一下是個更快的社區(qū)之類的誉碴?
最后那個show_channel_urls好像是在家目錄生成一個url文件宦棺,感覺這句代碼不是非常必須。
安裝Nvidia 驅(qū)動
這步反正就是去官網(wǎng)下載需要的組件黔帕,這個沒啥好說的
- 一個特殊的做法:ubuntu中有個軟件和更新-->附加驅(qū)動代咸,里面可以顯示可按轉(zhuǎn)的驅(qū)動,我這兒是440的測試版和435的穩(wěn)定版成黄。我裝的穩(wěn)定版(啊下的好慢呐芥,下次一定要配好ssr再整活。)
測試:glxinfo | grep rendering
如果顯示yes就是下好了奋岁,如果顯示沒這個命令就用sudo apt-get install mesa-utils
安裝思瘟。
這兒要把用戶調(diào)成需要密碼登陸,不然會和驅(qū)動沖突闻伶,然后無限重啟滨攻。
還有個避免無限登陸的方法:是手動用run文件升級,留個參考:
https://blog.csdn.net/lihe4151021/article/details/90083431
進(jìn)入tty1界面可能會出現(xiàn)中文亂碼蓝翰,解決方案
https://blog.csdn.net/lihe4151021/article/details/90048918
安裝CUDA Toolkit
裝pytorch的時候好像會直接裝cuda所以這個似乎可以省略光绕?
這個去網(wǎng)站https://developer.nvidia.com/cuda-toolkit
選好對應(yīng)的版本下載就行了,我選的10.2因?yàn)镻ytorch上只有10.2的我不知道更新的11支持不支持畜份。
然后找到對應(yīng)需要的配置之后按照那串代碼下就行了诞帐。
我選的Linux-->x86_64-->Ubuntu-->18.04-->deb(驚!不知道20能不能用)最后還是換回18了
好的我裝完了爆雹,因該是可以的停蕉,那就湊和著用了愕鼓。(1.7G,我心疼的抱住我的小硬盤嗚嗚嗚
)
測試:
(base) dick@dick-System-Product-Name:~$ cat /usr/local/cuda/version.txt
CUDA Version 10.2.89
然后是cuDNN
絕望怎么這個也可以在清華源下谷徙,那就是說也許可以conda install cudnn拒啰?
好像是要的,我就裝一下試試
https://developer.nvidia.com/rdp/cudnn-download在這兒找到要的對應(yīng)的包完慧,我是for CUDA 10.2谋旦,還是下的ubuntu18.04的版本,下那個Runtime Library屈尼。
下下來是個deb包册着,然后用dpkg安裝
命令是:sudo dpkg -i <name>
驗(yàn)證可以在python里驗(yàn)證
最后是Pytorch了
直接去官網(wǎng)找到命令復(fù)制過來就行了。
conda install pytorch torchvision cudatoolkit=10.2
注意原本指令里面是有-c pytorch
的脾歧,導(dǎo)致channel首選pytorch甲捏,為了全從清華源下,這個-c要去掉
這玩意換了清華源因該 問題不大鞭执,剛剛冒出來一個HTTP 000 CONNECTION FAILED for url
司顿,估計是網(wǎng)絡(luò)波動,再試一下就好了兄纺。
好吧pytorch還是下的慢大溜,然后在安裝里面會顯示要裝哪個版本,去清華源把對應(yīng)的版本下下來估脆。
我差pytorch和cuda toolkit(雖然我配置過cuda不過他要那就只能重弄了)
我找的是
然后是
conda install ./pytorch-1.5.0-py3.7_cuda10.2.89_cudnn7.6.5_0.tar.bz2
conda install ./cudatoolkit-10.2.89-hfd86e86_1.conda
Python驗(yàn)證程序
import torch
# 若正常則靜默
a = torch.tensor(1.)
# 若正常則靜默
a.cuda()
# 若正常則返回 tensor(1., device='cuda:0')
from torch.backends import cudnn
# 若正常則靜默
cudnn.is_available()
# 若正常則返回 True
True
cudnn.is_acceptable(a.cuda())
# 若正常則返回 True
True