最近打比賽,登錄 V100 的訓練環境,突然發現沒法用 cuda 了,記錄一下修復過程。
顯示 Failed to initialize NVML: Driver/library version mismatch
查詢一下內核版本:
cat /proc/driver/nvidia/version查詢硬體
lspci | grep -i nvidia看來硬體沒有什麼問題,主要原因是由於ubuntu自動更新驅動的關係,顯卡驅動被升級為
nvidia-driver-460 (460.32.03-0ubuntu0.18.04.1) 造成的不匹配。
2. 卸載驅動sudo apt-get purge nvidia*
3. 查找可用的驅動版本ubuntu-drivers devices這裡可見最新的驅動為nvidia-driver-460,標記為推薦,自動更新會與我們安裝的深度學習環境衝突。
4. 安裝450版本驅動要選擇匹配核心版本455.38的驅動,這裡安裝nvidia-driver-450-server版本。
sudo apt-get install nvidia-driver-450-server nvidia-settings nvidia-prime5. 重啟生效
驅動安裝後不會立即生效,必須要重啟一下伺服器。
sudo reboot
6. 修復成功查詢 nvcc版本
nvcc -V查看驅動
nvidia-smi驅動修復正常了!
7. 測試訓練環境測試一下pytorch的環境,跑一下mmdetection代碼
conda activate open-mmlabimport torch
torch.cuda.is_available()8. 保持驅動
為了防止下次ubuntu再自動更新,可以設置驅動保持。
sudo apt-mark hold nvidia-driver-450-server搞定,這樣下次作業系統就不會無腦自動更新顯卡驅動了。