Utiliser des modèles dans Azure Machine Learning

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

Azure Machine Learning vous permet d’utiliser différents types de modèles. Dans cet article, vous allez découvrir l’utilisation d’Azure Machine Learning pour utiliser différents types de modèles, tels que personnalisé, MLflow et Triton. Vous allez également apprendre à inscrire un modèle à partir de différents emplacements et à utiliser le Kit de développement logiciel (SDK) Azure Machine Learning, l’interface utilisateur et l’interface CLI Azure Machine Learning pour gérer vos modèles.

Conseil

Si vous avez créé des ressources de modèle qui utilisent le Kit de développement logiciel (SDK)/CLI v1, vous pouvez toujours les utiliser avec le Kit de développement logiciel (SDK)/CLI v2. Une compatibilité ascendante complète est fournie. Tous les modèles inscrits avec le Kit de développement logiciel (SDK) V1 se voient attribuer le type custom.

Prérequis

En outre, vous devez :

Chemins pris en charge

Au moment de fournir le modèle que vous souhaitez inscrire, vous devez spécifier un paramètre path qui pointe vers l’emplacement des données ou de la tâche. Voici un tableau qui montre les différents emplacements de données pris en charge dans Azure Machine Learning et des exemples pour le paramètre path :

Emplacement Exemples
Chemin sur votre ordinateur local mlflow-model/model.pkl
Un chemin d’accès sur un magasin de données Azure Machine Learning azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Chemin d’accès d’un travail Azure Machine Learning azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Chemin d’accès à partir d’un travail MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Chemin d’accès à partir d’une ressource de modèle dans l’espace de travail Azure Machine Learning azureml:<model-name>:<version>
Chemin d’accès à partir d’une ressource de modèle dans le registre Azure Machine Learning azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Modes pris en charge

Quand vous exécutez un travail avec des entrées/sorties modèle, vous pouvez spécifier le mode pour indiquer par exemple que vous voulez que le modèle soient montées en lecture seule ou téléchargées sur la cible de calcul. Le tableau ci-dessous montre les modes possibles pour différentes combinaisons de type/mode/entrée/sortie :

Type Entrée/sortie upload download ro_mount rw_mount direct
Fichier custom Entrée
custom Entrée
mlflow Entrée
Fichier custom Sortie
custom Sortie
mlflow Sortie

Suivre dans les notebooks Jupyter

Vous pouvez suivre cet exemple dans un Jupyter Notebook. Dans le référentiel azureml-examples, ouvrez le notebook : model.ipynb.

Créer un modèle dans le registre de modèles

L’inscription de modèle vous permet de stocker vos modèles dans le cloud Azure, au sein de votre espace de travail, et d’en gérer les versions. Le registre de modèles vous permet d’organiser et de suivre vos modèles entraînés.

Les extraits de code de cette section couvrent comment :

  • Inscrire votre modèle en tant que ressource dans Machine Learning à l’aide de l’interface CLI.
  • Inscrire votre modèle en tant que ressource dans Machine Learning à l’aide du Kit de développement logiciel (SDK).
  • Inscrire votre modèle en tant que ressource dans Machine Learning à l’aide de l’interface utilisateur (IU).

Ces extraits de code utilisent custom et mlflow.

  • custom est un type qui fait référence à un fichier ou dossier de modèle entraîné avec une norme personnalisée non prise en charge actuellement par Azure Machine Learning.
  • mlflow est un type qui 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.

Se connecter à un espace de travail

Tout d’abord, nous allons nous connecter à l’espace de travail Azure Machine Learning sur lequel nous allons travailler.

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

Inscrire votre modèle en tant que ressource dans Machine Learning à l’aide de l’interface CLI

Utilisez les onglets suivants pour sélectionner l’emplacement de votre modèle.

$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: local-file-example
path: mlflow-model/model.pkl
description: Model created from local file.
az ml model create -f <file-name>.yml

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

Inscrire votre modèle en tant que ressource dans Machine Learning à l’aide du Kit de développement logiciel (SDK)

Utilisez les onglets suivants pour sélectionner l’emplacement de votre modèle.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

file_model = Model(
    path="mlflow-model/model.pkl",
    type=AssetTypes.CUSTOM_MODEL,
    name="local-file-example",
    description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)

Inscrire votre modèle en tant que ressource dans Machine Learning à l’aide de l’interface utilisateur (IU)

Pour créer un modèle dans Machine Learning, à partir de l’IU, ouvrez la page Modèles. Sélectionnez Modèle de registre et sélectionnez l’emplacement de votre modèle. Renseignez les champs obligatoires, puis sélectionnez Inscription.

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


Gérer les modèles

Le kit de développement logiciel (SDK) et l’interface CLI (v2) 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 :

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

Important

Pour le modèle, seulement descriptionet tags peut être mis à jour. Toutes les autres propriétés sont immuables. Si vous avez besoin de modifier l’une de ces propriétés, vous devez créer une nouvelle version du modèle.

Archive

L’archivage d’un modèle le masque par défaut à partir des requêtes de liste (az ml model list). Vous pouvez continuer à référencer et utiliser un modèle archivé dans vos flux de travail. Vous pouvez archiver soit toutes les versions d’un modèle, soit juste une version spécifique.

Si vous ne spécifiez pas de version, toutes les versions de l’modèle sous ce nom donné seront archivées. Si vous créez une nouvelle version de modèle sous un conteneur de modèle archivé, cette nouvelle version sera automatiquement définie 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

Utiliser le modèle pour l’entraînement

Le KIT de développement logiciel (SDK) et l’interface CLI (v2) vous permettent également d’utiliser un modèle dans un travail d’entraînement comme entrée ou sortie.

Utiliser le modèle comme entrée dans un travail

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

  1. Le type, si le modèle est un mlflow_model,custom_model ou triton_model.
  2. Le chemin (path) indiquant l’emplacement de vos données ; le chemin peut être n’importe lequel parmi ceux décrits dans la section Chemins pris en charge.
$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:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest

Ensuite, exécutez dans l’interface CLI

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

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

Utiliser le modèle comme sortie dans une tâche

Dans votre travail, vous pouvez écrire des données dans votre stockage cloud en utilisant des sorties.

Créez un fichier YAML de spécification de travail (<file-name>.yml), avec la section outputs complétée avec le type et le chemin menant à l’emplacement où vous souhaitez que vos données soient écrites :

$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:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest

Créez ensuite 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.

Étapes suivantes