WSL2 支援 GPU CUDA 進行機器學習和深度學習加速運算
先至 https://developer.nvidia.com/cuda/wsl 進行下載 CUDA 驅動程式安裝
這一篇將會進一步說明 WSL2 有關 CUDA 的支援性的說明,首先來個小試身手,先從金融業鼎鼎大名 BlackScholes 的衍生性商品模組進行運算,先到該資料夾底下執行以下指令:
cd /mnt/c/Users/<username>/Desktop
cp /mnt/c/Users/<username>/Desktop/CUDA-Samples/BlackScholes .
./BlackScholes
如果可以見到以下畫面代表 CUDA 功能運行成功
以上沒問題,接下來將要來執行 GPU 在 Containers 運作功能,請先執行以下步驟:
Step 1: Install Docker
curl https://get.docker.com | sh
Step 2: Install NVIDIA Container Toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
若出現錯誤訊息,先到以下網址更新 Docker 相關軟件,更新完再執行一次上面的指令
Step 3:安裝 Nvidia 運行 docker 所需的組件
sudo apt-get updatesudo apt-get install -y nvidia-docker2
Step 4: Doctor 服務啟動
sudo service docker stopsudo service docker start
Step 5:進行 CUDA Containers 測試模組運行
先執行登入指令 【docker login nvcr.io】再執行以下指令 (需取得 KEY)
docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
Step 6:進行深度學習 TensorFlow Containers 測試模組運行
docker run --gpus all -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3
Step 7:進行 Jupyter notebook 測試模組運行
sudo docker run -it --gpus all -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter
如上執行程式後給的訊息,輸入Url (http://127.0.0.1:8888/notebooks/tensorflow-tutorials/classification.ipynb)後,會是一個jupyter執行程式,裡面有很多的tensorflow的機器學習模型應用,我隨意選一個圖形辨識的模型進行測試
Step 8:補充:建置 GPU 加速應用程式 CUDA toolkit (有問題時參考)
有個前提是假設你已經有安裝 WSL2 的 CUDA 驅動程式(Windows Driver,記得本文第一行https://developer.nvidia.com/cuda/wsl),如果上面的測試模型都很順利的話,就請不要安裝以下步驟,因為這可能會影響到 Nvidia 在 Linux 環境下的 CUDA 運行,總之,有問題再執行以下指令,請二選一您的環境安裝。
Using the WSL-Ubuntu Package
Launch WSL 2:
C:\> wsl
Install CUDA:
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
Using the Meta Package
If you installed the toolkit using the WSL-Ubuntu package, please skip this section. Meta packages do not contain the driver, so by following the steps below, you will be able to get just the CUDA toolkit installed on WSL.
Launch WSL 2:
C:\> wsl
Install CUDA:
wget 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.4.0/local_installers/cuda-repo-ubuntu2004-11-4-local_11.4.0-470.42.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-4-local_11.4.0-470.42.01-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-4-local/7fa2af80.pub
sudo apt-get update
Do not choose the “cuda”, “cuda-11-0”, or “cuda-drivers” meta-packages under WSL 2 as these packages will result in an attempt to install the Linux NVIDIA driver under WSL 2.
apt-get install -y cuda-toolkit-11-4
You can also install other components of the toolkit by choosing the right meta-package.
總記…這一、二天對 WSL2 的研究總算有點成果,並且撰寫成這二篇文章,小弟預祝各位使用順利!!!