Prise en main de l’accélération GPU pour ML dans WSL

Le Machine Learning (ML) devient un élément clé de nombreux workflows de développement. Que vous soyez scientifique des données, ingénieur ML ou débutant votre parcours d’apprentissage avec ML, le Sous-système Windows pour Linux (WSL) offre un environnement idéal pour exécuter les outils DE ML accélérés par GPU les plus courants et les plus populaires.

Il existe de nombreuses façons de configurer ces outils. Par exemple, NVIDIA CUDA dans WSL, TensorFlow-DirectML et PyTorch-DirectML offrent toutes différentes façons d’utiliser votre GPU pour ML avec WSL. Pour en savoir plus sur les raisons de choisir l’un par rapport à l’autre, consultez Formation ML accélérée par GPU.

Ce guide montre comment configurer :

  • NVIDIA CUDA si vous disposez d’un carte graphiques NVIDIA et exécutez un exemple de conteneur d’infrastructure ML
  • TensorFlow-DirectML et PyTorch-DirectML sur vos carte graphiques AMD, Intel ou NVIDIA

Prérequis

Configuration de NVIDIA CUDA avec Docker

  1. Télécharger et installer le dernier pilote pour votre GPU NVIDIA

  2. Installer Docker Desktop ou installer le moteur Docker directement dans WSL en exécutant la commande suivante

    curl https://get.docker.com | sh
    
    sudo service docker start
    
  3. Si vous avez installé le moteur Docker directement , installez nvidia Container Toolkit en suivant les étapes ci-dessous.

    Configurer le référentiel stable pour NVIDIA Container Toolkit en exécutant les commandes suivantes :

    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
    

    Installer les packages et les dépendances du runtime NVIDIA en exécutant les commandes :

    sudo apt-get update
    
    sudo apt-get install -y nvidia-docker2
    
  4. Exécuter un conteneur et un exemple d’infrastructure Machine Learning.

    Pour exécuter un conteneur d’infrastructure Machine Learning et commencer à utiliser votre GPU avec ce conteneur NVIDIA NGC TensorFlow, entrer la commande :

    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

    Vous pouvez exécuter un exemple de modèle préentraîné intégré à ce conteneur en exécutant les commandes :

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

    TensorFlow sample model training within Docker container

Vous trouverez d’autres méthodes pour configurer et utiliser NVIDIA CUDA dans le Guide de l’utilisateur NVIDIA CUDA sur WSL.

Configuration de TensorFlow-DirectML ou de PyTorch-DirectML

  1. Téléchargez et installez le pilote le plus récent à partir du site web de vos fournisseurs GPU : AMD, Intel ou NVIDIA.

  2. Configurer un environnement Python.

    Nous vous recommandons de configurer un environnement Python virtuel. Il existe de nombreux outils que vous pouvez utiliser pour configurer un environnement Python virtuel. Dans le cadre de ces instructions, nous allons utiliser Miniconda d’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. Installez l’infrastructure de Machine Learning soutenue par DirectML de votre choix.

    TensorFlow-DirectML :

    pip install tensorflow-directml
    

    PyTorch-DirectML :

    sudo apt install libblas3 libomp5 liblapack3
    
    pip install pytorch-directml
    
  4. Exécutez un exemple d’ajout rapide dans une session Python interactive pour TensorFlow-DirectML ou PyTorch-DirectML pour vous assurer que tout fonctionne.

Si vous avez des questions ou rencontrez des problèmes, visitez le dépôt DirectML sur GitHub.

Plusieurs GPU

Si vous avez plusieurs GPU sur votre ordinateur, vous pouvez également y accéder à l’intérieur de WSL. Toutefois, vous ne pourrez accéder qu’un par un. Pour choisir un GPU spécifique, définissez la variable d’environnement ci-dessous sur le nom de votre GPU tel qu’il apparaît dans le gestionnaire d’appareils :

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

Cela fera une correspondance de chaîne. Par conséquent, si vous la définissez sur « NVIDIA », elle correspondra au premier GPU qui commence par « NVIDIA ».

Ressources supplémentaires