Condividi tramite


Configurare MLflow per Azure Machine Learning

Questo articolo illustra come configurare MLflow per la connessione a un'area di lavoro di Azure Machine Learning per il rilevamento, la gestione del Registro di sistema e la distribuzione.

Le aree di lavoro di Azure Machine Learning sono compatibili con MLflow, il che significa che possono fungere da server MLflow senza alcuna configurazione aggiuntiva. Ogni area di lavoro ha un URI di rilevamento di MLflow che MLflow può usare per connettersi all'area di lavoro. Le aree di lavoro di Azure Machine Learning sono già configurate per funzionare con MLflow, quindi non è necessaria alcuna configurazione aggiuntiva.

Tuttavia, se si lavora all'esterno di Azure Machine Learning, è necessario configurare MLflow in modo che punti all'area di lavoro. Gli ambienti interessati includono il computer locale, Azure Synapse Analytics e Azure Databricks.

Importante

Quando si usa l'infrastruttura di calcolo di Azure, non è necessario configurare l'URI di rilevamento. Viene configurato automaticamente per l'utente. Gli ambienti con configurazione automatica includono notebook di Azure Machine Learning, notebook jupyter ospitati in istanze di calcolo di Azure Machine Learning e processi eseguiti nei cluster di calcolo di Azure Machine Learning.

Prerequisiti

  • Il pacchetto MLflow SDK mlflow e il plug-in Azure Machine Learning azureml-mlflow per MLflow. Per installare questo software, è possibile usare il comando seguente:

    pip install mlflow azureml-mlflow
    

    Suggerimento

    Invece di , prendere in considerazione l'uso mlflow-skinnydi mlflow. Questo pacchetto è un pacchetto MLflow leggero senza dipendenze di archiviazione, server, interfaccia utente o data science. È consigliabile per gli utenti che necessitano principalmente di funzionalità di rilevamento e registrazione di MLflow, ma non vogliono importare la suite completa di funzionalità, incluse le distribuzioni.

  • Un'area di lavoro di Azure Machine Learning. Per creare un'area di lavoro, vedere Creare risorse necessarie per iniziare.

  • Autorizzazioni di accesso per l'esecuzione di operazioni MLflow nell'area di lavoro. Per un elenco delle operazioni e delle autorizzazioni necessarie, vedere Operazioni MLflow.

Configurare l'URI di rilevamento MLflow

Per eseguire il rilevamento remoto o tenere traccia degli esperimenti in esecuzione all'esterno di Azure Machine Learning, configurare MLflow in modo che punti all'URI di rilevamento dell'area di lavoro di Azure Machine Learning.

Per connettere MLflow a un'area di lavoro di Azure Machine Learning, è necessario l'URI di rilevamento dell'area di lavoro. Ogni area di lavoro ha un proprio URI di rilevamento, che inizia con il protocollo azureml://.

  1. Ottenere l'URI di rilevamento per la propria area di lavoro:

    SI APPLICA A: estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

    1. Accedere e configurare l'area di lavoro:

      az account set --subscription <subscription-ID>
      az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location> 
      
    2. Ottenere l'URI di rilevamento usando il az ml workspace comando :

      az ml workspace show --query mlflow_tracking_uri
      
  2. Configurare l'URI di rilevamento:

    Usare il set_tracking_uri() metodo per impostare l'URI di rilevamento MLflow sull'URI di rilevamento dell'area di lavoro.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Suggerimento

    Alcuni scenari implicano l'uso in un ambiente condiviso, ad esempio un cluster di Azure Databricks o un cluster di Azure Synapse Analytics. In questi casi, è utile impostare la MLFLOW_TRACKING_URI variabile di ambiente a livello di cluster anziché per ogni sessione. L'impostazione della variabile a livello di cluster configura automaticamente l'URI di rilevamento MLflow in modo che punti ad Azure Machine Learning per tutte le sessioni nel cluster.

Configurare l'autenticazione

Dopo aver configurato il rilevamento, è anche necessario configurare il metodo di autenticazione per l'area di lavoro associata.

Per impostazione predefinita, il plug-in di Azure Machine Learning per MLflow esegue l'autenticazione interattiva aprendo il browser predefinito per richiedere le credenziali. Ma il plug-in supporta anche diversi altri meccanismi di autenticazione. Il azure-identity pacchetto fornisce questo supporto. Questo pacchetto viene installato come dipendenza del plug-in azureml-mlflow .

