Formação distribuída com o Azure Machine Learning

Concluído

Você pode economizar tempo usando o treinamento distribuído no Azure Machine Learning.

Para treinar um modelo de aprendizado profundo que reconhece texto manuscrito, você pode usar um cluster de computação GPU. Como você trabalha para uma companhia de seguros, a demanda por um modelo altamente preciso é forte. Você deseja treinar com um grande conjunto de dados para melhorar o desempenho do modelo. Os clusters de GPU disponíveis não oferecem o desempenho de que você precisa, então você está interessado em explorar se o treinamento distribuído irá ajudá-lo.

Você aprenderá a usar o treinamento distribuído com o Azure Machine Learning.

Preparação distribuída

Muitas bibliotecas de ciência de dados são projetadas para usar uma única máquina ao processar dados. Uma máquina também é referida como um nó. Embora a computação de nó único seja suficiente em muitos casos de uso, o processamento de dados em paralelo pode economizar tempo de computação.

Para processar dados em paralelo, você pode dividir partes do trabalho e processá-las em paralelo em:

  • Várias GPUs (multi-GPU) dentro de um nó.
  • Várias máquinas ou nós (multi-nós).

Para a maioria dos casos de uso, usar várias GPUs é suficiente e mais fácil do que usar vários nós.

Existem duas abordagens principais para o que pode ser dividido:

  • Paralelismo de dados: divide seu conjunto de dados. Cada nó treina um modelo em um subconjunto do conjunto de dados. Mais comumente usado.
  • Paralelismo do modelo: divide o modelo. Cada nó treina parte do modelo. Só é possível para determinados algoritmos e é mais complexo de configurar, pois você terá que fixar camadas em um nó específico.

Atenção

O treinamento distribuído pode acelerar o tempo de treinamento, mas muitas vezes cria mais sobrecarga e complexidade. O treinamento distribuído pode ser benéfico para modelos de grande escala, mas deve ser executado com cuidado.

O Aprendizado de Máquina do Azure dá suporte a muitas estruturas que ajudam você a configurar o treinamento distribuído de várias GPUs e/ou vários nós. Ao lado de recursos dentro da biblioteca PyTorch e TensorFlow para habilitar o treinamento distribuído. Existem duas outras estruturas que são comumente usadas:

  • Horovod: Concentra-se no gerenciamento de infraestrutura para executar treinamento distribuído de modelos de aprendizado profundo com paralelismo de dados. Também usado para paralelismo de modelo, que precisa ser configurado com PyTorch, TensorFlow ou Keras.
  • DeepSpeed: Permite paralelismo de dados e modelos, bem como paralelismo 3D (paralelismo de dados, paralelismo de modelo e paralelismo de pipeline) com o Otimizador de Redundância Zero (ZeRO). Inclui uma ampla gama de recursos de treinamento distribuídos para atender melhor às suas necessidades.

Gorjeta

Exemplos de treinamento distribuído no Azure Machine Learning podem ser encontrados no Github. Por exemplo, explore o exemplo do treinamento distribuído do TensorFlow usando o Horovod, ou do treinamento distribuído com o PyTorch.