在Docker調用GPU

在Docker調用GPU

1.環境安裝

  • 安裝驅動

如果不知道安裝那個驅動比較好,推薦是最適合的選擇。以下輸出是教學電腦的結果,不同的電腦可能會看到不同的輸出,具體取決於系統。

ubuntu-drivers devices

通常,最好安裝推薦的驅動程序,當你決定使用驅動程式版本後請使用 apt 軟件包管理器安裝英偉達顯卡驅動 nvidia-driver-530。

安裝完成後,然後在終端運行命令 sudo reboot 重啟系統。當返回到系統時,您可以在終端再次運行命令 nvidia-smi 啟動監視工具查看圖形卡/顯卡的狀態。

nvidia-smi 命令將顯示所用驅動程序的版本以及有關NVIDIA顯卡的其它訊息。

sudo apt install nvidia-driver-530
sudo reboot
nvidia-smi

有Nvidia顯示卡的筆電安裝顯示卡驅動的方式跟桌上型電腦一樣。

不過,Intel+Nvidia的雙GPU筆電,即使裝了Nvidia驅動也可能繼續用Intel的GPU渲染3D,導致3D性能低下。

此時可以使用prime-select指令,指定用Nvidia顯示卡負責渲染作業。

sudo prime-select nvidia
  • 安裝CUDA

CUDA (Compute Unified Device Architecture),在做深度學習、Blender渲染時常用到的技術。

本文撰寫時點CUDA最新版本為12.1。

加入Ubuntu 22.04的Nvidia官方PPA,裡面含有各種CUDA版本

os=ubuntu2204
arch=x86_64
wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$arch/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb

安裝最新的CUDA 12.1,重開機。

sudo apt update
sudo apt-get install cuda
# 或是 sudo apt-get install cuda-12-1

nvcc --version指令確認CUDA版本

如果顯示Command nvcc not found,則將路徑加入至~/.bashrc

export PATH=/usr/local/cuda-12/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

再嘗試檢查一次版本

source ~/.bashrc
nvcc --version
  • 安裝cuDNN

CUDA Deep Neural Network (cuDNN)

安裝cuDNN前務必檢查CUDA版本是否正確。

加入Ubuntu 22.04的Nvidia官方PPA

OS=ubuntu2204
wget https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/cuda-${OS}.pin 
sudo mv cuda-${OS}.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/ /"
sudo apt-get update

安裝libfreeimage

sudo apt install libfreeimage-dev

安裝cuDNN執行時與範本。libcudnn8後面的數字應為cuda12.0cuda11.8

# 如果找不到套件請用apt search libcudnn8查找其確切版本號碼

# CUDA 12.0
sudo apt-get install libcudnn8=8.8.0.121_1.0-1+cuda12.0
sudo apt-get install libcudnn8-dev=8.8.0.121-1+cuda12.0

# CUDA 11.8
sudo apt-get install libcudnn8=8.8.0.121_1-1+cuda11.8
sudo apt-get install libcudnn8-dev=8.8.0.121-1+cuda11.8

編譯執行官方範本,測試cuDNN安裝是否成功

cp -r /usr/src/cudnn_samples_v8/ $HOME
cd  $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN

看到Test passed!代表安裝成功。

  • 安裝TensorRT

TensorRT是Nvidia推出的深度學習推理平台。

TensorRT目前還沒有PPA可以直接用,必須註冊Nvidia帳號下載匯入。

Nvidia官網註冊帳號,登入,勾選同意授權條款,點選Ubuntu 22.04的deb檔下載

安裝TensorRT

sudo dpkg -i nv-tensorrt-local-repo-ubuntu2204-8.5.2-cuda-11.8_1.0-1_amd64.deb
sudo cp /var/nv-tensorrt-local-repo-ubuntu2204-8.5.2-cuda-11.8/nv-tensorrt-local-A4462430-keyring.gpg /usr/share/keyrings/

sudo apt-get update
sudo apt-get install tensorrt

安裝NVIDIA Container Toolkit

設計給Docker容器用的Nvidia工具。

先安裝Docker

加入Nvidia的儲存庫,distribution的值是從os-release抓的,應為ubuntu2204

#設定變數

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

#安裝公鑰
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

#取得list

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

安裝NVIDIA Container Toolkit

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

向Docker註冊Nvidia裝置

sudo nvidia-ctk runtime configure –runtime=docker

重新啟動Docker

sudo systemctl restart docker

測試是否正確安裝,應該會印出Nvidia顯示卡的資訊。

sudo docker run --gpus all --rm nvidia/cuda:11.0.3-base nvidia-smi

如果想要在Compose配置中啟用跟配置GPU可以參考官方文檔:

https://dockerdocs.cn/compose/gpu-support/

Comments

No comments yet. Why don’t you start the discussion?

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *