Habilitar o TensorFlow com o DirectML no WSL

O Windows 11 e o Windows 10, versão 21H2, oferecem a estudantes, iniciantes e profissionais uma maneira de executar treinamento de aprendizado de máquina (ML) no hardware existente usando o pacote TensorFlow com DirectML para TensorFlow 1.15. Para usar o DirectML no TensorFlow 2, confira TensorFlow-DirectML-Plugin. Depois de configurado, você pode usar seus scripts de modelo existentes ou conferir alguns exemplos no repositório DirectML.

Instalar o Windows 11 ou Windows 10, versão 21H2

Para usar esses recursos, você pode baixar e instalar o Windows 11 ou o Windows 10, versão 21H2.

Instale o driver de GPU mais recente

Antes de instalar o pacote TensorFlow com DirectML dentro do WSL, você precisa instalar os drivers mais recentes do fornecedor de hardware da GPU. Esses drivers permitem que a GPU do Windows funcione com o WSL.

Selecione Verificar atualizações na seção do Windows Update do aplicativo de Configurações ou verifique o site do fornecedor de hardware da GPU.

AMD

Baixe e instale o driver da AMD em seu site. Essa funcionalidade é suportada no seguinte hardware:

  • Gráficos AMD Radeon™ série RX e Radeon™ VII.
  • Gráficos da série AMD Radeon™ Pro.
  • Processadores AMD Ryzen™ e Ryzen™ PRO com gráficos Radeon™ Vega.
  • Processadores móveis AMD Ryzen™ e Ryzen™ PRO com gráficos Radeon™ Vega.

Para obter uma lista completa de produtos AMD compatíveis, consulte as Notas de versão da AMD.

Intel

Baixe e instale o driver da Intel para usar com o DirectML em seu site.

NVIDIA

Baixe e instale o driver da NVIDIA para usar com o DirectML em seu site. Para obter mais informações, consulte a página GPU da NVIDIA no Subsistema do Windows para Linux (WSL).

Configurar o TensorFlow com DirectML

Instalar o WSL

Depois de instalar o driver acima, ative o WSL e instale uma distribuição baseada em glibc (como Ubuntu ou Debian). Para nossos testes, usamos o Ubuntu. Confira se você tem o kernel mais recente selecionando Verifique se há atualizações na seção Windows Update do aplicativo de Configurações.

Observação

Verifique se a opção Receber atualizações para outros produtos Microsoft está habilitada quando você atualizar o Windows. Essa opção pode ser encontrada em Opções avançadas na seção Windows Update do aplicativo de Configurações.

Para esses recursos, você precisa de uma versão do kernel 5.10.43.3 ou superior. Você pode verificar o número da versão executando o comando a seguir no PowerShell.

wsl cat /proc/version

Configurar um ambiente Python

É recomendável configurar um ambiente virtual Python em sua instância WSL. Há muitas ferramentas que você pode usar para configurar um ambiente virtual Python: para estas instruções, usaremos o Miniconda do Anaconda. O restante dessa configuração pressupõe que você use um ambiente Miniconda.

Instale o Miniconda seguindo as diretrizes do site do Anaconda ou executando os comandos a seguir no WSL.

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 
bash Miniconda3-latest-Linux-x86_64.sh 

Depois que o Miniconda estiver instalado no WSL, crie um ambiente usando Python chamado directml e ative-o por meio dos comandos a seguir.

Observação

Nos comandos abaixo, é usado o Python 3.6. No entanto, o pacote tensorflow-directml funciona em um ambiente Python 3.5, 3.6 ou 3.7.

conda create --name directml python=3.6 

conda activate directml 

Instalar o pacote do TensorFlow com DirectML

Instale o pacote TensorFlow com DirectML com pip executando o comando a seguir.

Observação

O pacote tensorflow-directml dá suporte apenas ao TensorFlow 1.15.

pip install tensorflow-directml

Depois de instalar o pacote tensorflow-directml, verifique se ele é executado corretamente adicionando dois tensores. Copie as linhas abaixo em uma sessão interativa do Python.

import tensorflow.compat.v1 as tf 

tf.enable_eager_execution(tf.ConfigProto(log_device_placement=True)) 

print(tf.add([1.0, 2.0], [3.0, 4.0])) 

Você deverá ver uma saída semelhante à abaixo, com o operador add posicionado no dispositivo DML.

2020-06-15 11:27:18.235973: I tensorflow/core/common_runtime/dml/dml_device_factory.cc:45] DirectML device enumeration: found 1 compatible adapters. 

2020-06-15 11:27:18.240065: I tensorflow/core/common_runtime/dml/dml_device_factory.cc:32] DirectML: creating device on adapter 0 (AMD Radeon VII) 

2020-06-15 11:27:18.323949: I tensorflow/stream_executor/platform/default/dso_loader.cc:60] Successfully opened dynamic library libdirectml.so.ba106a7c621ea741d21598708ee581c11918380 

2020-06-15 11:27:18.337830: I tensorflow/core/common_runtime/eager/execute.cc:571] Executing op Add in device /job:localhost/replica:0/task:0/device:DML:0 

tf.Tensor([4. 6.], shape=(2,), dtype=float32) 

TensorFlow com exemplos e comentários de DirectML

Confira nossos exemplos ou use seus scripts de modelo existentes. Se você tiver problemas ou comentários a fazer sobre o pacote TensorFlow com DirectML, entre em contato com nossa equipe.