在 WSL 中開始使用 ML 的 GPU 加速功能

機器學習 (ML) 正成為許多開發工作流程的關鍵部分。 無論您是資料科學家、ML 工程師,或是正要開始 ML 學習旅程,Windows 子系統 Linux 版 (WSL) 都可提供絕佳的環境,以執行最常見且熱門的 GPU 加速 ML 工具。

有很多不同的方式可設定這些工具。 例如,WSL 中的 NVIDIA CUDATensorFlow-DirectMLPyTorch-DirectML 全都提供不同的方式,讓您搭配 WSL 使用適用於 ML 的 GPU。 若要深入了解選擇不同方式的原因,請參閱 GPU 加速 ML 定型

本指南將示範如何設定:

  • 如果您有 NVIDIA 圖形卡並執行範例 ML 架構容器,則為 NVIDIA CUDA
  • AMD、Intel 或 NVIDIA 顯示卡上的 TensorFlow-DirectML 和 PyTorch-DirectML

必要條件

使用 Docker 設定 NVIDIA CUDA

  1. 下載並安裝適用於 NVIDIA GPU 的最新驅動程式

  2. 執行下列命令,安裝 Docker Desktop 或直接在 WSL 中安裝 Docker 引擎

    curl https://get.docker.com | sh
    
    sudo service docker start
    
  3. 如果您直接安裝 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
    
  4. 執行機器學習架構容器和範例。

    若要執行機器學習架構容器,並開始使用 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
    

    TensorFlow with CUDA running inside a Docker container

    執行下列命令,即可執行內建於此容器的預先定型模型範例:

    cd nvidia-examples/cnn/
    
    python resnet.py --batch_size=64
    

    TensorFlow sample model training within Docker container

如需取得設定和使用 NVIDIA CUDA 的其他方式,請參閱 WSL 上的 NVIDIA CUDA 使用者指南

設定 TensorFlow-DirectML 或 PyTorch-DirectML

  1. 從 GPU 廠商網站下載並安裝最新的驅動程式:AMDIntelNVIDIA

  2. 設定 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
    
  3. 安裝您所選 DirectML 支援的機器學習架構。

    TensorFlow-DirectML:

    pip install tensorflow-directml
    

    PyTorch-DirectML:

    sudo apt install libblas3 libomp5 liblapack3
    
    pip install pytorch-directml
    
  4. TensorFlow-DirectMLPyTorch-DirectML 的互動式 Python 工作階段中執行快速新增範例,以確保一切正常運作。

如果您有疑問或遇到問題,請瀏覽 GitHub 上的 DirectML 存放庫

多個 GPU

如果您的電腦上有多個 GPU,您也可以在 WSL 內加以存取。 不過,一次只能存取一個 GPU。 若要選擇特定的 GPU,請將下方的環境變數設定為 GPU 的名稱,如裝置管理員所示:

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

這會進行字串比對,因此如果您將其設定為 "NVIDIA",則會比對開頭為 "NVIDIA" 的第一個 GPU。

其他資源