Preparação distribuída
Sempre que possível, o Azure Databricks recomenda que prepare as redes neurais numa única máquina; o código distribuído para a preparação e a inferência é mais complexo do que o código de máquina individual e mais lento devido à sobrecarga de comunicação. No entanto, se o modelo ou os dados forem demasiado grandes e não couberem na memória de uma só máquina, deve ponderar utilizar a preparação distribuída e a inferência. Para essas cargas de trabalho, o Databricks Runtime ML inclui os pacotes TorchDistributor, DeepSpeed e Ray.
O Azure Databricks também oferece treinamento distribuído para modelos Spark ML com o pyspark.ml.connect
módulo, consulte Train Spark ML models on Databricks Connect with pyspark.ml.connect.
Nota
O Databricks não recomenda a execução de treinamento distribuído de vários nós usando VMs da série NC devido ao baixo desempenho da rede entre nós. Em vez disso, use um nó multi-GPU ou use um tamanho de VM de GPU diferente, como a série NCasT4_v3, que suporta 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. O 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
TorchDistribuidor
TorchDistributor é um módulo de código aberto no PySpark que ajuda os usuários a fazer treinamento distribuído com o PyTorch em seus clusters Spark, então ele permite que você inicie trabalhos de treinamento do PyTorch como trabalhos do Spark. Sob o capô, ele inicializa o ambiente e os canais de comunicação entre os trabalhadores e utiliza o comando torch.distributed.run
CLI para executar treinamento distribuído entre os nós de trabalho. Saiba mais sobre o treinamento distribuído com TorchDistributor.
Raio
O Ray é uma estrutura de código aberto especializada em processamento de computação paralela para dimensionar fluxos de trabalho de ML e aplicativos de IA. Consulte O que é o Ray no Azure Databricks?.