WSL 中 ML 的 GPU 加速入门

机器学习(ML)正成为许多开发工作流的关键部分。 无论你是数据科学家、ML 工程师还是开始使用 ML for Linux 的 Windows 子系统(WSL)开始学习之旅,都提供了一个运行最常见和常用的 GPU 加速 ML 工具的绝佳环境。

设置这些工具的方法有很多不同。 例如,WSL、TensorFlow-DirectMLPyTorch-DirectML中的 NVIDIA CUDA 都提供了将 GPU 用于 ML 和 WSL 的不同方式。 若要详细了解选择一个或另一个原因,请参阅 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 容器工具包

    通过运行以下命令为 NVIDIA 容器工具包设置稳定存储库:

    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,CUDA 在 Docker 容器中运行

    可以通过运行命令来运行内置在此容器中的预先训练的模型示例:

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

    Docker 容器中的 TensorFlow 示例模型训练

有关获取设置和使用 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 torch-directml
    
  4. TensorFlow-DirectMLPyTorch-DirectML 的交互式 Python 会话中运行快速添加示例,以确保一切正常运行。

如果有疑问或遇到困难,请访问 GitHub 上的 DirectML 存储库

多个 GPU

如果计算机上有多个 GPU,还可以在 WSL 内部访问它们。 但是,一次只能访问一个。 若要选择特定的 GPU,请将下面的环境变量设置为 GPU 的名称,因为它显示在设备管理器中:

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

这将进行字符串匹配,因此,如果将它设置为“NVIDIA”,它将匹配以“NVIDIA”开头的第一个 GPU。

其他资源