Runtime di Ray su AI

Importante

Questa funzionalità è in Anteprima Pubblica.

Annotazioni

Se utilizzi Ray su Databricks Classic Compute con Databricks Runtime ML, consulta Ray su Databricks.

Ray è un framework open source per la scalabilità di carichi di lavoro Python. Puoi eseguire Ray su AI Runtime senza fare provisioning o gestire l'infrastruttura GPU sottostante.

Perché usare Ray su Runtime AI

Ray è comunemente utilizzato per distribuire carichi di lavoro Python come l'addestramento dei modelli, l'inferenza batch, l'elaborazione dati e la sintonia degli iperparametri. Su AI Runtime, Ray può accedere ai dati nei volumi del catalogo Unity, monitorare esperimenti con MLflow ed eseguire come parte dei flussi di lavoro di produzione.

Puoi usare librerie Ray comuni come Ray Core, Ray Data, Ray Train e Ray Tune su AI Runtime. I carichi di lavoro Ray esistenti possono continuare a utilizzare le API standard delle librerie.

Come funziona Ray con AI Runtime

Ogni applicazione Ray gira su un cluster Ray, che può contenere uno o più nodi. AI Runtime fornisce i nodi e Ray programma compiti e attori sulle risorse disponibili di CPU e GPU. Come inizi Ray dipende dall'interfaccia di esecuzione:

Interfaccia Nodes Inizio di Ray
Notebook Il singolo nodo collegato al quaderno Chiama ray_init() dal pacchetto serverless_gpu
Interfaccia a riga di comando di Databricks Un insieme fisso di uno o più nodi Avvia la testa sul nodo 0 e unisci i nodi rimanenti come worker usando uno script bootstrap riutilizzabile

Usa Ray nei quaderni

Quando il tuo notebook è connesso alle risorse di calcolo GPU di AI Runtime, usa ray_init() del pacchetto serverless_gpu per avviare Ray sul nodo collegato:

from serverless_gpu import ray_init

ray_init()

ray_init() chiama l'API standard ray.init(), configura il dashboard Ray in modo che sia accessibile tramite il proxy del driver Databricks e stampa l'URL del dashboard nell'output del notebook. Usa la dashboard per ispezionare i lavori, le attività, gli attori, i log e l'utilizzo delle risorse Ray mentre il tuo codice viene eseguito.

Annotazioni

ray_init() Richiede la versione 5 e superiore dell'ambiente. Databricks AI v6 include Ray. Se usi Standard v6, installa Ray prima di chiamare ray_init(). Vedi Configurare l'ambiente.

Esempi di notebook

Example Descrzione
Ray Core hello world Invia compiti asincroni della GPU su un calcolo collegato, ispeziona la pianificazione nella dashboard Ray e recupera i risultati.
Ottimizzazione degli iperparametri di CIFAR-10 con Ray Tune Esegui esperimenti simultanei con frazioni di GPU per un classificatore di immagini con PyTorch e utilizza l'algoritmo asincrono di successive halving (ASHA) per interrompere anticipatamente le configurazioni meno performanti.
Inferenza in batch con Qwen2.5-32B, Ray Data e vLLM Esegui inferenza batch multilingue con otto repliche vLLM persistenti su 8 GPU H100 e salva i risultati in formato Parquet in un volume Unity Catalog.

Usa Ray con la CLI di Databricks

I comandi CLI Databricks per AI Runtime supportano carichi di lavoro Ray a nodo singolo e multi-nodo. Nella configurazione del carico di lavoro, specificare un fisso accelerator_type e il totale num_accelerators. Gli esempi di Ray hello world includono uno script bootstrap riutilizzabile. Nel carico di lavoro command, imposta RAY_ENTRYPOINT sul percorso del file Python e quindi esegui lo script di bootstrap. Lo script bootstrap fa quanto segue:

  • Al nodo 0, avvia la testa Ray ed esegue il punto di ingresso configurato.
  • Su ogni altro nodo, avvia un worker Ray e lo mantiene connesso mentre il punto di ingresso è attivo.
  • Dopo che il punto di ingresso è terminato, si fermano i processi Ray.

Nell'applicazione, collegarsi al cluster con ray.init(address="auto").

Con l'ambiente Standard, aggiungi ray o l'elemento aggiuntivo richiesto, come ray[data], ray[train] o ray[tune], alle dipendenze del workload. Databricks AI v6 include Ray.

Esempi dell'interfaccia della riga di comando

