Utiliser des modèles inscrits dans Azure Machine Learning

S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)

Dans cet article, vous allez apprendre à inscrire et à utiliser des modèles dans Azure Machine Learning à l’aide des éléments suivants :

  • Interface utilisateur d’Azure Machine Learning studio.
  • Interface CLI Azure Machine Learning V2.
  • Kit SDK Python Azure Machine Learning V2.

Vous allez apprendre à effectuer les actions suivantes :

  • Créer des modèles inscrits dans le registre de modèles à partir de fichiers locaux, de magasins de données ou de sorties de travaux.
  • Utiliser différents types de modèles, notamment des modèles personnalisés, MLflow et Triton.
  • Utiliser des modèles comme entrées ou sorties dans des travaux de formation.
  • Gérer le cycle de vie des ressources de modèle.

Inscription de modèles

L’inscription de modèle vous permet de stocker et de versionner vos modèles dans votre espace de travail dans le cloud Azure. Le registre de modèles vous permet d’organiser et de suivre vos modèles entraînés. Vous pouvez inscrire des modèles en tant que ressources dans Azure Machine Learning à l’aide d’Azure CLI, du kit SDK Python ou de l’interface utilisateur de Machine Learning studio.

Chemins pris en charge

Pour inscrire un modèle, vous devez spécifier un chemin d’accès qui pointe vers les données ou l’emplacement du travail. Le tableau suivant présente les différents emplacements de données pris en charge par Azure Machine Learning et la syntaxe du paramètre path :

Emplacement Syntaxe
Ordinateur local <model-folder>/<model-filename>
Magasin de données Azure Machine Learning azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Travail Azure Machine Learning azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Travail MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Ressource de modèle dans un espace de travail Machine Learning azureml:<model-name>:<version>
Ressource de modèle dans un registre Machine Learning azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Modes pris en charge

Lorsque vous utilisez des modèles pour les entrées ou sorties, vous pouvez spécifier l’un des modes suivants. Par exemple, vous pouvez spécifier si le modèle doit être monté en lecture seule ou téléchargé sur la cible de calcul.

  • ro_mount : monter les données sur la cible de calcul en lecture seule.
  • rw_mount : monter les données en lecture-écriture.
  • download : télécharger les données sur la cible de calcul.
  • upload : charger les données à partir de la cible de calcul.
  • direct : passer l’URI en tant que chaîne.

Le tableau suivant présente les options de mode disponibles pour différentes entrées et sorties de type de modèle.

Type upload download ro_mount rw_mount direct
Entrée de fichier custom
Entrée de dossier custom
Entrée mlflow
Sortie de fichier custom
Sortie de dossier custom
Sortie mlflow

Prérequis

Pour exécuter les exemples de code de cet article et utiliser l’interface CLI Azure Machine Learning V2 ou le kit SDK Python Azure Machine Learning V2, vous avez également besoin des éléments suivants :

Remarque

La V2 fournit une compatibilité descendante complète. Vous pouvez toujours utiliser des ressources de modèle à partir du kit SDK ou de l’interface CLI v1. Tous les modèles inscrits avec l’interface CLI ou le kit SDK v1 se voient attribuer le type custom.

Inscrire un modèle à l’aide de l’interface utilisateur de studio

Pour inscrire un modèle à l’aide de l’interface utilisateur d’Azure Machine Learning studio :

  1. Dans votre espace de travail dans le studio, sélectionnez Modèles dans le volet de navigation gauche.

  2. Dans la page Liste de modèles, sélectionnez Inscrire, puis sélectionnez l’un des emplacements suivants dans la liste déroulante :

    • À partir des fichiers locaux
    • À partir du résultat d’un travail
    • À partir du magasin de données
    • À partir de fichiers locaux (selon l’infrastructure)
  3. Dans le premier écran Inscrire le modèle :

    1. Accédez au fichier local, au magasin de données ou à la sortie du travail pour votre modèle.
    2. Sélectionnez le type de modèle d’entrée : MLflow, Triton ou Type non spécifié.
  4. Dans l’écran Paramètres du modèle, indiquez un nom et d’autres paramètres facultatifs pour votre modèle inscrit, puis sélectionnez Suivant.

  5. Dans l’écran Vérifier, passez en revue la configuration, puis sélectionnez Inscrire.

Capture d’écran de l’interface utilisateur pour inscrire un modèle.

Inscrire un modèle à l’aide d’Azure CLI ou du kit SDK Python

Les extraits de code suivants expliquent comment inscrire un modèle en tant que ressource dans Azure Machine Learning à l’aide d’Azure CLI ou du kit SDK Python. Ces extraits de code utilisent les types de modèles custom et mlflow.

  • Le type custom fait référence à un fichier ou à un dossier modèle formé avec une norme personnalisée qu’Azure Machine Learning ne prend actuellement pas en charge.
  • Le type mlflow fait référence à un modèle entraîné avec MLflow. Les modèles entraînés MLflow se trouvent dans un dossier qui contient le fichier MLmodel, le fichier de modèle, le fichier de dépendances conda et le fichier requirements.txt.

Conseil

Vous pouvez suivre les versions Python des exemples suivants en exécutant le notebook model.ipynb dans le référentiel azureml-examples.

Se connecter à un espace de travail

L’espace de travail est la ressource de niveau supérieur pour Azure Machine Learning. Il fournit un emplacement centralisé dans lequel exploiter tous les artefacts que vous créez lorsque vous utilisez Azure Machine Learning. Dans cette section, vous vous connectez à votre espace de travail Azure Machine Learning pour créer le modèle inscrit.

  1. Connectez-vous à Azure en exécutant az login et en suivant les invites.

  2. Dans les commandes suivantes, remplacez les espaces réservés <subscription-id>, <workspace-name>, <resource-group> et <location> par les valeurs de votre environnement.

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

