Condividi tramite


Usare i modelli registrati in Azure Machine Learning

SI APPLICA A:Estensione ml dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)

Questo articolo illustra come registrare e usare i modelli in Azure Machine Learning usando:

  • Interfaccia utente di Studio di Azure Machine Learning.
  • Interfaccia della riga di comando V2 di Azure Machine Learning.
  • The Python Azure Machine Learning V2 SDK.

Scopri come:

  • Creare modelli registrati nel Registro di sistema dei modelli da file, archivi dati o output del processo locali.
  • Lavorare con differenti tipi di modelli, ad esempio personalizzati, MLflow e Sicuramente.
  • Usare i modelli come input o output nei processi di training.
  • Gestire il ciclo di vita degli asset del modello.

Registrazione del modello

La registrazione dei modelli consente di archiviare i modelli e creare le relative versioni nel cloud di Azure, all'interno della propria area di lavoro. Il registro modelli consente di organizzare i modelli sottoposti a training e tenerne traccia. È possibile registrare i modelli come asset in Azure Machine Learning usando l'interfaccia della riga di comando di Azure, Python SDK o l'interfaccia utente di Machine Learning Studio.

Percorsi supportati

Per registrare un modello, è necessario specificare un percorso che punta ai dati o alla posizione del processo. La tabella seguente illustra le varie posizioni dei dati supportate da Azure Machine Learning e la sintassi per il parametro path:

Ufficio Sintassi
Computer locale <model-folder>/<model-filename>
Archivio dati di Azure Machine Learning azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Processo di Azure Machine Learning azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Processo MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Asset del modello in un'area di lavoro di Machine Learning azureml:<model-name>:<version>
Asset del modello in un registro di Machine Learning azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Modalità supportate

Quando si usano modelli per input o output, è possibile specificare una delle modalità seguenti. Ad esempio, è possibile specificare se il modello deve essere montato o scaricato in sola lettura nella destinazione di calcolo.

  • ro_mount: montare i dati nella destinazione di calcolo come di sola lettura.
  • rw_mount: montaggio in lettura/scrittura dei dati.
  • download: scaricare i dati nella destinazione di calcolo.
  • upload: caricare i dati dalla destinazione di calcolo.
  • direct: passare l'URI come stringa.

Nella tabella seguente vengono illustrate le opzioni disponibili per input e output del tipo di modello differenti.

Type upload download ro_mount rw_mount direct
Input di file custom
Input di cartella custom
Input mlflow
Output di file custom
custom output della cartella
Output mlflow

Prerequisiti

  • Una sottoscrizione di Azure con una versione gratuita o a pagamento di Azure Machine Learning. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
  • Un'area di lavoro di Azure Machine Learning.

Per eseguire gli esempi di codice in questo articolo e usare l'interfaccia della riga di comando di Azure Machine Learning V2 o Python Azure Machine Learning V2 SDK, è necessario:

Nota

La versione 2 offre la compatibilità completa con le versioni precedenti. È comunque possibile usare gli asset del modello dall'SDK v1 o dall'interfaccia della riga di comando. A tutti i modelli registrati con l'interfaccia della riga di comando o SDK v1 viene assegnato il tipo custom.

Registrare un modello usando l'interfaccia utente di Studio

Per registrare un modello usando l'interfaccia utente di Studio di Azure Machine Learning:

  1. Nell'area di lavoro in studio selezionare Modelli nel riquadro di spostamento a sinistra.

  2. Nella pagina Elenco modelli selezionare Registra, quindi selezionare una delle posizioni seguenti nell'elenco a discesa:

    • Da file locali
    • Dall'output di un processo
    • Da archivio dati
    • Da file locali (basati sul framework)
  3. Nella prima schermata Registra modello:

    1. Passare al file locale, all'archivio dati o all'output del processo per il modello.
    2. Selezionare il tipo di modello di input: MLflow, Tritono Tipo non specificato.
  4. Nella schermata Impostazioni modello specificare un nome e altre impostazioni facoltative per il modello registrato e selezionare Avanti.

  5. Nella schermata Rivedi prendere in esame la configurazione quindi selezionare Registra.

Screenshot dell'interfaccia utente per registrare un modello.

Registrare un modello usando l'interfaccia della riga di comando di Azure o Python SDK

