在 WSL 中開始使用 ML 的 GPU 加速功能
機器學習 (ML) 正成為許多開發工作流程的關鍵部分。 無論您是資料科學家、ML 工程師,或是正要開始 ML 學習旅程,Windows 子系統 Linux 版 (WSL) 都可提供絕佳的環境,以執行最常見且熱門的 GPU 加速 ML 工具。
有很多不同的方式可設定這些工具。 例如,WSL 中的 NVIDIA CUDA、TensorFlow-DirectML 和 PyTorch-DirectML 全都提供不同的方式,讓您搭配 WSL 使用適用於 ML 的 GPU。 若要深入了解選擇不同方式的原因,請參閱 GPU 加速 ML 定型。
本指南將示範如何設定:
- 如果您有 NVIDIA 圖形卡並執行範例 ML 架構容器,則為 NVIDIA CUDA
- AMD、Intel 或 NVIDIA 顯示卡上的 TensorFlow-DirectML 和 PyTorch-DirectML
必要條件
- 確定您是執行 Windows 11 或 Windows 10 版本 21H2 或更高版本。
- 安裝 WSL 並為 Linux 發行版本設定使用者名稱和密碼。
使用 Docker 設定 NVIDIA CUDA
執行下列命令,安裝 Docker Desktop 或直接在 WSL 中安裝 Docker 引擎
curl https://get.docker.com | sh
sudo service docker start
如果您直接安裝 Docker 引擎,則遵循下列步驟安裝 NVIDIA Container Toolkit。
執行下列命令來設定 NVIDIA Container Toolkit 的穩定存放庫:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-keyring.gpg
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-docker-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
執行下列命令來安裝 NVIDIA 執行階段套件和相依性:
sudo apt-get update
sudo apt-get install -y nvidia-docker2
執行機器學習架構容器和範例。
若要執行機器學習架構容器,並開始使用 GPU 搭配此 NVIDIA NGC TensorFlow 容器,請輸入命令:
docker run --gpus all -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3
執行下列命令,即可執行內建於此容器的預先定型模型範例:
cd nvidia-examples/cnn/
python resnet.py --batch_size=64
如需取得設定和使用 NVIDIA CUDA 的其他方式,請參閱 WSL 上的 NVIDIA CUDA 使用者指南。
設定 TensorFlow-DirectML 或 PyTorch-DirectML
設定 Python 環境。
建議您設定虛擬 Python 環境。 有許多工具可用來設定虛擬 Python 環境,如需這些指示,我們將使用 Anaconda 的 Miniconda 。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create --name directml python=3.7 -y
conda activate directml
安裝您所選 DirectML 支援的機器學習架構。
TensorFlow-DirectML:
pip install tensorflow-directml
PyTorch-DirectML:
sudo apt install libblas3 libomp5 liblapack3
pip install pytorch-directml
在 TensorFlow-DirectML 或 PyTorch-DirectML 的互動式 Python 工作階段中執行快速新增範例,以確保一切正常運作。
如果您有疑問或遇到問題,請瀏覽 GitHub 上的 DirectML 存放庫。
多個 GPU
如果您的電腦上有多個 GPU,您也可以在 WSL 內加以存取。 不過,一次只能存取一個 GPU。 若要選擇特定的 GPU,請將下方的環境變數設定為 GPU 的名稱,如裝置管理員所示:
export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"
這會進行字串比對,因此如果您將其設定為 "NVIDIA",則會比對開頭為 "NVIDIA" 的第一個 GPU。