Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste artigo, você aprenderá sobre o treinamento distribuído e como o Azure Machine Learning o oferece suporte para modelos de aprendizado profundo.
No treino distribuído, divide-se a carga de trabalho para treinar um modelo e partilhá-lo entre vários mini processadores, chamados nós de trabalho. Esses nós de trabalho trabalham em paralelo para acelerar o treinamento do modelo. Pode usar treino distribuído para modelos tradicionais de machine learning, mas é mais adequado para tarefas de computação e que consomem muito tempo, como deep learning para treinar redes neurais profundas.
Aprendizagem profunda e formação distribuída
Existem dois tipos principais de treinamento distribuído: paralelismo de dados e paralelismo de modelo. Para treinamento distribuído em modelos de aprendizado profundo, o SDK do Azure Machine Learning em Python dá suporte a integrações com PyTorch e TensorFlow. Ambos são estruturas populares que empregam paralelismo de dados para treinamento distribuído e podem usar o Horovod para otimizar as velocidades de computação.
Para modelos de aprendizado de máquina que não exigem treinamento distribuído, consulte Treinar modelos com o Azure Machine Learning para diferentes maneiras de treinar modelos usando o SDK do Python.
Paralelismo de dados
O paralelismo de dados é o mais fácil de implementar das duas abordagens de treinamento distribuído e é suficiente para a maioria dos casos de uso.
Nesta abordagem, divide-se os dados em partições, onde o número de partições é igual ao número total de nós disponíveis no cluster de computação ou computação serverless. O modelo é copiado em cada um destes nós de trabalho, e cada nó opera sobre o seu próprio subconjunto de dados. Tenha em mente que cada nó deve ter a capacidade de suportar o modelo que está a ser treinado, ou seja, todo o modelo tem de caber em cada nó.
O diagrama seguinte mostra esta abordagem.
Cada nó calcula independentemente os erros entre suas previsões para suas amostras de treinamento e as saídas rotuladas. Por sua vez, cada nó atualiza seu modelo com base nos erros e deve comunicar todas as suas alterações aos outros nós para atualizar seus modelos correspondentes. Os nós de trabalho precisam sincronizar os parâmetros do modelo, ou gradientes, no final da computação em lote para garantir que estão treinando um modelo consistente.
Paralelismo do modelo
No paralelismo de modelos, também conhecido como paralelismo de rede, segmenta-se o modelo em diferentes partes que correm simultaneamente em diferentes nós. Cada peça funciona com os mesmos dados. A escalabilidade deste método depende do grau de paralelização da tarefa do algoritmo. É mais complexo de implementar do que o paralelismo de dados.
No paralelismo de modelo, os nós de trabalho só precisam sincronizar os parâmetros compartilhados, geralmente uma vez para cada etapa de propagação para frente ou para trás. Além disso, modelos maiores não são uma preocupação, já que cada nó opera em uma subseção do modelo nos mesmos dados de treinamento.