Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Note
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:
| Interfaz | Nodos | 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.
Note
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
| Ejemplo | 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 soportan cargas de trabajo Ray de un solo nodo. En la configuración de carga de trabajo, especifique un accelerator_type y un num_accelerators fijos. La receta de entrenamiento de Ray Qwen2.5-3B incluye un script bootstrap 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:
- Arranca el head de Ray en el nodo y ejecuta el punto de entrada configurado.
- 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.
Ejemplos de la CLI
| Ejemplo | Description |
|---|---|
| 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. |
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:
- Elige un cuaderno para desarrollo interactivo o la CLI de Databricks para los trabajos enviados.
- 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. Consulte Hardware.
- Sustituya el arranque existente del clúster por
ray_init()en un cuaderno o por el script de arranque documentado en una carga de trabajo de la CLI de Databricks. - Declara las dependencias de Python de la carga de trabajo y actualiza sus rutas de datos, punto de control, modelo y salida.
- 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. - El acceso al panel de control de Ray a través del proxy de controladores de Azure Databricks está disponible solo para cargas de trabajo de notebooks.
- Ray se ejecuta en un solo nodo, tanto en notebooks como en cargas de trabajo de la CLI de Databricks.
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.