Erste Schritte mit GPU-Beschleunigung für maschinelles Lernen in WSL

Maschinelles Lernen (Machine Learning, ML) wird zu einem wichtigen Bestandteil vieler Entwicklungsworkflows. Das Windows-Subsystem für Linux (WSL) eine hervorragende Umgebung zum Ausführen der gängigsten und beliebtesten GPU-beschleunigten ML-Tools und sowohl für wissenschaftliche Fachkräfte für Daten als auch für ML-Techniker*innen und für Personen geeignet, die gerade erst damit begonnen haben, sich mit maschinellem Lernen zu beschäftigen.

Diese Tools können auf viele verschiedene Arten eingerichtet werden. NVIDIA CUDA in WSL, TensorFlow-DirectML und PyTorch-DirectML bieten beispielsweise jeweils unterschiedliche Möglichkeiten, Ihre GPU für maschinelles Lernen mit WSL zu verwenden. Eine Entscheidungshilfe finden Sie unter GPU accelerated ML training.

In diesem Leitfaden erfahren Sie, wie Sie Folgendes einrichten:

  • NVIDIA CUDA, wenn Sie über eine NVIDIA-Grafikkarte verfügen und einen exemplarischen ML-Frameworkcontainer ausführen
  • TensorFlow-DirectML und PyTorch-DirectML für Ihre AMD-, Intel- oder NVIDIA-Grafikkarte

Voraussetzungen

Einrichten von NVIDIA CUDA mit Docker

  1. Laden Sie den neuesten Treiber für Ihre NVIDIA-GPU herunter, und installieren Sie ihn.

  2. Installieren Sie Docker Desktop, oder installieren Sie die Docker-Engine direkt in WSL, indem Sie den folgenden Befehl ausführen:

    curl https://get.docker.com | sh
    
    sudo service docker start
    
  3. Wenn Sie die Docker-Engine direkt installiert haben, installieren Sie das NVIDIA Container Toolkit:

    Richten Sie das stabile Repository für das NVIDIA Container Toolkit ein, indem Sie die folgenden Befehle ausführen:

    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
    

    Installieren Sie die NVIDIA-Runtimepakete und -Abhängigkeiten, indem Sie die folgenden Befehle ausführen:

    sudo apt-get update
    
    sudo apt-get install -y nvidia-docker2
    
  4. Führen Sie einen Machine Learning-Frameworkcontainer und ein Beispiel aus.

    Um einen Machine Learning-Frameworkcontainer auszuführen und Ihre GPU mit diesem NVIDIA-NGC-TensorFlow-Container zu verwenden, geben Sie den folgenden Befehl ein:

    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

    Sie können ein vortrainiertes Modellbeispiel ausführen, das in diesen Container integriert ist, indem Sie die folgenden Befehle ausführen:

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

    TensorFlow sample model training within Docker container

Weitere Möglichkeiten zur Einrichtung und Nutzung von NVIDIA CUDA finden Sie im Benutzerhandbuch zu NVIDIA CUDA in WSL.

Einrichten von TensorFlow-DirectML oder PyTorch-DirectML

  1. Laden Sie den neuesten Treiber von der Website Ihres GPU-Herstellers herunter, und installieren Sie ihn: AMD, Intel oder NVIDIA.

  2. Richten Sie eine Python-Umgebung ein.

    Es wird empfohlen, eine virtuelle Python-Umgebung einzurichten. Es gibt viele Tools, die Sie verwenden können, um eine virtuelle Python-Umgebung einzurichten. In dieser Anleitung wird miniconda von Anaconda verwendet.

    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. Installieren Sie das Machine Learning-Framework, das von DirectML Ihrer Wahl unterstützt wird.

    TensorFlow-DirectML:

    pip install tensorflow-directml
    

    PyTorch-DirectML:

    sudo apt install libblas3 libomp5 liblapack3
    
    pip install pytorch-directml
    
  4. Führen Sie ein schnelles Additionsbeispiel in einer interaktiven Python-Sitzung für TensorFlow-DirectML oder PyTorch-DirectML aus, um sich zu vergewissern, dass alles funktioniert.

Sollten Sie Fragen haben oder Probleme haben, besuchen Sie das DirectML-Repository auf GitHub.

Mehrere GPUs

Wenn Sie Ihr Computer über mehrere GPUs verfügt, können Sie auch innerhalb von WSL auf sie zugreifen. Sie können jedoch immer nur auf eine davon zugreifen. Um eine bestimmte GPU auszuwählen, legen Sie die folgende Umgebungsvariable auf den im Geräte-Manager angezeigten Namen Ihrer GPU fest:

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

Dadurch wird ein Zeichenfolgenabgleich durchgeführt. Wenn Sie sie also auf „NVIDIA“ festlegen, wird die erste GPU verwendet, die mit „NVIDIA“ beginnt.

Weitere Ressourcen