Créer le modèle inscrit

Vous pouvez créer un modèle inscrit à partir d’un modèle qui est :

  • Situé sur votre ordinateur local.
  • Situé sur un magasin de données Azure Machine Learning.
  • Généré à partir d’un travail Azure Machine Learning.

Fichier ou dossier local

  1. Créez un fichier YAML <file-name>.yml. Dans le fichier, indiquez un nom pour votre modèle inscrit, un chemin d’accès au fichier de modèle local ainsi qu’une description. Par exemple :

    $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. Exécutez la commande suivante en utilisant le nom de votre fichier YAML :

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

Pour obtenir un exemple complet, consultez le modèle YAML.

Magasins de données

Vous pouvez créer un modèle à partir d’un chemin d’accès dans le cloud en utilisant l’un des formats d’URI pris en charge.

L’exemple suivant utilise le schéma azureml abrégé pour pointer vers un chemin d’accès sur le magasin de données en utilisant la syntaxe 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

Pour obtenir un exemple complet, consultez les informations de référence CLI.

Sortie de la tâche 

Si vos données de modèle proviennent d’une sortie de travail, deux options s’offrent à vous pour spécifier le chemin d’accès du modèle. Vous pouvez utiliser le format d’URI runs: MLflow ou le format d’URI azureml://jobs.

Remarque

Le mot clé réservé artefacts représente la sortie de l’emplacement par défaut de l’artefact.

  • Format d’URI runs: MLflow

    Cette option est optimisée pour les utilisateurs MLflow qui sont probablement déjà au fait du format d’URI runs: MLflow. Cette option crée un modèle à partir d’artefacts dans l’emplacement d’artefact par défaut où se trouvent tous les modèles et artefacts journalisés par MLflow. Cette option établit également une traçabilité entre un modèle inscrit et l’exécution dont le modèle provient.

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

    Exemple :

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

  • Format d’URI azureml://jobs

    L’option URI de référence azureml://jobs vous permet d’inscrire un modèle à partir d’artefacts dans n’importe quel chemin de sortie du travail. Ce format est aligné sur le format d’URI de référence azureml://datastores et prend également en charge le référencement d’artefacts à partir de sorties nommées autres que l’emplacement d’artefact par défaut.

    Si vous n’avez pas directement inscrit votre modèle dans le script de formation à l’aide de MLflow, vous pouvez utiliser cette option pour établir une traçabilité entre un modèle inscrit et le travail à partir duquel il a été formé.

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

    • Emplacement d’artefact par défaut : azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/. Cet emplacement équivaut à MLflow runs:/<run-id>/<model>.
    • Dossier de sortie nommé : azureml://jobs/<run-id>/outputs/<named-output-folder>
    • Fichier spécifique dans le dossier de sortie nommé : azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
    • Chemin d’accès à un dossier spécifique dans le dossier de sortie nommé : azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>

    Exemple :

    Enregistrer un modèle à partir d’un dossier de sortie nommé :

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

    Pour obtenir un exemple complet, consultez les informations de référence CLI.


Utiliser des modèles pour la formation

L’interface Azure CLI et le kit SDK Python v2 vous permettent également d’utiliser des modèles en tant qu’entrées ou sorties dans des travaux de formation.

Utiliser un modèle en tant qu’entrée dans un travail de formation

  1. Créez un fichier YAML de spécification de travail, <file-name>.yml. Dans la section inputs du travail, spécifiez :

    • Le type du modèle, qui peut être mlflow_model, custom_model ou triton_model.
    • Le path où se trouve votre modèle, qui peut être l’un des chemins d’accès répertoriés dans le commentaire de l’exemple suivant.
    $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://video2.skills-academy.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. Exécutez la commande suivante, en remplaçant le nom de fichier par votre nom de fichier YAML.

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

Pour obtenir un exemple complet, consultez le référentiel modèle GitHub.

Écrire un modèle en tant que sortie pour un travail

Votre travail peut écrire un modèle dans votre stockage basé sur le cloud en utilisant des sorties.

  1. Créez un fichier YAML de spécification de travail intitulé <file-name>.yml. Remplissez la section outputs avec le type et le chemin d’accès du modèle de sortie.

    $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. Créez un travail à l’aide de l’interface CLI :

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

Pour obtenir un exemple complet, consultez le référentiel modèle GitHub.

Gérer les modèles

L’interface CLI et le kit SDK Python vous permettent également de gérer le cycle de vie de vos ressources du modèle Azure Machine Learning.

Liste

Répertoriez l’ensemble des modèles dans votre espace de travail :

az ml model list

Répertoriez l’ensemble des versions de le modèle sous un nom donné :

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

Afficher

Obtenez les détails d’un modèle spécifique :

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

Update

Mettez à jour les propriétés mutables d’un modèle spécifique :

Important

Pour les modèles, seules les propriétés description et tags peuvent être mises à jour. Toutes les autres propriétés sont immuables. Si vous avez besoin de les modifier, vous devez créer une nouvelle version du modèle.

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

Archive

L’archivage d’un modèle a pour effet de masquer le modèle aux requêtes de liste comme az ml model list par défaut. Vous pouvez continuer à référencer et à utiliser un modèle archivé dans vos flux de travail.

Vous pouvez archiver toutes les versions ou uniquement des versions spécifiques d’un modèle. Si vous ne spécifiez pas de version, toutes les versions du modèle sont archivées. Si vous créez une nouvelle version de modèle sous un conteneur de modèle archivé, la nouvelle version est aussi définie automatiquement comme archivée.

Archivez toutes les versions d’un modèle :

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

Archivez une version spécifique d’un modèle :

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