Partager via


Commencez avec l'accélération GPU pour l'apprentissage automatique dans WSL

Le Machine Learning (ML) devient une partie essentielle de nombreux flux de travail de développement. Qu’il s’agisse d’un scientifique des données, d’un ingénieur ML ou de votre parcours d’apprentissage avec ML, le sous-système Windows pour Linux (WSL) offre un environnement idéal pour exécuter les outils 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 l’entraînement ML accéléré par GPU.

Ce guide montre comment configurer :

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

Conditions préalables

Configurer NVIDIA CUDA avec Docker

  1. Télécharger et installer le pilote le plus récent pour votre GPU NVIDIA

  2. Installez Docker Desktop ou installez 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.

    Configurez 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
    

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

    sudo apt-get update
    sudo apt-get install -y nvidia-docker2
    
  4. Exécutez un conteneur et un échantillon de cadre d'apprentissage automatique.

    Pour exécuter un conteneur d’infrastructure Machine Learning et commencer à utiliser votre GPU avec ce conteneur TensorFlow NVIDIA NGC, entrez 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 avec CUDA exécuté à l’intérieur d’un conteneur Docker

    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
    

    Exemple de formation de modèle TensorFlow dans un conteneur Docker

Vous trouverez d’autres façons d’installer et d’utiliser NVIDIA CUDA dans le Guide de l’utilisateur NVIDIA CUDA sur WSL.

Configurer TensorFlow-DirectML ou PyTorch-DirectML

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

  2. Configurez 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. Pour 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 Machine Learning soutenue par DirectML de votre choix.

    TensorFlow-DirectML :

    pip install tensorflow-directml
    

    PyTorch-DirectML :

    sudo apt install libblas3 libomp5 liblapack3
    pip install torch-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 seul à la fois. 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>"

Cette opération effectue une correspondance de chaîne. Par conséquent, si vous la définissez sur « NVIDIA », elle correspond au premier GPU qui commence par « NVIDIA ».

Ressources additionnelles