最近趕著投稿paper,於是又架了一台sever來跑實驗,搞環境真的是最煩躁的一件事沒有之一,這次依然遇到很多問題,趁著記憶猶新趕緊記錄下來防止未來再度踩雷。
這次的安裝是整個OS打掉重灌,因此多了一些繁瑣的設定,至於環境版本配置單純follow其他可以順利跑的server。
Step 0. OS重灌
這次選用的是製作開機碟重灌,Ubuntu 20.04重灌已經非常人性化&防呆了,基本上照著步驟選好就可以,比較要注意的是第一次reboot要記得拔掉開機碟(會有畫面提醒)。
新增sudo user (optional)
若有多位使用者共用server的話可以先把user新增好:1
sudo adduser ${USER_NAME} sudo
網路設定
server用的是學校分配的固定IP,因此要設定網路一下:1
2
3
4IP Address: 140.114.76.XXX
Netmask: 255.255.255.0
Gateway: 140.114.76.254
DNS: 140.114.63.1
安裝Openssh
建立ssh就可以遠端操作,平常也都是用VSCode的環境連回去寫code1
2sudo apt-get install openssh-server
sudo vim /etc/ssh/sshd_config # 安裝後修改以下configsshd_config
:1
2
3
4
5...
Port 22
PasswordAuthentication yes
PermitRootLogin yes
...
接著重啟服務並測試:1
2/etc/init.d/ssh restart # 重啟服務
sudo systemctl status ssh # 確認有綠字的active (running) 就成功囉
安裝成功後就可以透過其他設備ssh遠端連回server,若之前有連過同個IP會讓cmd或VSCode無法連線,要到遠端設備的 .ssh
資料夾下找到 known_hosts
,並將這個IP的資訊整行刪除,刪除後再次連線就可以了。
Step 1. 安裝Driver
安裝NVIDIA Driver主要有兩種方式,第一種是用local .run
file去安裝,但看網路上的教學大多都還要去禁用dm再重啟,在安裝介面也會有很多Yes/No問題,嘗試幾次無果,果斷改用Package Manager方式安裝,比較直觀且方便。
先確認是否有偵測到顯卡:1
2
3# 兩者皆可
lspci | grep -i VGA
lspci | grep -i nvidia

查看相容與建議的driver版本:1
ubuntu-drivers devices

這邊選擇515版本安裝(請視CUDA版本相容安裝)1
2sudo apt-get install nvidia-driver-515
sduo reboot
安裝重啟後測試,若有看到GPU資訊框與對應driver就代表安裝成功囉。1
nvidia-smi
Step 2. 安裝CUDA
CUDA的安裝採用官網建議的command,也可以選更新/更舊的CUDA,端看使用需求。1
2
3
4
5
6
7wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda-repo-ubuntu2004-11-1-local_11.1.1-455.32.00-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-1-local_11.1.1-455.32.00-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-1-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
理論上來說,安裝過程中沒有出現太奇怪的error/warning message就可以了,但這邊我遇到最大的問題,出現以下err:1
2
3
4
5
6
7
8
9
10Errors were encountered while processing:
nvidia-dkms-460
cuda-drivers-460
cuda-drivers
cuda-runtime-11-2
nvidia-driver-460
cuda-11-2
cuda-demo-suite-11-2
cuda
E: Sub-process /usr/bin/dpkg returned an error code (1)
很明顯絕對沒有安裝成功🤣,試過很多方法,也瘋狂安裝不同的driver+CUDA版本組合仍然報錯,最後看到這篇,可能是因為kernel版本太新導致的問題,因此嘗試將kenel downgrade(5.15 → 5.8.0),最後終於成功安裝CUDA! 😭
Kernel downgrade的方法請參考這篇,這邊就不贅述,另外內文中提到的Grub,進入Grub方式為: 開機時狂按 F4
。
(後來想想,可能安裝更高版本的CUDA就可以解決kernel過新的問題~)
添加環境變數
CUDA安裝好後還需要添加以下環境變數:1
sudo vim ~/.bashrc
.bashrc
:1
2
3## 改為自己的CUDA版本
export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
修改後執行並測試,若有出現CUDA資訊代表安裝成功囉!1
2source ~/.bashrc
nvcc -V

Step 3. 安裝cuDNN
cuDNN的安裝應該是最不會遇到問題的~ 只要把檔案丟對就ok了。
先到官網下載對應的版本,再follow官網文件的教學,基本上就大功告成啦!1
2
3
4tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
小小心得
其實一開始只是顯卡忘記插上電供🤣,不過有插到主機板上,讓系統還是有偵測到顯卡但 nvidia-smi
一直顯示 No devices were found.
,試了各種方法結果只是硬體問題。因為過程中東改西改,反而圖形介面改不回來,雖然driver和CUDA都裝好了,不過抱持著不將就的心態再重灌一次,順便從原本的18.04升到20.04,好死不死又出現kernel版本過高的問題,折騰了四五天,最終還是順利的把問題解決了🥺🎉 最後一次重灌也盡可能將流程簡化,能不改config就不改config,一行指令能解決的事就不要用兩行,往往問題都只是來自一個小小(且白癡)的因素~