Il processo di autenticazione tenta i metodi seguenti, uno dopo l'altro, fino a quando non viene completata una delle operazioni seguenti:

  1. Ambiente: le informazioni sull'account specificate tramite le variabili di ambiente vengono lette e usate per l'autenticazione.
  2. Identità gestita: se l'applicazione viene distribuita in un host di Azure con un'identità gestita abilitata, l'identità gestita viene usata per l'autenticazione.
  3. Interfaccia della riga di comando di Azure: se si usa il comando dell'interfaccia della riga di comando di Azure az login per accedere, le credenziali vengono usate per l'autenticazione.
  4. Azure PowerShell: se si usa il comando di Azure PowerShell Connect-AzAccount per accedere, le credenziali vengono usate per l'autenticazione.
  5. Browser interattivo: l'utente viene autenticato in modo interattivo tramite il browser predefinito.

Per i processi interattivi in cui è presente un utente connesso alla sessione, è possibile basarsi sull'autenticazione interattiva. Non è richiesta alcuna azione ulteriore.

Avviso

L'autenticazione con browser interattivo blocca l'esecuzione del codice quando vengono chieste le credenziali. Questo approccio non è adatto per l'autenticazione in ambienti senza intervento dell'utente come i processi di training. È consigliabile configurare una modalità di autenticazione diversa in tali ambienti.

Per gli scenari che richiedono l'esecuzione automatica, è necessario configurare un'entità servizio per comunicare con Azure Machine Learning. Per informazioni sulla creazione di un'entità servizio, vedere Configurare un'entità servizio.

Usare l'ID tenant, l'ID client e il segreto client dell'entità servizio nel codice seguente:

import os

os.environ["AZURE_TENANT_ID"] = "<Azure-tenant-ID>"
os.environ["AZURE_CLIENT_ID"] = "<Azure-client-ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<Azure-client-secret>"

Suggerimento

Quando si lavora in ambienti condivisi, è consigliabile configurare queste variabili di ambiente a livello di calcolo. Come procedura consigliata, gestire come segreti in un'istanza di Azure Key Vault.

Ad esempio, in una configurazione del cluster Azure Databricks è possibile usare i segreti nelle variabili di ambiente nel modo seguente: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Per altre informazioni sull'implementazione di questo approccio in Azure Databricks, vedere Fare riferimento a un segreto in una variabile di ambiente o fare riferimento alla documentazione per la piattaforma.

Se si preferisce usare un certificato rispetto a un segreto, è possibile configurare le variabili di ambiente seguenti:

  • Impostare AZURE_CLIENT_CERTIFICATE_PATH sul percorso di un file che contiene il certificato e la coppia di chiavi private nel formato PEM (Privacy Enhanced Mail) o Public-Key Cryptography Standards 12 (PKCS #12).
  • Impostare AZURE_CLIENT_CERTIFICATE_PASSWORD sulla password del file di certificato, se usa una password.

Configurare i livelli di autorizzazione

Alcuni ruoli predefiniti, ad esempio AzureML Scienziato dei dati e Collaboratore, sono già configurati per eseguire operazioni MLflow in un'area di lavoro di Azure Machine Learning. Se si usa un ruolo personalizzato, sono necessarie le autorizzazioni seguenti:

  • Per usare il rilevamento di MLflow:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • Per usare il Registro di sistema del modello MLflow:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

Per informazioni su come concedere l'accesso all'area di lavoro a un'entità servizio creata o all'account utente, vedere Concedere l'accesso.

Risolvere i problemi relativi ai problemi di autenticazione di

MLflow prova a eseguire l'autenticazione in Azure Machine Learning alla prima operazione che interagisce con il servizio, ad esempio mlflow.set_experiment() o mlflow.start_run(). Se si verificano problemi o richieste di autenticazione impreviste durante il processo, è possibile aumentare il livello di registrazione per ottenere altri dettagli sull'errore:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

Impostare il nome dell'esperimento (facoltativo)

Tutte le esecuzioni di MLflow vengono registrate nell'esperimento attivo. Per impostazione predefinita, le esecuzioni vengono registrate in un esperimento denominato Default creato automaticamente. È possibile configurare l'esperimento usato per il rilevamento.

Suggerimento

Quando si usa l'interfaccia della riga di comando di Azure Machine Learning v2 per inviare processi, è possibile impostare il nome dell'esperimento usando la experiment_name proprietà nella definizione YAML del processo. Non è necessario configurarlo nello script di training. Per altre informazioni, vedere YAML: nome visualizzato, nome dell'esperimento, descrizione e tag.

Usare il comando MLflow mlflow.set_experiment() per configurare l'esperimento.

experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)

Configurare il supporto per un cloud di Azure non pubblico

Il plug-in di Azure Machine Learning per MLflow è configurato per impostazione predefinita per l'uso con il cloud di Azure globale. È tuttavia possibile configurare il cloud di Azure usato impostando la AZUREML_CURRENT_CLOUD variabile di ambiente:

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

È possibile identificare il cloud usato con il comando dell'interfaccia della riga di comando di Azure seguente:

az cloud list

Il cloud corrente ha il valore IsActive impostato su True.

Ora che l'ambiente è connesso all'area di lavoro in Azure Machine Learning, è possibile iniziare a usarlo.