Entrenamiento distribuido
Cuando sea posible, Azure Databricks recomienda entrenar redes neuronales en una sola máquina; el código distribuido para el entrenamiento y las inferencias es más complejo que el código de una sola máquina y es más lento debido a la sobrecarga en la comunicación. Sin embargo, debe considerar la inferencia y el entrenamiento distribuido si el modelo o los datos son demasiado grandes como para caber en la memoria de un solo equipo. Para estas cargas de trabajo, Databricks Runtime ML incluye los paquetes TorchDistributor, DeepSpeed Distributor y Ray.
Azure Databricks también ofrece entrenamiento distribuido para modelos de Spark ML con el módulopyspark.ml.connect
, consulte Entrenamiento de modelos de Spark ML en Databricks Connect con pyspark.ml.connect.
Nota:
Databricks no recomienda la ejecución del entrenamiento distribuido de varios nodos con máquinas virtuales de la serie NC debido a su bajo rendimiento de red entre nodos. En su lugar, use un nodo de varias GPU o un tamaño de máquina virtual de GPU distinto, como la serie NCasT4_v3, que admite redes aceleradas.
Distribuidor de DeepSpeed
El distribuidor DeepSpeed se basa en TorchDistributor y es una solución recomendada para los clientes con modelos que requieren una mayor potencia de proceso, pero están limitadas por restricciones de memoria. DeepSpeed es una biblioteca de código abierto desarrollada por Microsoft y ofrece un uso optimizado de memoria, una sobrecarga de comunicación reducida y paralelismo avanzado de canalización. Obtenga más información sobre el entrenamiento distribuido con DeepSpeed
TorchDistributor
TorchDistributor es un módulo de código abierto en PySpark que ayuda a los usuarios a hacer el entrenamiento distribuido con PyTorch en sus clústeres de Spark, por lo que permite iniciar trabajos de entrenamiento de PyTorch como trabajos de Spark. En segundo plano, inicializa el entorno y los canales de comunicación entre los trabajadores y utiliza el comando torch.distributed.run
de la CLI para ejecutar el entrenamiento distribuido en los nodos de trabajo. Obtenga más información sobre el entrenamiento distribuido con TorchDistributor.
Ray
Ray es un marco de trabajo de código abierto especializado en el procesamiento informático paralelo para escalar flujos de trabajo de ML y aplicaciones de IA. Vea ¿Qué es Ray en Azure Databricks?.