Erste Schritte mit GPU-Beschleunigung für ML in WSL

Maschinelles Lernen (ML) wird zu einem wichtigen Bestandteil vieler Entwicklungsworkflows. Ganz gleich, ob Sie Datenwissenschaftler, ML Techniker sind oder ihre Lernreise mit ML der Windows-Subsystem für Linux (WSL) starten, bietet eine großartige Umgebung, um die am häufigsten verwendeten und beliebtesten GPU ML-Tools auszuführen.

Es gibt viele verschiedene Möglichkeiten, diese Tools einzurichten. Beispielsweise bieten NVIDIA CUDA in WSL, TensorFlow-DirectML und PyTorch-DirectML verschiedene Möglichkeiten, wie Sie Ihre GPU für ML mit WSL verwenden können. Weitere Informationen zu den Gründen für die Auswahl eines gegenüber einem anderen finden Sie unter GPU beschleunigte ML Schulung.

In diesem Leitfaden wird gezeigt, wie Sie folgendes einrichten:

  • NVIDIA CUDA, wenn Sie über eine NVIDIA-Grafikkarte verfügen und ein Beispiel ML Frameworkcontainer ausführen
  • TensorFlow-DirectML und PyTorch-DirectML auf Ihrer 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 sie.

  2. Installieren von Docker Desktop oder installieren Sie das Docker-Modul direkt in WSL, indem Sie den folgenden Befehl ausführen

    curl https://get.docker.com | sh
    
  3. Wenn Sie das Docker-Modul direkt installiert haben, installieren Sie das NVIDIA Container Toolkit , indem Sie die folgenden Schritte ausführen.

    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 apt-key add -
    
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    

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

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

    Um einen Machine Learning Framework-Container auszuführen und mit der Verwendung Ihrer GPU mit diesem NVIDIA NGC TensorFlow-Container zu beginnen, geben Sie den 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 vorab trainiertes Modellbeispiel ausführen, das in diesen Container integriert ist, indem Sie die Befehle ausführen:

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

    TensorFlow sample model training within Docker container

Weitere Möglichkeiten zum Einrichten und Nutzen von NVIDIA CUDA finden Sie im NVIDIA CUDA auf WSL-Benutzerhandbuch.

Einrichten TensorFlow-DirectML oder PyTorch-DirectML

  1. Laden Sie den neuesten Treiber von Ihrer GPU-Anbieter-Website herunter und installieren Sie sie: AMD, Intel oder NVIDIA.

  2. Einrichten einer Python-Umgebung.

    Es wird empfohlen, eine virtuelle Python-Umgebung einzurichten. Es gibt viele Tools, mit denen Sie eine virtuelle Python-Umgebung einrichten können – für diese Anweisungen verwenden wir die Miniconda von Anaconda.

    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 Beispiel für eine interaktive Python-Sitzung für TensorFlow-DirectML oder PyTorch-DirectML aus, um sicherzustellen, dass alles funktioniert.

Wenn Sie Fragen haben oder Probleme auftreten, besuchen Sie das DirectML-Repo zu GitHub.

Weitere Ressourcen