Condividi tramite


Introduzione all'accelerazione GPU per ML in WSL

Machine Learning (ML) sta diventando una parte fondamentale di molti flussi di lavoro di sviluppo. Sia che si sia un data scientist, un tecnico ml o un percorso di apprendimento con ML il sottosistema Windows per Linux (WSL) offre un ambiente ottimale per eseguire gli strumenti di Machine Learning con accelerazione GPU più comuni e diffusi.

Esistono molti modi diversi per configurare questi strumenti. Ad esempio, NVIDIA CUDA in WSL, TensorFlow-DirectML e PyTorch-DirectML offrono modi diversi per usare la GPU per ML con WSL. Per ulteriori informazioni sui motivi per scegliere l'uno piuttosto che l'altro, vedere il training di machine learning accelerato con GPU.

Questa guida illustra come configurare:

  • NVIDIA CUDA se si dispone di una scheda grafica NVIDIA ed eseguiate un contenitore di framework ML di esempio
  • TensorFlow-DirectML e PyTorch-DirectML nella scheda grafica AMD, Intel o NVIDIA

Prerequisiti

Configurare NVIDIA CUDA con Docker

  1. Scaricare e installare il driver più recente per la GPU NVIDIA

  2. Installare Docker Desktop o installare il motore Docker direttamente in WSL eseguendo il comando seguente

    curl https://get.docker.com | sh
    
    sudo service docker start
    
  3. Se il motore Docker è stato installato direttamente, installare NVIDIA Container Toolkit seguendo la procedura seguente.

    Configurare il repository stabile per NVIDIA Container Toolkit eseguendo i comandi seguenti:

    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
    

    Installare i pacchetti di runtime NVIDIA e le dipendenze eseguendo i comandi:

    sudo apt-get update
    
    sudo apt-get install -y nvidia-docker2
    
  4. Esegui un contenitore e un esempio di un framework di apprendimento automatico.

    Per eseguire un contenitore framework di Machine Learning e iniziare a usare la GPU con questo contenitore TensorFlow NVIDIA NGC, immettere il comando :

    docker run --gpus all -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3
    

    TensorFlow con CUDA in esecuzione all'interno di un contenitore Docker

    È possibile eseguire un esempio di modello con training preliminare integrato in questo contenitore eseguendo i comandi:

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

    Allenamento del modello di esempio di TensorFlow all'interno di un container Docker

Altri modi per configurare e usare NVIDIA CUDA sono disponibili nella Guida per l'utente di NVIDIA CUDA in WSL.

Configurare TensorFlow-DirectML o PyTorch-DirectML

  1. Scaricare e installare il driver più recente dal sito Web dei fornitori di GPU: AMD, Intel o NVIDIA.

  2. Configurare un ambiente Python.

    È consigliabile configurare un ambiente Python virtuale. Sono disponibili molti strumenti che è possibile usare per configurare un ambiente Python virtuale. Per queste istruzioni si userà miniconda di 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. Installare il framework di Machine Learning supportato da DirectML preferito.

    TensorFlow-DirectML:

    pip install tensorflow-directml
    

    PyTorch-DirectML:

    sudo apt install libblas3 libomp5 liblapack3
    
    pip install torch-directml
    
  4. Eseguire un esempio di aggiunta rapida in una sessione Interattiva di Python per TensorFlow-DirectML o PyTorch-DirectML per assicurarsi che tutto funzioni.

In caso di domande o problemi, visitare il repository DirectML su GitHub.

Più GPU

Se nel computer sono presenti più GPU, è anche possibile accedervi all'interno di WSL. Tuttavia, sarà possibile accedere solo uno alla volta. Per scegliere una GPU specifica, impostare la variabile di ambiente seguente sul nome della GPU visualizzata in Gestione dispositivi:

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

In questo modo verrà eseguita una corrispondenza di stringa, quindi se la si imposta su "NVIDIA" corrisponderà alla prima GPU che inizia con "NVIDIA".

Risorse aggiuntive