Treinamento distribuído
Quando possível, o Azure Databricks recomenda que você treine redes neurais em um único computador; o código distribuído para treinamento e inferência é mais complexo do que o código de uma única máquina e mais lento devido à sobrecarga de comunicação. No entanto, você deve considerar o treinamento distribuído e a inferência se seu modelo ou seus dados forem muito grandes para caber na memória em um único computador. Para essas cargas de trabalho, o Databricks Runtime ML inclui os pacotes TorchDistributor, DeepSpeed distributor e Ray.
O Azure Databricks também oferece treinamento distribuído para modelos Spark ML com o módulo pyspark.ml.connect
, consulte Treinar modelos do Spark ML no Databricks Connect com pyspark.ml.connect.
Observação
O Databricks não recomenda executar o treinamento distribuído de vários nós usando VMs da série NC devido ao baixo desempenho de rede entre nós. Em vez disso, use um nó de várias GPU ou outro tamanho de VM de GPU, como a série NCasT4_v3, que dá suporte à rede acelerada.
Distribuidor DeepSpeed
O distribuidor DeepSpeed é construído sobre o TorchDistributor e é uma solução recomendada para clientes com modelos que exigem maior poder de computação, mas são limitados por restrições de memória. A DeepSpeed é uma biblioteca de código aberto desenvolvida pela Microsoft e oferece uso otimizado de memória, sobrecarga de comunicação reduzida e paralelismo de pipeline avançado. Saiba mais sobre o Treinamento distribuído com o distribuidor DeepSpeed
TorchDistributor
O TorchDistributor é um módulo de software livre no PySpark que ajuda o treinamento distribuído com o PyTorch em seus clusters Spark. Com ele, você pode iniciar trabalhos de treinamento do PyTorch como trabalhos do Spark. Em segundo plano, ele inicializa o ambiente e os canais de comunicação entre os trabalhadores e utiliza o comando torch.distributed.run
da CLI para executar o treinamento distribuído entre os nós de trabalho. Saiba mais sobre o treinamento distribuído com o TorchDistributor.
Ray
Ray é uma estrutura de código aberto especializada em processamento de computação paralelo para escalar fluxos de trabalho de ML e aplicativos de IA. Consulte O que é o Ray no Azure Databricks?.