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
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayez la version gratuite ou payante d’Azure Machine Learning.
- Un espace de travail Azure Machine Learning.
- Le Kit de développement logiciel (SDK) Azure Machine Learning v2 pour Python.
- L'interface CLI Azure Machine Learning v2.
En outre, vous devez :
- Installer l’interface Azure CLI et l’extension ml pour l’interface Azure CLI. Pour plus d’informations, consultez Installer, configurer et utiliser l’interface CLI (v2).
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.
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 description
et 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 :
- Le
type
, si le modèle est unmlflow_model
,custom_model
outriton_model
. - 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://registries/azureml/environments/sklearn-1.0/labels/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://registries/azureml/environments/sklearn-1.0/labels/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.