找資料的時候感覺現在寫30XX系顯卡深度學習環境配置的文章還不太完善,所以記錄了自己的採坑經歷。
Why?下面這張圖非常直觀,TITAN性能比2080ti強,3080的CUDA核心數差不多是TITAN的兩倍,內存少一些。目前3080顯卡7000出頭可以拿下,性價比非常不錯。
1 準備工作上半年配了臺支持4GPU的機器,原計劃下半年訓練任務上來以後再加卡。但是30XX顯卡出來以後,2個3080理論上和4個2080ti性能差不多,現在再加2080ti就非常不理智了。所以拆了2080ti,買了兩個技嘉GeForce RTX™ 3080 GAMING OC 10G。
機器的硬體配置:
cpu:i9 10900x
主板:華碩PRIME X299-DELUXE Ⅱ
內存:16G * 4
電源:1600w
顯卡:技嘉3080 GAMING O10G * 2
這套配置換3080有很多問題,性價比極低,不太推薦大家按照這個配置來買,有很多更合理的配置單可以參考。
2 環境配置深度學習環境配置要多花點時間了解自己機器的情況,免得踩太多的坑。先去github上看看別人採的坑https://github.com/pytorch/pytorch/issues?q=is%3Aissue+is%3Aopen+30。
機器的環境:
作業系統:Ubuntu18.04
Nvidia Driver:455
Python:3.7
Pytorch:>= 1.7.0
cuda:11.1.1
cudnn:8.0.5
版本號很重要,一定要看清楚,選不對小版本就是在瞎折騰。
2.1 Nvidia驅動安裝2.1.1 下載驅動驅動用官方推薦的455,對GTX3080、GTX3090做了適配。
官網地址:https://www.nvidia.com/download/driverResults.aspx/163522/en-us
# 查看GPU
lspci -vnn | grep VGA
# 安裝官方推薦的驅動
sudo ./NVIDIA-Linux-x86_64-455.23.04.run --no-x-check -no-nouveau-check -no-opengl-files驅動安裝這裡no-x、no-opengl很重要。
安裝好驅動以後reboot,查看驅動情況。
watch nvidia-smi2.1.2 Tips
給Ubuntu裝Nvidia的驅動每次都會把我製得服服帖帖的,記錄顯卡驅動的安裝這裡踩過的幾個坑:
(1)ubuntu-drivers devices沒有輸出
以前安裝2080ti驅動的時候很簡單,更新系統,然後用ubuntu-drivers devices很簡單就裝上了。但是,3080插上以後,ubuntu-drivers devices沒有輸出。
開始我還以為是顯卡沒有插好,檢查了很多次。後來用下面這個命令是可以看到顯卡的。我想了一下應該是ubuntu還沒有更新對30XX顯卡的檢測。所以官方直接下載驅動安裝就好了。
lspci -vnn | grep VGA
> 1a:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2206] (rev a1) (prog-if 00 [VGA controller])
> 68:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2206] (rev a1) (prog-if 00 [VGA controller])(2)沒有關閉x、opengl
第一次安裝驅動沒有關閉x和opengl,安裝失敗。
sudo ./NVIDIA-Linux-x86_64-455.23.04.runs2.2 cuda、cudnn安裝conda一鍵搞定
自己編譯的cuda性能會好一些,不想折騰的話可以用conda安裝。
conda install pytorch torchvision torchaudio cudatoolkit=11.0 -c pytorch-nightlyconda會自動給我們安裝cuda和依賴庫,等一會(這裡等的時間和網速有比較大關係,我等了20分鐘)就好了。
安裝失敗的話檢查你的網絡,速度太慢就去掛個VP*。
這裡的cuda是11.0,和推薦的不一樣,但是我運行挺正常的。如果有問題,歡迎大家指出來,我修正。
2.2.1 cuda 11.1wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run
sudo sh cuda_11.1.0_455.23.05_linux.run2.2.2 cudnn 8.0.5這裡我並沒有看到有8.0.5版本的cudnn,只有8.0.4。很多人說8.0.4會安裝失敗,所以我用的是conda的一鍵安裝。
https://developer.nvidia.com/rdp/cudnn-archive
2.3 Pytorch安裝pytorch一定要安裝nightly版本。
pip install numpy
pip install --pre torch torchvision torchaudio -f https://download.pytorch.org/whl/nightly/cu110/torch_nightly.html2.4 測試放別人的一小段測試代碼,看看有沒有正常調用顯卡進行訓練。
import torch
import torch.nn as nn
import torch.optim as optim
size = 128
class PayloadModel(nn.Module):
def __init__(self):
super().__init__()
self.layers = nn.Sequential( \
*[nn.Conv1d(size, size, 1, 1, 0) for i in range(10)])
def forward(self, X):
return self.layers(X)
device = "cuda:0"
model = PayloadModel().to(device)
optimizer = optim.Adam(model.parameters(), lr = 5e-4)
inputs = torch.randn(32, size, 256, device = device)
targets = torch.randn(32, size, 256, device = device)
loss = nn.MSELoss()
for step in range(10000000):
predicted = model(inputs)
L = loss(predicted, targets)
optimizer.zero_grad()
L.backward()
optimizer.step()
print("%d steps, loss = %f" % (step, L.item()), end = "\r")結束語30XX顯卡性能提升很多,性價比也不錯,現階段想配機器的同學這裡不推薦買20系列。但是torch和tensorflow穩定版支持30XX顯卡可能還需要一點時間,需要動手能力稍微強一點,網上寫30xx的文章還不多,遇到問題先看看github,留言討論也可以。
Reference