I frammenti di codice seguenti illustrano come registrare un modello come asset in Azure Machine Learning usando l'interfaccia della riga di comando di Azure o Python SDK. Questi frammenti di codice usano i tipi di modello custom e mlflow.

  • Il tipo custom si riferisce a un file di modello o a una cartella sottoposta a training con uno standard personalizzato non attualmente supportato da Azure Machine Learning.
  • Il tipo mlflow fa riferimento a un modello sottoposto a training con MLflow. I modelli sottoposti a training con MLflow si trovano in una cartella contenente il file MLmodel, il file del modello, il file delle dipendenze conda e il file requirements.txt.

Suggerimento

È possibile seguire le versioni Python degli esempi seguenti eseguendo il notebook model.ipynb nel repository azureml-examples.

Connettersi all'area di lavoro

L'area di lavoro è la risorsa di primo livello per Azure Machine Learning, che fornisce una posizione centralizzata da cui gestire tutti gli artefatti creati quando si usa Azure Machine Learning. In questa sezione ci si connette all'area di lavoro di Azure Machine Learning per creare il modello registrato.

  1. Accedere ad Azure eseguendo az login e seguendo le istruzioni.

  2. Nei comandi seguenti sostituire i segnaposto <subscription-id>, <workspace-name>, <resource-group> e <location> con i valori per l'ambiente.

    az account set --subscription <subscription-id>
    az configure --defaults workspace=<workspace-name> group=<resource-group> location=<location>
    

Creare il modello registrato

È possibile creare un modello registrato da un modello che è:

  • Situato nel computer locale.
  • Situato in un archivio dati di Azure Machine Learning.
  • Output da un processo di Azure Machine Learning.

File o cartella locale

  1. Creare un file YAML <file-name>.yml. Nel file specificare un nome per il modello registrato, un percorso del file del modello locale e una descrizione. Ad esempio:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: local-file-example
    path: mlflow-model/model.pkl
    description: Model created from local file.
    
  2. Eseguire il comando seguente usando il nome del file YAML:

    az ml model create -f <file-name>.yml
    

Per un esempio completo, vedere il file YAML del modello.

Datastore

È possibile creare un modello da un percorso cloud usando uno dei formati URI supportati.

Nell'esempio seguente viene usato lo schema azureml abbreviato per puntare a un percorso nell'archivio dati tramite la sintassi azureml://datastores/<datastore-name>/paths/<path_on_datastore>.

az ml model create --name my-model --version 1 --path azureml://datastores/myblobstore/paths/models/cifar10/cifar.pt

Per un esempio completo, vedere le informazioni di riferimento sull'interfaccia della riga di comando.

Output del processo

Se i dati del modello provengono da un output del processo, sono disponibili due opzioni per specificare il percorso del modello. È possibile usare il formato URI MLflow runs: o il formato URI azureml://jobs.

Nota

La parola chiave riservata artefatti rappresenta l'output dal percorso predefinito dell'artefatto.

  • Esecuzioni di MLflow: formato URI

    Questa opzione è ottimizzata per gli utenti di MLflow, che probabilmente hanno già familiarità con il formato URI runs: MLflow. Questa opzione crea un modello dagli artefatti nella posizione predefinita dell'artefatto, in cui si trovano tutti i modelli e gli artefatti con registrazione in MLflow. Questa opzione stabilisce anche una derivazione tra un modello registrato e l'esecuzione da cui proviene il modello.

    Formato: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>

    Esempio:

    az ml model create --name my-registered-model --version 1 --path runs:/my_run_0000000000/model/ --type mlflow_model
    

  • formato URI azureml://jobs

    L'opzione URI di riferimento azureml://jobs consente di registrare un modello dagli artefatti in uno dei percorsi di output del processo. Questo formato è allineato al formato URI di riferimento azureml://datastores e supporta anche il riferimento agli artefatti da output denominati diversi dal percorso predefinito dell'artefatto.

    Se non si ha registrato direttamente il modello nello script di training usando MLflow, è possibile usare questa opzione per stabilire una derivazione tra un modello registrato e il processo da cui è stato sottoposto a training.

    Formato: azureml://jobs/<run-id>/outputs/<output-name>/paths/<path-to-model>

    • Percorso predefinito dell'artefatto: azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/. Questa posizione equivale a MLflow runs:/<run-id>/<model>.
    • Cartella output denominata: azureml://jobs/<run-id>/outputs/<named-output-folder>
    • File specifico all'interno della cartella di output denominata: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
    • Percorso di cartella specifico all'interno della cartella di output denominata: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>

    Esempio:

    Salvare un modello da una cartella di output denominata:

    az ml model create --name run-model-example --version 1 --path azureml://jobs/my_run_0000000000/outputs/artifacts/paths/model/
    

    Per un esempio completo, vedere le informazioni di riferimento sull'interfaccia della riga di comando.


