WSL 中 ML 的 GPU 加速入门

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

可通过多种不同的方法来设置这些工具。 例如,NVIDIA CUDA in WSLTensorFlow-DirectMLPyTorch-DirectML 都提供了将 GPU 用于 ML 和 WSL 的不同方式。 若要详细了解选择其中一个而不是另一个的原因,请参阅 GPU 加速 ML 训练

本指南介绍如何设置:

  • 如果你有 NVIDIA 图形卡并运行示例 ML 框架容器,则为 NVIDIA CUDA
  • 你的 AMD、Intel 或 NVIDIA 图形卡上的 TensorFlow-DirectML 和 PyTorch-DirectML

先决条件

使用 Docker 设置 NVIDIA CUDA

  1. 下载并安装适用于 NVIDIA GPU 的最新驱动程序

  2. 运行以下命令,直接在 WSL 中安装 Docker Desktop 或安装 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 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 在设备管理器中显示的名称:

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

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

其他资源