機器學習服務(ML)正成為許多開發工作流程的關鍵部分。 無論您是數據科學家、ML 工程師,還是開始使用 ML 學習旅程,Windows 子系統 Linux 版 (WSL) 都提供絕佳的環境,以執行最常見且熱門的 GPU 加速 ML 工具。
設定這些工具的方式有很多不同。 例如,WSL、TensorFlow-DirectML 和 PyTorch-DirectML中的 NVIDIA CUDA 都提供不同的方式,讓您搭配 WSL 使用 GPU for ML。 若要深入了解選擇一個與另一個的原因,請參閱 GPU 加速 ML 定型。
本指南將示範如何設定:
- 如果您有 NVIDIA 圖形卡並執行範例 ML 架構容器,則為 NVIDIA CUDA
- 在 AMD、Intel 或 NVIDIA 圖形卡片上 TensorFlow-DirectML 和 PyTorch-DirectML
先決條件
- 請確定您執行 的是 Windows 11 或 Windows 10 版本 21H2 或更高版本。
- 安裝 WSL 並設定 Linux 發行版的使用者名稱和密碼。
使用 Docker 設定 NVIDIA CUDA
執行下列命令,在 WSL 中安裝 Docker Desktop 或直接安裝 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
執行機器學習架構容器和範例。
若要執行機器學習架構容器,並開始使用此 NVIDIA NGC TensorFlow 容器使用 GPU,請輸入命令:
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 torch-directml
在 TensorFlow-DirectML 或 PyTorch-DirectML 的互動式 Python 會話中執行快速新增範例,以確保一切正常運作。
如果您有問題或遇到問題,請造訪 GitHub 上的 DirectML 存放庫。
多個 GPU
如果您的電腦上有多個 GPU,您也可以在 WSL 環境中使用它們。 不過,您一次只能存取一個。 若要選擇特定的 GPU,請將下方的環境變數設定為 GPU 的名稱,如設備管理員所示:
export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"
這會執行字串比對,因此如果您將其設定為 「NVIDIA」,則會比對開頭為 「NVIDIA」 的第一個 GPU。