Ray en tiempo de ejecución de IA

Importante

Esta característica está en versión preliminar pública.

Nota:

Si usas Ray en Databricks Classic Compute con Databricks Runtime ML, consulta Ray en Databricks.

Ray es un framework código abierto para escalar cargas de trabajo en Python. Puedes ejecutar Ray en AI Runtime sin provisionar ni gestionar la infraestructura de la GPU subyacente.

¿Por qué usar Ray en el tiempo de ejecución de IA?

Ray se utiliza comúnmente para distribuir cargas de trabajo en Python como entrenamiento de modelos, inferencia por lotes, procesamiento de datos y ajuste de hiperparámetros. En AI Runtime, Ray puede acceder a datos en volúmenes de Unity Catalog, hacer seguimiento de experimentos con MLflow y ejecutarse como parte de flujos de trabajo de producción.

Puedes usar bibliotecas comunes de Ray como Ray Core, Ray Data, Ray Train y Ray Tune en AI Runtime. Las cargas de trabajo existentes de Ray pueden seguir utilizando las APIs estándar de las librerías.

Cómo funciona Ray con el entorno de ejecución de IA

Cada aplicación Ray se ejecuta en un clúster Ray, que puede contener uno o más nodos. AI Runtime provisiona los nodos, y Ray programa tareas y actores en los recursos disponibles de CPU y GPU. Cómo empieces Ray depende de la interfaz de ejecución:

Interface Nodes Iniciar Ray
Notebook El único nodo unido al cuaderno Llama a ray_init() desde el SDK de AI Runtime (databricks.air)
CLI de Databricks Un conjunto fijo de uno o más nodos Inicia el nodo principal en el nodo 0 e incorpora los nodos restantes como trabajadores utilizando un script de arranque reutilizable

Usa Ray en cuadernos

Cuando tu notebook esté conectado a GPU compute de AI Runtime, utiliza ray_init() del SDK de Databricks AI Runtime para iniciar Ray en el nodo adjunto:

from databricks.air import ray_init

ray_init()

ray_init() llama a la API estándar ray.init() , configura el panel de control de Ray para el acceso a través del proxy del controlador Databricks e imprime la URL del panel en la salida del cuaderno. Usa el panel de control para inspeccionar trabajos, tareas, actores, registros y el uso de recursos de Ray mientras tu código se ejecuta.

Nota:

ray_init() requiere la versión 5 o superior del entorno. En la versión 5, impórtalo desde serverless_gpu en lugar de databricks.air. Databricks AI v6 incluye a Ray. Si usas Standard v6, instala Ray antes de llamar a ray_init(). Consulte Configuración del entorno.

Ejemplos de cuadernos

Example Description
Ray Core, hola mundo Envía tareas asíncronas de la GPU en el cómputo adjunto, inspecciona la programación en el panel de control de Ray y recupera los resultados.
Ajuste de hiperparámetros CIFAR-10 con Ray Tune Ejecuta pruebas simultáneas con fracciones de GPU para un clasificador de imágenes de PyTorch y utiliza el algoritmo asíncrono de reducción sucesiva a la mitad (ASHA) para detener pronto las configuraciones con peor rendimiento.
Inferencia por lotes Qwen2.5-32B con Ray Data y vLLM Ejecuta inferencia por lotes multilingüe con ocho réplicas vLLM persistentes en 8 GPUs H100 y guarda los resultados como Parquet en un volumen de Unity Catalog.

Usa Ray con la línea de comando de Databricks

Los comandos de la CLI de Databricks para AI Runtime admiten cargas de trabajo de Ray de un solo nodo y multinodo. En la configuración de la carga de trabajo, especifique un valor fijo accelerator_type y el total num_accelerators. La receta de Ray Core para empezar incluye un script de arranque reutilizable. En el command de la carga de trabajo, establece RAY_ENTRYPOINT en la ruta de tu archivo de Python y ejecuta el script de inicialización. El script de arranque hace lo siguiente:

  • En el nodo 0, inicia el cabezal de rayo y ejecuta el punto de entrada configurado.
  • En cada nodo alterno, inicia un trabajador Ray y lo mantiene conectado mientras el punto de entrada funciona.
  • Una vez que termina el punto de entrada, detiene los procesos Ray.

En la aplicación, conéctate al clúster con ray.init(address="auto").

Con el entorno Estándar, añadir ray o el extra requerido, como ray[data], ray[train], o ray[tune], a las dependencias de carga de trabajo. Databricks AI v6 incluye a Ray.

Empieza con Ray

Los siguientes ejemplos mínimos introducen las bibliotecas principales de Ray y comparten el mismo patrón de arranque de clúster.

Example Description
Ray Core Inicia un clúster Ray en dos GPUs A10 y programa una tarea de Ray Core por GPU.
Ray Train Entrena un pequeño perceptrón multicapa con datos sintéticos con un trabajador de Ray Train por GPU.
Ray Data Ejecuta una canalización de procesamiento de datos sintéticos en un clúster de Ray.
Ray Tune Ajusta un pequeño perceptrón multicapa con datos sintéticos con un ensayo por GPU.

