Introdução com aceleração de GPU para ML no WSL

O aprendizado de máquina (ML) está se tornando uma parte fundamental de muitos fluxos de trabalho de desenvolvimento. Seja um cientista de dados, ML engenheiro ou iniciando sua jornada de aprendizagem com ML o Subsistema do Windows para Linux (WSL) oferece um ótimo ambiente para executar as ferramentas de ML aceleradas de GPU mais comuns e populares.

Há muitas maneiras diferentes de configurar essas ferramentas. Por exemplo, NVIDIA CUDA no WSL, TensorFlow-DirectML e PyTorch-DirectML oferecem maneiras diferentes de usar sua GPU para ML com o WSL. Para saber mais sobre os motivos para escolher um contra outro, consulte o treinamento de ML acelerada da GPU.

Este guia mostrará como configurar:

  • NVIDIA CUDA se você tiver uma placa gráfica NVIDIA e executar um contêiner de estrutura de ML de exemplo
  • TensorFlow-DirectML e PyTorch-DirectML na placa gráfica AMD, Intel ou NVIDIA

Pré-requisitos

Configurando o NVIDIA CUDA com o Docker

  1. Baixar e instalar o driver mais recente para sua GPU NVIDIA

  2. Instalar o Docker Desktop ou instalar o mecanismo do Docker diretamente no WSL executando o comando a seguir

    curl https://get.docker.com | sh
    
  3. Se você instalou o mecanismo do Docker diretamente, instale o contêiner NVIDIA Toolkit seguindo as etapas abaixo.

    Configure o repositório estável para o contêiner NVIDIA Toolkit executando os seguintes comandos:

    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
    

    Instale os pacotes de runtime e as dependências do NVIDIA executando os comandos:

    sudo apt-get update
    
    sudo apt-get install -y nvidia-docker2
    
  4. Execute um contêiner e um exemplo de estrutura de machine learning.

    Para executar um contêiner de estrutura de machine learning e começar a usar sua GPU com este contêiner NVIDIA NGC TensorFlow, insira o comando:

    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

    Você pode executar um exemplo de modelo pré-treinado que é integrado a este contêiner executando os comandos:

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

    TensorFlow sample model training within Docker container

Outras maneiras de configurar e utilizar o NVIDIA CUDA podem ser encontradas no NVIDIA CUDA no Guia do Usuário do WSL.

Configurando TensorFlow-DirectML ou PyTorch-DirectML

  1. Baixe e instale o driver mais recente do site de fornecedores de GPU: AMD, Intel ou NVIDIA.

  2. Configurar um ambiente python.

    É recomendável configurar um ambiente virtual do Python. Há muitas ferramentas que você pode usar para configurar um ambiente virtual do Python. Para essas instruções, usaremos o Miniconda do 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. Instale a estrutura de machine learning com suporte do DirectML de sua escolha.

    TensorFlow-DirectML:

    pip install tensorflow-directml
    

    PyTorch-DirectML:

    sudo apt install libblas3 libomp5 liblapack3
    
    pip install pytorch-directml
    
  4. Execute um exemplo de adição rápida em uma sessão interativa do Python para TensorFlow-DirectML ou PyTorch-DirectML para garantir que tudo esteja funcionando.

Se você tiver dúvidas ou tiver problemas, visite o repositório DirectML no GitHub.

Recursos adicionais