Freigeben über


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

Machine Learning (ML) wird zu einem wichtigen Bestandteil vieler Entwicklungsworkflows. Ganz gleich, ob Sie Datenwissenschaftler, ML-Ingenieur sind oder Ihre Lernreise mit ML beginnen, das Windows-Subsystem für Linux (WSL) bietet eine großartige Umgebung, um die am häufigsten verwendeten und beliebtesten GPU-beschleunigten ML-Tools auszuführen.

Es gibt viele verschiedene Möglichkeiten zum Einrichten dieser Tools. 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. Um mehr über die Gründe zu erfahren, warum man sich für die eine oder die andere Option entscheidet, siehe GPU-beschleunigtes ML-Training.

In diesem Handbuch wird gezeigt, wie Sie Folgendes einrichten:

  • NVIDIA CUDA, wenn Sie über eine NVIDIA-Grafikkarte verfügen und einen Ml-Framework-Beispielcontainer 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 Sie Docker Desktop , oder installieren Sie das Docker-Modul direkt in WSL, indem Sie den folgenden Befehl ausführen.

    curl https://get.docker.com | sh
    
    sudo service docker start
    
  3. Wenn Sie das Docker-Modul direkt installiert haben, installieren Sie das NVIDIA Container Toolkit mit den folgenden Schritten.

    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-Laufzeitpakete 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 mit CUDA, das in einem Docker-Container ausgeführt wird

    Sie können ein vordefiniertes 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-Beispielmodellschulung im Docker-Container

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

Einrichten von 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 torch-directml
    
  4. Führen Sie ein Beispiel für schnelle Ergänzungen in einer interaktiven Python-Sitzung für TensorFlow-DirectML oder PyTorch-DirectML aus, um sicherzustellen, dass alles funktioniert.

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

Mehrere GPUs

Wenn Sie über mehrere GPUs auf Ihrem Computer verfügen, können Sie auch innerhalb von WSL darauf zugreifen. Sie können jedoch nur einzeln darauf zugreifen. Um eine bestimmte GPU auszuwählen, legen Sie die Umgebungsvariable unten auf den Namen Ihrer GPU fest, wie sie im Geräte-Manager angezeigt wird:

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

Dadurch wird eine Zeichenfolgen-Übereinstimmung ausgeführt. Wenn Sie sie auf "NVIDIA" festlegen, entspricht sie der ersten GPU, die mit "NVIDIA" beginnt.

Zusätzliche Ressourcen