Ejemplos adicionales de CLI

Example Description
Ajuste fino de ResNet-50 con Ray Train Ajuste ResNet-50 con un subproceso de trabajo de datos distribuido por cada GPU A10 en dos nodos.
Ajuste fino Qwen2.5-3B con Ray Train Realiza el ajuste fino de Qwen2.5-3B con un worker de datos distribuidos en paralelo por GPU en un nodo H100 8x.
Inferencia por lotes con Ray Data y vLLM Genera respuestas con Qwen2.5-7B-Instruct y escribe los resultados en un volumen del Catálogo de Unity como Parquet.
Búsqueda de hiperparámetros LoRA con Ray Tune Busque configuraciones LoRA para Qwen2.5-0.5B en cuatro GPU A10 y detenga las pruebas con bajo rendimiento con el programador ASHA.
Búsqueda de hiperparámetros XGBoost con Ray Tune Busque hiperparámetros de XGBoost en cuatro GPU A10, registre la mejor configuración en MLflow y registre el modelo en Unity Catalog.

Trabajo con datos y características de Databricks

Las cargas de trabajo Ray pueden acceder a datos en volúmenes de Unity Catalog, grabar ejecuciones con MLflow y ejecutarse como tareas de Lakeflow Jobs definidas con Declarative Automation Bundles.

Datos de acceso en el Catálogo de Unity

Para datos tabulares en una tabla de Unity Catalog, úsalo ray.data.read_databricks_tables() para leer una tabla o ejecutar una consulta SQL a través de un almacén SQL de Databricks. Especifica el ID del almacén, el catálogo y el esquema porque AI Runtime no proporciona una sesión local de Spark. Puedes usar SQL para realizar uniones, agregaciones y filtros antes de que Ray procese los resultados.

Para datos basados en archivos y no estructurados, utiliza un volumen de Unity Catalog. Los usuarios de Ray pueden acceder a los archivos mediante sus rutas /Volumes/<catalog>/<schema>/<volume>/.... Por ejemplo, Ray Data puede leer archivos Parquet con ray.data.read_parquet() y escribir resultados con Dataset.write_parquet().

Supervise y orqueste las cargas de trabajo

Utiliza MLflow para registrar parámetros, métricas y artefactos de una carga de trabajo Ray. Consulta Seguimiento y observabilidad de experimentos.

Para programar la carga de trabajo o componerla con tareas de preparación de datos de CPU, utiliza Lakeflow Jobs y Declarative Automation Bundles. Consulta cómo programar cargas de trabajo de GPU y componer tareas.

Migrar una carga de trabajo existente de Ray

Migrar una carga de trabajo de Ray autogestionada implica sustituir la configuración de su infraestructura y las integraciones de servicios por el modelo de ejecución de AI Runtime.

Evaluación de la carga de trabajo

Antes de migrar, revisa las limitaciones. Confirma que la carga de trabajo puede ejecutarse en un clúster de tamaño fijo con un solo tipo de acelerador.

Migración de la carga de trabajo

Para migrar una carga de trabajo Ray autogestionada:

  1. Elige un cuaderno para desarrollo interactivo de un solo nodo o la CLI de Databricks para trabajos de un solo nodo o de varios nodos.
  2. Asigna los recursos existentes del clúster a un tipo de acelerador de entorno de ejecución de IA y a un número de aceleradores. Consulta Opciones de hardware.
  3. Sustituye el arranque existente del clúster por ray_init() en un notebook o por el arranque documentado del nodo principal y de los nodos de trabajo en una carga de trabajo de Databricks CLI.
  4. Declara las dependencias de Python de la carga de trabajo y actualiza sus rutas de datos, punto de control, modelo y salida.
  5. Valida la carga de trabajo en la configuración más pequeña aplicable. Confirma su acceso a los datos, solicitudes de recursos y salidas antes de probar la topología fija prevista.

Limitations

Ray on AI Runtime tiene las siguientes limitaciones:

  • El clúster Ray tiene un recuento fijo de nodos durante la duración de una carga de trabajo. No se soporta el escalado automático del clúster de rayos.
  • Todos los nodos de una carga de trabajo usan la misma accelerator_type. Un clúster Ray no puede contener grupos separados solo de CPU y GPU ni escalar la capacidad de CPU y GPU de forma independiente.
  • Un cuaderno inicia Ray en el único nodo al que está conectado. Utiliza la CLI de Databricks para un clúster de rayos multinodo.
  • El acceso al panel de control de Ray a través del proxy del controlador de Databricks solo está disponible actualmente para cargas de trabajo de cuadernos.

Tip

Si la preparación de la CPU y el procesamiento GPU pueden ejecutarse como etapas separadas, utiliza un Lakeflow Job multitarea y pasa datos entre las tareas a través de un volumen del Unity Catalog.