Para o treinamento de redes neurais profundas (DNN) com o TensorFlow, o Azure Machine Learning fornece a classe de ferramentas de TensorFlow
definida pelo usuário do TensorFlow
Estimator
. A TensorFlow
avaliação do TensorFlow
no SDK do Azure (que não deve ser confundida com a classe tf.estimator.Estimator
) facilita o envio de trabalhos de treinamento do TensorFlow para execuções distribuídas e de nó único nos recursos de computação do Azure.

Treinamento em site único
O aprendizado com a TensorFlow
avaliação TensorFlow
semelhante ao uso Estimator
; portanto, primeiro leia o artigo de instruções e aprenda os conceitos.
Para concluir a tarefa TensorFlow, você deve criar um objeto TensorFlow
. Você já deveria ter criado o objeto compute_target
do recurso de computação de destino .
from azureml.train.dnn import TensorFlow script_params = { '--batch-size': 50, '--learning-rate': 0.01, } tf_est = TensorFlow(source_directory='./my-tf-proj', script_params=script_params, compute_target=compute_target, entry_script='train.py', conda_packages=['scikit-learn'], use_gpu=True)
Especifique os seguintes parâmetros no construtor TensorFlow.
Parâmetro | DESCRIÇÃO |
---|
source_directory | Um diretório local que contém todo o código necessário para concluir o treinamento. Esta pasta é copiada do computador local para o recurso de computação remota. |
script_params | Um dicionário que especifica argumentos da linha de comandos para o entry_script treinamento entry_script como pares <argumento da linha de comandos, valor>. |
compute_target | O destino de computação remota no qual o script de treinamento será executado. No nosso caso, este é um cluster do Ambiente de Computação do Machine Learning do Azure ( AmlCompute ). |
entry_script | O caminho para o arquivo (relativo ao source_directory ) do script de treinamento que será executado no recurso de computação remota. Este arquivo e os arquivos adicionais dos quais depende devem estar localizados nesta pasta. |
conda_packages | Uma lista de pacotes Python necessários para a instalação do script de treinamento usando o conda. Nesse caso, o script de treinamento usa o sklearn para baixar dados, portanto, você deve especificar este pacote para instalação. O parâmetro pip_packages do construtor pode ser usado para todos os pacotes de pip necessários. |
use_gpu | Defina esse sinalizador como True para usar a GPU para treinamento. O padrão é False . |
Como você está trabalhando com a ferramenta de avaliação TensorFlow, o contêiner usado para treinamento, por padrão, conterá o pacote TensorFlow e as dependências relacionadas necessárias para o treinamento na CPU e GPU.
Em seguida, envie o trabalho TensorFlow:
run = exp.submit(tf_est)
Treinamento distribuído
A ferramenta de avaliação do TensorFlow também permite treinar modelos nos clusters de CPU e GPU das máquinas virtuais do Azure. O treinamento distribuído do TensorFlow é fornecido por meio de várias chamadas de API, com o serviço Azure Machine Learning em segundo plano, gerenciando os recursos de infraestrutura e orquestração necessários para concluir essas cargas de trabalho.
Os Serviços de Aprendizado de Máquina do Azure oferecem suporte a dois métodos de aprendizado distribuído no TensorFlow.
Horovod
O Horovod é uma plataforma baseada em anel e redução baseada em aprendizado distribuído de código aberto desenvolvida pela Uber.
Para executar o treinamento distribuído do TensorFlow usando a plataforma Horovod, crie um objeto TensorFlow da seguinte maneira:
from azureml.train.dnn import TensorFlow tf_est = TensorFlow(source_directory='./my-tf-proj', script_params={}, compute_target=compute_target, entry_script='train.py', node_count=2, process_count_per_node=1, distributed_backend='mpi', use_gpu=True)
O código acima mostra as seguintes novas opções no construtor TensorFlow.
Parâmetro | DESCRIÇÃO | valor padrão |
---|
node_count | O número de nós a serem usados para a tarefa de treinamento. | 1 |
process_count_per_node | O número de processos (ou funções de trabalho) em execução em cada nó. | 1 |
distributed_backend | O lado do servidor para executar o aprendizado distribuído, oferecido pela ferramenta de avaliação MPI. Para executar um treinamento paralelo ou distribuído (por exemplo, node_count > 1 ou node_count > 1 ou ambos) usando MPI (e Horovod), defina distributed_backend='mpi' Azure Machine Learning usa a implementação MPI Open MPI . | None |
No exemplo acima, o treinamento distribuído será executado com duas funções de trabalho - uma para cada nó.
O Horovod e suas dependências serão instalados automaticamente, então você pode simplesmente importá-los para o train.py
treinamento train.py
seguinte maneira:
import tensorflow as tf import horovod
Por fim, envie seu trabalho do TensorFlow:
run = exp.submit(tf_est)
Servidor de Parâmetros
Você também pode iniciar seu próprio treinamento distribuído do TensorFlow que usa o modelo de servidor de parâmetros. Nesse método, o treinamento é realizado em um cluster de servidores de parâmetros e funções de trabalho. Durante o treinamento, as funções de trabalhador calculam gradientes e os servidores de parâmetros executam o processamento estatístico dos gradientes.
Crie um objeto TensorFlow:
from azureml.train.dnn import TensorFlow tf_est = TensorFlow(source_directory='./my-tf-proj', script_params={}, compute_target=compute_target, entry_script='train.py', node_count=2, worker_count=2, parameter_server_count=1, distributed_backend='ps', use_gpu=True)
Preste atenção aos seguintes parâmetros no construtor TensorFlow no código acima.
Parâmetro | DESCRIÇÃO | valor padrão |
---|
worker_count | O número de funções de trabalho. | 1 |
parameter_server_count | O número de servidores de parâmetros. | 1 |
distributed_backend | A parte do servidor que será usada para o treinamento distribuído.Para realizar o treinamento distribuído usando o servidor de parâmetros, defina o valor distributed_backend='ps' . | None |
Notas sobre TF_CONFIG
Você também precisará de endereços e portas de rede de cluster para tf.train.ClusterSpec
, para que o serviço Azure Machine Learning defina automaticamente a TF_CONFIG
ambiente TF_CONFIG
.
A TF_CONFIG
ambiente TF_CONFIG
é uma sequência JSON. A seguir, é apresentado um exemplo de variável para o servidor de parâmetros.
TF_CONFIG='{ "cluster": { "ps": ["host0:2222", "host1:2222"], "worker": ["host2:2222", "host3:2222", "host4:2222"], }, "task": {"type": "ps", "index": 0}, "environment": "cloud" }'
Se você usar a tf.estimator
alto nível tf.estimator
, o tf.estimator
analisará essa variável TF_CONFIG
e formará uma especificação de cluster.
Se você usar uma API de nível inferior para treinamento, precisará analisar a variável TF_CONFIG
e criar tf.train.ClusterSpec
no código de treinamento. Neste exemplo, essas ações são executadas em um script de treinamento da seguinte maneira:
import os, json import tensorflow as tf tf_config = os.environ.get('TF_CONFIG') if not tf_config or tf_config == "": raise ValueError("TF_CONFIG not found.") tf_config_json = json.loads(tf_config) cluster_spec = tf.train.ClusterSpec(cluster)
Após concluir o script de treinamento e criar o objeto TensorFlow, envie a tarefa de treinamento:
run = exp.submit(tf_est)
Exemplos
Para blocos de notas distribuídos de aprendizado profundo, consulte o repositório GitHub
Aprenda a executar blocos de anotações seguindo as instruções em um artigo sobre como aprender este serviço com os blocos de anotações Jupyter .
Informações Adicionais