Gestione del ciclo di vita di ML con MLflow

Questo articolo descrive come viene usato MLflow in Databricks per la gestione del ciclo di vita di Machine Learning. Include anche esempi che introducono ogni componente MLflow e collegamenti al contenuto che descrivono come questi componenti sono ospitati in Azure Databricks.

La gestione del ciclo di vita di ML in Databricks viene fornita da MLflow gestito. Azure Databricks fornisce una versione completamente gestita e ospitata di MLflow, integrata con funzionalità di sicurezza aziendali, disponibilità elevata e altre funzionalità dell'area di lavoro di Azure Databricks, ad esempio la gestione di esperimenti ed esecuzioni e l'acquisizione di revisioni di notebook.

Per la prima volta gli utenti devono iniziare con Get started with MLflow experiments (Introduzione agli esperimenti MLflow), che illustra le API di rilevamento MLflow di base.

Che cos'è MLflow?

MLflow è una piattaforma open source per la gestione del ciclo di vita end-to-end di Machine Learning. Include i componenti principali seguenti:

  • Rilevamento: consente di tenere traccia degli esperimenti per registrare e confrontare parametri e risultati.
  • Modelli: consente di gestire e distribuire modelli da un'ampia gamma di librerie di Machine Learning a un'ampia gamma di piattaforme di gestione e inferenza dei modelli.
  • Progetti: consente di creare un pacchetto di codice ml in un formato riutilizzabile e riproducibile da condividere con altri data scientist o di trasferirlo in produzione.
  • Registro modelli: consente di centralizzare un archivio modelli per la gestione delle transizioni complete del ciclo di vita dei modelli: dalla gestione temporanea alla produzione, con funzionalità per il controllo delle versioni e l'annotazione. Databricks fornisce una versione gestita del Registro modelli nel catalogo unity.
  • Gestione modelli: consente di ospitare modelli MLflow come endpoint REST. Databricks offre un'interfaccia unificata per distribuire, gestire ed eseguire query sui modelli di intelligenza artificiale serviti.

MLflow supporta Java, Python, R e le API REST.

I dati MLflow vengono crittografati da Azure Databricks usando una chiave gestita dalla piattaforma. La crittografia che usa chiavi gestite dal cliente per i servizi gestiti non è supportata.

Rilevamento MLflow

MLflow in Azure Databricks offre un'esperienza integrata per tenere traccia e proteggere le esecuzioni di training per i modelli di Machine Learning e Deep Learning.

Gestione del ciclo di vita del modello

MLflow Model Registry è un repository di modelli centralizzato e un'interfaccia utente e un set di API che consentono di gestire il ciclo di vita completo dei modelli MLflow. Databricks fornisce una versione ospitata del Registro di sistema del modello MLflow nel catalogo unity. Il catalogo unity offre governance centralizzata dei modelli, accesso tra aree di lavoro, derivazione e distribuzione. Per informazioni dettagliate sulla gestione del ciclo di vita del modello nel catalogo unity, vedere Gestire il ciclo di vita del modello nel catalogo unity.

Se l'area di lavoro non è abilitata per il catalogo Unity, è possibile usare il Registro modelli di area di lavoro.

Concetti relativi al Registro modelli

  • Modello: un modello MLflow registrato da un esperimento o da un'esecuzione registrata con uno dei metodi del mlflow.<model-flavor>.log_model modello flavor. Dopo aver registrato un modello, è possibile registrarlo nel Registro modelli.
  • Modello registrato: modello MLflow registrato con il Registro modelli. Il modello registrato ha un nome univoco, versioni, derivazione del modello e altri metadati.
  • Versione del modello: versione di un modello registrato. Quando viene aggiunto un nuovo modello al Registro modelli, viene aggiunto come versione 1. Ogni modello registrato con lo stesso nome del modello incrementa il numero di versione.
  • Alias del modello: un alias è un riferimento modificabile denominato a una determinata versione di un modello registrato. Gli usi tipici degli alias consentono di specificare quali versioni del modello vengono distribuite in un determinato ambiente nei flussi di lavoro di training del modello o per scrivere carichi di lavoro di inferenza destinati a un alias specifico. Ad esempio, è possibile assegnare l'alias "Champion" del modello registrato "Rilevamento frodi" alla versione del modello che deve servire la maggior parte del traffico di produzione e quindi scrivere carichi di lavoro di inferenza destinati a tale alias (ovvero eseguire stime usando la versione "Campione").
  • Fase del modello (solo registro modelli dell'area di lavoro): è possibile assegnare una o più fasi a una o più fasi. MLflow fornisce fasi predefinite per i casi d'uso comuni: Nessuno, Gestione temporanea, Produzione e Archiviato. Con l'autorizzazione appropriata è possibile eseguire la transizione di una versione del modello tra fasi o richiedere una transizione di fase del modello. Le fasi della versione del modello non vengono usate nel catalogo unity.
  • Descrizione: è possibile annotare la finalità di un modello, inclusa una descrizione e tutte le informazioni pertinenti utili per il team, ad esempio la descrizione dell'algoritmo, il set di dati usato o la metodologia.

Notebook di esempio

Per un esempio che illustra come usare il Registro modelli per creare un'applicazione di Machine Learning che prevede l'output giornaliero dell'alimentazione di un parco eolico, vedere quanto segue:

Distribuzione del modello

Databricks Model Serving offre un'interfaccia unificata per distribuire, gestire ed eseguire query sui modelli di intelligenza artificiale. Ogni modello usato è disponibile come API REST che è possibile integrare nell'applicazione Web o client.

La gestione dei modelli supporta la gestione:

  • Modelli personalizzati. Si tratta di modelli Python inclusi nel formato MLflow. Possono essere registrati nel catalogo unity o nel registro dei modelli dell'area di lavoro. Gli esempi includono i modelli scikit-learn, XGBoost, PyTorch e Hugging Face transformer.
  • Modelli aperti all'avanguardia resi disponibili dalle API del modello foundation. Questi modelli sono architetture di modelli di base curate che supportano l'inferenza ottimizzata. I modelli di base, come Llama-2-70B-chat, BGE-Large e Mistral-7B sono disponibili per l'uso immediato con prezzi con pagamento per token e carichi di lavoro che richiedono garanzie di prestazioni e varianti di modello ottimizzate possono essere distribuite con velocità effettiva con provisioning.
  • Modelli esterni. Si tratta di modelli ospitati all'esterno di Databricks. Alcuni esempi includono modelli di base come GPT-4 di OpenAI, Claude di Anthropic e altri. Gli endpoint che servono modelli esterni possono essere regolati centralmente e i clienti possono stabilire limiti di frequenza e controlli di accesso per loro.

È anche possibile distribuire modelli MLflow per l'inferenza offline, vedere Distribuire modelli per l'inferenza batch.