Usare i modelli per il training

L'interfaccia della riga di comando di Azure v2 e Python SDK consentono anche di usare i modelli come input o output nei processi di training.

Usare un modello come input in un processo di training

  1. Creare un file YAML di specifica del processo, <file-name>.yml. Nella sezione inputs del processo specificare:

    • Modello type, che può essere mlflow_model, custom_model o triton_model.
    • Oggetto path in cui si trova il modello, che può essere uno dei percorsi elencati nel commento dell'esempio seguente.
    $schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
    
    # Possible Paths for models:
    # AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
    # MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
    # Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
    # Model Asset: azureml:<my_model>:<version>
    
    command: |
      ls ${{inputs.my_model}}
    inputs:
      my_model:
        type: mlflow_model # List of all model types here: https://learn.microsoft.com/azure/machine-learning/reference-yaml-model#yaml-syntax
        path: ../../assets/model/mlflow-model
    environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
    
  2. Eseguire il comando seguente sostituendo il nome file YAML.

    az ml job create -f <file-name>.yml
    

Per un esempio completo, vedere il repository GitHub del modello.

Scrivere un modello come output per un processo

Il processo può scrivere un modello nell'archiviazione basata sul cloud usando gli output.

  1. Creare un file YAML di specifica del processo <file-name>.yml. Popolare la sezione outputs con il tipo e il percorso del modello di output.

    $schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
    
    # Possible Paths for Model:
    # Local path: mlflow-model/model.pkl
    # AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
    # MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
    # Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
    # Model Asset: azureml:<my_model>:<version>
    
    code: src
    command: >-
      python hello-model-as-output.py 
      --input_model ${{inputs.input_model}} 
      --custom_model_output ${{outputs.output_folder}}
    inputs:
      input_model: 
        type: mlflow_model # mlflow_model,custom_model, triton_model
        path: ../../assets/model/mlflow-model
    outputs:
      output_folder: 
        type: custom_model # mlflow_model,custom_model, triton_model
    environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
    
  2. Creare un processo usando l'interfaccia della riga di comando:

    az ml job create --file <file-name>.yml
    

Per un esempio completo, vedere il repository GitHub del modello.

Gestire i modelli

L'interfaccia della riga di comando di Azure e Python SDK consentono anche di gestire il ciclo di vita degli asset del modello di Azure Machine Learning.

List

Elencare tutti i modelli nell'area di lavoro:

az ml model list

Elencare tutte le versioni del modello con un determinato nome:

az ml model list --name run-model-example

Mostra

Ottenere i dettagli di un modello specifico:

az ml model show --name run-model-example --version 1

Aggiornamento

Aggiornare le proprietà modificabili di un modello specifico:

Importante

Per i modelli è possibile aggiornare solo description e tags. Tutte le altre proprietà non sono modificabili e, se è necessario modificarle, è necessario creare una nuova versione del modello.

az ml model update --name  run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"

Archivio

Per impostazione predefinita, l'archiviazione di un modello lo nasconde alle query di elenco come az ml model list. È possibile continuare a fare riferimento e usare un modello archiviato nei flussi di lavoro.

È possibile archiviare tutte le versioni o solo versioni specifiche di un modello. Se non si specifica una versione, tutte le versioni del modello vengono archiviate. Se si crea una nuova versione del modello in un contenitore di modelli archiviati, anche la nuova versione viene impostata automaticamente come archiviata.

Archiviare tutte le versioni di un modello:

az ml model archive --name run-model-example

Archiviare una versione specifica del modello:

az ml model archive --name run-model-example --version 1