Spécifier le modèle à déployer pour une utilisation dans un point de terminaison en ligne
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 découvrir les différentes façons de spécifier les modèles que vous souhaitez utiliser dans les déploiements en ligne. Lors du déploiement d’un modèle sur un point de terminaison en ligne Azure Machine Learning, vous devez spécifier le modèle de l’une des deux manières suivantes :
- Indiquer le chemin d’accès à l’emplacement du modèle sur votre ordinateur local.
- Fournir une référence à un modèle versionné déjà inscrit dans votre espace de travail.
La façon de spécifier un modèle pour le déploiement d’un point de terminaison en ligne varie en fonction de l’emplacement de stockage dudit modèle.
Dans Azure Machine Learning, après avoir créé votre déploiement, la variable d’environnement AZUREML_MODEL_DIR
pointe vers l’emplacement de stockage de votre modèle dans Azure.
Déploiement pour les modèles stockés localement
Cette section utilise cet exemple de structure de dossiers locale pour montrer comment spécifier les modèles à utiliser dans un déploiement en ligne :
Déploiement pour un modèle local unique
Pour utiliser un modèle unique présent sur votre ordinateur local dans un déploiement, spécifiez le path
du model
dans votre fichier YAML de configuration YAML de déploiement. Le code suivant est un exemple du fichier YAML de déploiement avec le chemin d’accès local /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl
:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
Dans Azure Machine Learning, après avoir créé votre déploiement sur un point de terminaison en ligne, la variable d’environnement AZUREML_MODEL_DIR
pointe vers l’emplacement de stockage de votre modèle dans Azure. Par exemple, /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1
contient maintenant le modèle sample_m1.pkl
.
Dans votre script de scoring (score.py
), vous pouvez charger votre modèle (dans cet exemple, sample_m1.pkl
) dans la fonction init()
du script :
def init():
model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "sample_m1.pkl")
model = joblib.load(model_path)
Déploiement pour plusieurs modèles locaux
Même si Azure CLI, le Kit de développement logiciel (SDK) Python et d’autres outils clients ne vous laissent spécifier qu’un seul modèle par déploiement dans la définition du déploiement, vous pouvez toujours utiliser plusieurs modèles dans un déploiement en inscrivant un dossier de modèles contenant tous les modèles en tant que fichiers ou sous-répertoires. Pour plus d’informations sur l’inscription de vos ressources, telles que les modèles, de façon à pouvoir spécifier leurs noms et versions inscrits pendant le déploiement, consultez Inscrire votre modèle et votre environnement.
Dans l’exemple de structure de dossiers locale, vous pouvez constater la présence de plusieurs modèles dans le dossier models
. Pour utiliser ces modèles, dans le fichier YAML de votre déploiement, vous pouvez spécifier le chemin d’accès au dossier models
comme suit :
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: /Downloads/multi-models-sample/models/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
Une fois votre déploiement créé, la variable d’environnement AZUREML_MODEL_DIR
pointe vers l’emplacement de stockage de vos modèles dans Azure. Par exemple, /var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1
contient maintenant les modèles et la structure de fichiers.
Pour cet exemple, le contenu du dossier AZUREML_MODEL_DIR
se présente comme suit :
Dans votre script de scoring (score.py
), vous pouvez charger vos modèles dans la fonction init()
. Le code suivant charge le modèle sample_m1.pkl
:
def init():
model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "models","model_1","v1", "sample_m1.pkl ")
model = joblib.load(model_path)
Pour obtenir un exemple de déploiement de plusieurs modèles dans un même déploiement, consultez Déployer plusieurs modèles dans un même déploiement (exemple CLI) et Déployer plusieurs modèles dans un même déploiement (exemple SDK).
Conseil
Si vous avez plus de 1 500 fichiers à inscrire, envisagez de compresser les fichiers ou sous-répertoires au format .tar.gz lors de l’inscription des modèles. Pour consommer les modèles, vous pouvez décompresser les fichiers ou sous-répertoires dans la fonction init()
du script de scoring. Sinon, quand vous inscrivez les modèles, définissez la propriété azureml.unpack
sur True
pour décompresser automatiquement les fichiers ou sous-répertoires. Dans les deux cas, la décompression des fichiers se produit une fois lors de la phase d’initialisation.
Déploiement pour les modèles inscrits dans votre espace de travail
Vous pouvez utiliser des modèles inscrits dans la définition de votre déploiement en référençant leurs noms dans le fichier YAML de votre déploiement. Par exemple, la configuration YAML de déploiement suivante spécifie azureml:local-multimodel:3
comme nom de model
inscrit :
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:local-multimodel:3
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
Pour cet exemple, considérez que local-multimodel:3
contient les artefacts de modèle suivants, que vous pouvez voir sous l’onglet Modèles dans Azure Machine Learning studio :
Une fois votre déploiement créé, la variable d’environnement AZUREML_MODEL_DIR
pointe vers l’emplacement de stockage de vos modèles dans Azure. Par exemple, /var/azureml-app/azureml-models/local-multimodel/3
contient les modèles et la structure de fichiers. AZUREML_MODEL_DIR
pointe vers le dossier contenant la racine des artefacts de modèle. Dans cet exemple, le contenu du dossier AZUREML_MODEL_DIR
se présente comme suit :
Dans votre script de scoring (score.py
), vous pouvez charger vos modèles dans la fonction init()
. Par exemple, chargez le modèle diabetes.sav
:
def init():
model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR"), "models", "diabetes", "1", "diabetes.sav")
model = joblib.load(model_path)
Déploiement pour les modèles disponibles dans le catalogue de modèles
Pour tous les modèles présents dans le catalogue de modèles, à l’exception de ceux se trouvant dans la collection Azure OpenAI, vous pouvez utiliser l’ID de modèle indiqué dans la carte du modèle pour le déploiement. Les ID de modèle se présentent sous la forme azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}
. Par exemple, l’ID de modèle pour le modèle Meta Llama 3-8 B Instruct est azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2
.
Certaines cartes de modèle incluent des exemples de notebooks qui vous montrent comment utiliser l’ID de modèle pour le déploiement.
Déploiement pour les modèles disponibles dans le registre de votre organisation
Chaque modèle figurant dans le registre d’une organisation possède un ID de modèle sous la forme azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}
. Vous pouvez également choisir d’utiliser des environnements inscrits dans le même registre.