Example Descrzione
Esempi di Ray Hello World Esempi minimi per nodo singolo e multinodo per Ray Core, Ray Train, Ray Data e Ray Tune, compreso il modello di avvio del cluster.
Training distribuito con Ray Train Ottimizza un grande modello linguistico su 8 GPU H100 su un singolo nodo usando Ray Train e PyTorch.
Inferenza batch con Ray Data e vLLM Esegui inferenza batch su larga scala utilizzando Ray Data per il caricamento distribuito dei dati e vLLM per una funzione efficiente del modello.
Ricerca iperparametrica con Ray Tune Cerca gli iperparametri per il fine-tuning LoRA di Qwen2.5 con Ray Tune, eseguendo un trial per GPU e interrompendo anticipatamente i trial con prestazioni inferiori con lo scheduler ASHA.

Lavoro con dati e funzionalità di Databricks

I carichi di lavoro Ray possono accedere ai dati nei volumi del Catalogo Unity, registrare le esecuzioni con MLflow ed eseguire come compiti Lakeflow Jobs definiti con Declarative Automation Bundles.

Accesso ai dati nel Catalogo Unity

Per i dati tabellari in una tabella Unity Catalog, usare ray.data.read_databricks_tables() per leggere una tabella o eseguire una query SQL tramite un Databricks SQL warehouse. Specifica l'ID del warehouse, il catalogo e lo schema perché AI Runtime non fornisce una sessione Spark locale. Puoi usare SQL per eseguire join, aggregazioni e filtri prima che Ray elabori i risultati.

Per dati basati su file e non strutturati, usa un volume Unity Catalog. I worker di Ray possono accedere ai file tramite i rispettivi percorsi /Volumes/<catalog>/<schema>/<volume>/.... Ad esempio, Ray Data può leggere file Parquet con ray.data.read_parquet() e scrivere risultati con Dataset.write_parquet().

Tracciare e orchestrare i carichi di lavoro

Usa MLflow per registrare parametri, metriche e artefatti da un carico di lavoro Ray. Vedi Tracciamento e osservabilità degli esperimenti.

Per programmare il carico di lavoro o comporlo con compiti di preparazione dati CPU, usa Lakeflow Jobs e Declarative Automation Bundles. Vedi "Pianificare i carichi di lavoro GPU e creare attività".

Esegui la migrazione di un carico di lavoro Ray esistente

La migrazione di un carico di lavoro Ray autogestito comporta la sostituzione della configurazione dell'infrastruttura e delle integrazioni dei servizi con il modello di esecuzione AI Runtime.

Valutare il carico di lavoro

Prima di migrare, esamina i limiti. Conferma che il carico di lavoro possa funzionare su un cluster di dimensioni fisse con un solo tipo di acceleratore.

Eseguire la migrazione del carico di lavoro

Per migrare un carico di lavoro Ray autogestito:

  1. Scegli un notebook per lo sviluppo interattivo a nodo singolo oppure la CLI Databricks per lavori a nodo singolo o multinodo.
  2. Mappate le risorse del cluster esistenti al tipo di acceleratore e al numero di acceleratori di AI Runtime. Vedi Opzioni hardware.
  3. Sostituisci l'avvio del cluster esistente con ray_init() in un notebook o con il bootstrap documentato per head e worker in un workload della CLI di Databricks.
  4. Specifica le dipendenze Python del carico di lavoro e aggiorna i percorsi di dati, punti di controllo, modello e output.
  5. Valida il carico di lavoro sulla configurazione più piccola applicabile. Confermare l'accesso ai dati, le richieste di risorse e gli output prima di testare la topologia fissa prevista.

Limitations

Ray on AI Runtime presenta le seguenti limitazioni:

  • Il cluster Ray ha un numero fisso di nodi per tutta la durata di un carico di lavoro. La scalabilità automatica del cluster Ray non è supportata.
  • Tutti i nodi in un carico di lavoro usano lo stesso accelerator_type. Un cluster Ray non può contenere gruppi separati solo per CPU e GPU né scalare autonomamente la capacità CPU e GPU.
  • Un notebook avvia Ray sull'unico nodo associato. Usa la CLI di Databricks per un cluster Ray multinodo.
  • L'accesso al dashboard Ray tramite il proxy driver Databricks è attualmente disponibile solo per i carichi di lavoro dei notebook.

Tip

Se la preparazione della CPU e l'elaborazione della GPU possono essere eseguite come fasi separate, usa un Lakeflow Job multitask e trasferisci i dati tra le attività attraverso un volume di Unity Catalog.