Condividi tramite


Cos’è Ray in Azure Databricks?

Ray è un framework open source per il ridimensionamento delle applicazioni Python. Include librerie specifiche per i carichi di lavoro di intelligenza artificiale, che lo rendono particolarmente adatto per lo sviluppo di applicazioni di intelligenza artificiale. Ray in Azure Databricks consente di eseguire applicazioni Ray, ottenendo al tempo stesso tutti i vantaggi e le funzionalità della piattaforma di Azure Databricks.

Con Ray 2.3.0 e versioni successive, è possibile creare cluster Ray ed eseguire applicazioni Ray in cluster Apache Spark con Azure Databricks.

Per informazioni su come iniziare a utilizzare l’apprendimento automatico in Ray, incluse esercitazioni ed esempi, vedere la documentazione di Ray. Per altre informazioni sull'integrazione di Ray e Apache Spark, vedere la documentazionedell’API Ray on Spark.

Che cos’è Ray?

Ray semplifica i sistemi distribuiti fornendo primitive Python di base per creare applicazioni distribuite da zero. Per gli sviluppatori Python nuovi ai sistemi distribuiti, offre la stessa facilità d’uso di Python standard, gestendo l’orchestrazione, la pianificazione e la tolleranza di errore.

Ray e Apache Spark sono framework complementari. Ray eccelle nel parallelismo logico, gestendo attività dinamiche e a elevato utilizzo di calcolo, come l’apprendimento automatico e l’apprendimento per rinforzo. Apache Spark è specializzato nel parallelismo dei dati, elaborando in modo efficiente set di dati di grandi dimensioni per attività come ETL e analisi dei dati. Insieme, forniscono una combinazione potente sia per l’elaborazione dei dati che per il calcolo complesso.

Perché eseguire Ray in Azure Databricks?

L’esecuzione di Ray in Azure Databricks consente di sfruttare l'ampiezza dell’ecosistema di Azure Databricks, migliorando l’elaborazione dei dati e i flussi di lavoro di Machine Learning con servizi e integrazioni non disponibili in Ray open source. I vantaggi dell’esecuzione di Ray in Azure Databricks includono:

  • Piattaforma unificata: Azure Databricks offre una piattaforma unificata in cui è possibile eseguire applicazioni Ray insieme ad Apache Spark. Questa integrazione supporta operazioni ETL di dati semplici, trasferimento efficiente dei dati e potente elaborazione parallela all’interno dello stesso ambiente di calcolo.
  • Governance e controllo: offre i vantaggi del rilevamento della derivazione, del controllo delle versioni dei dati e del controllo di accesso con Unity Catalog per tutti gli asset di dati, i file, i modelli e altro ancora, garantendo conformità e sicurezza.
  • Gestione dell’infrastruttura: utilizzare strumenti di infrastruttura come il provider Terraform di Azure Databricks e i Bundle di asset di Azure Databricks per gestire i cluster e i processi, garantendo operazioni e scalabilità semplificate.
  • Cluster Ray gestiti: i cluster Ray vengono gestiti nello stesso ambiente di esecuzione di un cluster Apache Spark in esecuzione. Ciò garantisce scalabilità, affidabilità e facilità d’utilizzo senza la necessità di una configurazione complessa dell’infrastruttura.
  • Gestione e monitoraggio dei modelli: connettere i modelli sottoposti a training con Ray Train a Mosaic AI Model Serving per distribuzioni a disponibilità elevata e a bassa latenza. Inoltre, utilizzare Lakehouse Monitoring per tenere traccia della qualità e della deriva del modello, garantendo prestazioni coerenti.
  • Sviluppo avanzato di Machine Learning: eseguire l’integrazione con il servizio MLflow di Azure Databricks completamente gestito per tenere traccia dello sviluppo del modello, semplificando la gestione degli esperimenti e la riproducibilità tra le applicazioni Ray.
  • Flussi di lavoro automatizzati: utilizzare i processi di Databricks per automatizzare i processi, creando pipeline pronte per la produzione che semplificano le operazioni e riducono l’intervento manuale.
  • Gestione e collaborazione del codice: gestire il codice in modo efficiente con le cartelle Git di Azure Databricks, consentendo un’integrazione Git trasparente per il controllo della versione e lo sviluppo collaborativo per il codice dell’applicazione Ray.
  • Accesso efficiente ai dati: connettere le applicazioni Ray a Delta Lake, sfruttando l’ampio ecosistema di integrazioni di dati di Azure Databricks per estendere le funzionalità di Ray a un’ampia gamma di applicazioni e output.

