¿Qué es Ray en Azure Databricks?
Ray es un marco de código abierto para escalar aplicaciones de Python. Incluye bibliotecas específicas de las cargas de trabajo de IA, por lo que es especialmente adecuado para desarrollar aplicaciones de IA. Ray en Azure Databricks le permite ejecutar aplicaciones de Ray mientras obtiene todas las ventajas y características de la plataforma de Azure Databricks.
Con Ray 2.3.0 y versiones posteriores, puede crear clústeres de Ray y ejecutar aplicaciones de Ray en clústeres de Apache Spark con Azure Databricks.
Para obtener información sobre cómo empezar a trabajar con el aprendizaje automático en Ray, incluidos tutoriales y ejemplos, consulte la documentación de Ray Para más información sobre la integración de Ray y Apache Spark, consulte la documentación de la API de Ray en Spark.
¿Qué es Ray?
Ray simplifica los sistemas distribuidos proporcionando primitivos básicos de Python para crear aplicaciones distribuidas desde cero. Para los desarrolladores de Python nuevos en sistemas distribuidos, ofrece la misma facilidad de uso que Python estándar al administrar la orquestación, la programación y la tolerancia a errores.
Ray y Apache Spark son marcos complementarios. Ray destaca en paralelismo lógico, control de tareas dinámicas y de proceso intensivo, como el aprendizaje automático y el aprendizaje de refuerzo. Apache Spark se especializa en paralelismo de datos, procesando de forma eficaz grandes conjuntos de datos para tareas como ETL y análisis de datos. Juntos, proporcionan una combinación eficaz para el procesamiento de datos y el cálculo complejo.
¿Por qué ejecutar Ray en Azure Databricks?
La ejecución de Ray en Azure Databricks permite aprovechar la amplitud del ecosistema de Azure Databricks, lo que mejora el procesamiento de datos y los flujos de trabajo de aprendizaje automático con servicios e integraciones que no están disponibles en el código abierto de Ray. Entre las ventajas de ejecutar Ray en Azure Databricks se incluyen las siguientes:
- Plataforma unificada: Azure Databricks proporciona una plataforma unificada donde puede ejecutar aplicaciones de Ray junto con Apache Spark. Esta integración admite operaciones ETL de datos sin problemas, transferencia de datos eficientes y computación paralela eficaz dentro del mismo entorno de proceso.
- Gobernanza y control: obtenga las ventajas del seguimiento de linaje, el control de versiones de datos y el control de acceso con Unity Catalog para todos los recursos de datos, archivos, modelos, etc., lo que garantiza el cumplimiento y la seguridad.
- Administración de infraestructuras: use herramientas de infraestructura como Azure Databricks Terraform Provider y Azure Databricks Asset Bundles para administrar los clústeres y los trabajos, lo que garantiza operaciones simplificadas y escalabilidad.
- Clústeres de Ray administrados: los clústeres de Ray se administran en el mismo entorno de ejecución que un clúster de Apache Spark en ejecución. Esto garantiza la escalabilidad, la confiabilidad y la facilidad de uso sin necesidad de una configuración compleja de la infraestructura.
- Servicio de modelos y supervisión: conecte modelos entrenados con Ray Train a Mosaic AI Model Serving para implementaciones de alta disponibilidad y baja latencia. Además, use la supervisión de almacén de lago para realizar un seguimiento de la calidad y el desfase de la predicción del modelo, lo que garantiza un rendimiento coherente.
- Desarrollo mejorado de ML: integre con el servicio MLflow de Azure Databricks totalmente administrado para realizar un seguimiento del desarrollo del modelo, lo que facilita la administración y reproducibilidad de experimentos en las aplicaciones de Ray.
- Flujos de trabajo automatizados: use trabajos de Databricks para automatizar los procesos, creando canalizaciones listas para producción que optimicen las operaciones y reduzcan la intervención manual.
- Administración de código y colaboración: administre el código de forma eficaz con las carpetas de Git de Azure Databricks, lo que permite la integración de Git sin problemas para el control de versiones y el desarrollo colaborativo del código de la aplicación de Ray.
- Acceso eficaz a datos: conecte aplicaciones de Ray a Delta Lake y aproveche todo el ecosistema de integraciones de datos de Azure Databricks para ampliar las funcionalidades de Ray a una gama más amplia de aplicaciones y salidas.
Al ejecutar Ray en Azure Databricks, obtiene acceso a un ecosistema integrado que mejora el procesamiento de datos, el aprendizaje automático y los flujos de trabajo operativos.
Casos de uso: aprendizaje automático y versiones posteriores
Ray es una herramienta versátil que amplía las funcionalidades de Python más allá de las limitaciones de las operaciones de DataFrame, lo que lo convierte en ideal para algoritmos distribuidos altamente personalizados y especializados.
Aprendizaje automático y aprendizaje profundo
Aproveche las bibliotecas de aprendizaje automático de Ray para mejorar los flujos de trabajo de aprendizaje automático:
- Ajuste de hiperparámetros: optimice el rendimiento del modelo con Ray Tune para la búsqueda de hiperparámetros escalable y eficaz.
- Aprendizaje profundo distribuido: escalado de modelos de aprendizaje profundo en varios nodos con compatibilidad con marcos populares como PyTorch, TensorFlow, HuggingFace y Keras. Ideal para entrenar modelos para Computer Vision o modelos de lenguaje grande (LLM).
- Aprendizaje automático tradicional: use Ray para distribuir la inferencia por lotes, la evaluación y el entrenamiento para los modelos de aprendizaje automático tradicionales creados con bibliotecas populares, como Scikit-learn o XGBoost.
Informática de alto rendimiento (HPC)
Ray destaca en la distribución de cargas de trabajo de HPC, lo que hace que sea adecuado para:
- Cálculos matemáticos: realizar cálculos complejos en campos como física, genómica o finanzas mediante Ray Core para un procesamiento paralelo eficaz.
- Previsión de series temporales: escale los modelos de previsión, ejecutando estimaciones simultáneamente con paquetes de previsión como Prophet o ARIMA.
Procesamiento de datos e ingeniería de características
Ray también puede controlar varias tareas de procesamiento de datos:
- Características computarizadas: las tareas complejas de ingeniería de características de proceso intensivo pueden beneficiarse de la arquitectura de cálculo distribuido de Ray.
- Procesamiento de audio, imagen y vídeo: distribuye y acelera el procesamiento de datos multimedia, lo que lo convierte en ideal para aplicaciones en el reconocimiento de voz, la clasificación de imágenes y el análisis de vídeo.
Limitaciones
- Ray en Apache Spark es compatible con el modo de acceso de usuario único (asignado), sin modo de acceso compartido de aislamiento y solo clústeres de trabajos. No se puede iniciar un clúster de Ray en clústeres mediante entornos de ejecución basados en servidor.
- Evite ejecutar
%pip
para instalar paquetes en un clúster de Ray en ejecución, ya que apagará el clúster. En su lugar, instale bibliotecas antes de inicializar el clúster. - El uso de integraciones que invalidan la configuración de
ray.util.spark.setup_ray_cluster
puede hacer que el clúster de Ray se vuelva inestable. Evite sobrescribir recursos de clúster de Ray en aplicaciones de terceros. - Si se producen errores como
ncclInternalError: Internal check failed
, esto indica un problema con la comunicación de red entre los GPU del clúster. Para resolver este error, agregue el siguiente fragmento de código en el código de entrenamiento para usar la interfaz de red principal.
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"
Consulte los otros artículos de esta sección.