Eseguendo Ray in Azure Databricks, si ottiene l’accesso a un ecosistema integrato che migliora l'elaborazione dei dati, l’apprendimento automatico e i flussi di lavoro operativi.

Casi d’utilizzo- Machine Learning e oltre

Ray è uno strumento versatile che estende le funzionalità di Python oltre le limitazioni delle operazioni dataframe, rendendolo ideale per algoritmi distribuiti altamente personalizzati e specializzati.

Apprendimento automatico e Deep Learning

Sfruttare le librerie di Machine Learning di Ray per migliorare i flussi di lavoro di Machine Learning:

  • Ottimizzazione degli iperparametri: ottimizzare le prestazioni del modello con Ray Tune per la ricerca di iperparametri efficienti e scalabili.
  • Training di Deep Learning distribuito: ridimensionare i modelli di Deep Learning in più nodi con il supporto per framework diffusi come PyTorch, TensorFlow, HuggingFace e Keras. Ideale per i modelli di training per visione artificiale o modelli di linguaggio di grandi dimensioni (LLM).
  • Machine Learning tradizionale: utilizzare Ray per distribuire training, valutazione e inferenza batch per i modelli di Machine Learning tradizionali creati con librerie comuni, ad esempio scikit-learn o XGBoost.

High Performance Computing (HPC)

Ray eccelle nella distribuzione dei carichi di lavoro HPC, rendendolo adatto per:

  • Calcoli matematici: eseguire calcoli complessi in campi come fisica, genomica o finanza usando Ray Core per un’elaborazione parallela efficiente.
  • Previsione di serie temporali: ridimensionare i modelli di previsione, eseguendo stime simultaneamente con pacchetti di previsione come Prophet o ARIMA.

Pre-elaborazione dei dati e progettazione delle funzionalità

Ray può anche gestire varie attività di elaborazione dati:

  • Funzionalità calcolate: le complesse attività di progettazione delle funzionalità a elevato utilizzo di calcolo possono trarre vantaggio dall’architettura di calcolo distribuita di Ray.
  • Elaborazione audio, immagine e video: distribuire e accelerare l’elaborazione dei dati multimediali, rendendola ideale per le applicazioni nel riconoscimento vocale, nella classificazione delle immagini e nell’analisi video.

Limiti

  • Ray in Apache Spark è supportato per la modalità di accesso utente singolo (assegnato), non è possibile isolare la modalità di accesso condiviso e i cluster di processi. Non è possibile avviare un cluster Ray nei cluster usando runtime basati su serverless.
  • Evitare di eseguire %pip per installare i pacchetti in un cluster Ray in esecuzione, perché arresterà il cluster. Installare invece le librerie prima di inizializzare il cluster.
  • L’utilizzo di integrazioni che eseguono l'override della configurazione da ray.util.spark.setup_ray_cluster può causare l’instabilità del cluster Ray. Evitare di sottoscrivere risorse cluster Ray nelle applicazioni di terze parti.
  • Se si verificano errori come ncclInternalError: Internal check failed, questo indica un problema con la comunicazione di rete tra GPU nel cluster. Per risolvere questo errore, aggiungere il frammento di codice di training seguente per utilizzare l’interfaccia di rete primaria.
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"

Vedi gli altri articoli in questa sezione.