Déployer un modèle sur Azure Container Instances avec l’interface CLI (v1)
Important
Cet article explique comment utiliser l’interface CLI et le kit de développement logiciel (SDK) v1 pour déployer un modèle. Pour l’approche recommandée pour v2, consultez Déployer et évaluer un modèle de Machine Learning à l’aide d’un point de terminaison en ligne.
Découvrez comment utiliser Azure Machine Learning pour déployer un modèle en tant que service web sur Azure Container Instances (ACI). Utilisez Azure Container Instances dans les cas suivants :
- Vous préférez ne pas devoir gérer votre propre cluster Kubernetes
- Vous acceptez de n’avoir qu’un réplica unique de votre service, ce qui peut avoir un impact sur la durée de bon fonctionnement
Pour plus d’informations sur les quotas et la disponibilité d’ACI en fonction des régions, consultez l’article Quotas et disponibilité dans les régions pour Azure Container Instances.
Important
Il est fortement recommandé d’effectuer un débogage local avant de procéder au déploiement sur le service web. Pour plus d’informations, consultez Débogage local
Vous pouvez également vous reporter à Azure Machine Learning – Déploiement sur un notebook local.
Prérequis
Un espace de travail Azure Machine Learning. Pour plus d’informations, voir la page Créer un espace de travail Azure Machine Learning.
Un modèle Machine Learning inscrit dans votre espace de travail. Si vous n’avez pas de modèle inscrit, consultez la section Comment et où déployer des modèles.
L’extension Azure CLI (v1) pour Machine Learning service, le SDK Azure Machine Learning pour Python ou l’extension Azure Machine Learning pour Visual Studio Code.
Important
Certaines des commandes Azure CLI de cet article utilisent l’extension
azure-cli-ml
, ou v1, pour Azure Machine Learning. La prise en charge de l’extension v1 se termine le 30 septembre 2025. Vous pourrez installer et utiliser l’extension v1 jusqu’à cette date.Nous vous recommandons de passer à l’extension
ml
, ou v2, avant le 30 septembre 2025. Pour plus d’informations sur l’extension v2, consultez Extension Azure ML CLI et le SDK Python v2.Les extraits de code Python de cet article partent du principe que les variables suivantes sont définies :
ws
– Sur votre espace de travail.model
– Sur votre modèle inscrit.inference_config
– Sur la configuration d’inférence pour le modèle.
Pour plus d’informations sur le paramétrage de ces variables, consultez la section Comment et où déployer des modèles ?
Les extraits de code CLI de cet article partent du principe que vous avez créé un document
inferenceconfig.json
. Pour plus d’informations sur la création de ce document, consultez la section Comment et où déployer des modèles ?
Limites
Remarque
- Le déploiement d’Azure Container Instances dans un réseau virtuel n’est pas pris en charge. Au lieu de cela, pour l’isolation réseau, envisagez d’utiliser points de terminaison en ligne gérés.
- Pour garantir une prise en charge efficace, il est essentiel de fournir les journaux nécessaires pour vos conteneurs ACI. Sans ces journaux, le support technique ne peut pas être garanti. Il est recommandé d’utiliser les outils Log Analytics en spécifiant
enable_app_insights=True
dans votre configuration de déploiement pour gérer et analyser efficacement vos journaux de conteneur ACI.
Déployer sur ACI
Pour déployer un modèle sur Azure Container instances, créez une configuration de déploiement décrivant les ressources de calcul nécessaires. Par exemple, le nombre de cœurs et la mémoire. Vous avez également besoin d’une configuration d’inférence décrivant l’environnement nécessaire pour héberger le modèle et le service Web. Pour plus d’informations sur la création de la configuration d’inférence, consultez la section Comment et où déployer des modèles ?
Notes
- ACI convient uniquement pour les petits modèles de taille inférieure à 1 Go.
- Nous vous recommandons d’utiliser AKS mononœud pour développer/tester des modèles plus volumineux.
- Le nombre de modèles à déployer est limité à 1 000 modèles par déploiement (par conteneur).
Utilisation du kit de développement logiciel
S’APPLIQUE À : SDK Python azureml v1
from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.model import Model
deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
service.wait_for_deployment(show_output = True)
print(service.state)
Pour plus d’informations sur les classes, les méthodes et les paramètres utilisés dans cet exemple, consultez les documents de référence suivants :
Utilisation de l’interface de ligne de commande Azure (CLI)
S’APPLIQUE À : Extension ml Azure CLI v1
Pour déployer à l’aide de la CLI, utilisez la commande suivante. Remplacez mymodel:1
par le nom et la version du modèle inscrit. Remplacez myservice
par le nom à attribuer à ce service :
az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json
Les entrées dans le document deploymentconfig.json
correspondent aux paramètres pour AciWebservice.deploy_configuration. Le tableau suivant décrit le mappage entre les entités dans le document JSON et les paramètres de la méthode :
Entité JSON | Paramètre de méthode | Description |
---|---|---|
computeType |
N/D | La cible de calcul. Pour ACI, la valeur doit être ACI . |
containerResourceRequirements |
N/D | Conteneur pour les entités UC et mémoire. |
cpu |
cpu_cores |
Nombre de cœurs de processeur à allouer. Par défaut, 0.1 |
memoryInGB |
memory_gb |
Quantité de mémoire (en Go) à allouer à ce service web. Par défaut, 0.5 |
location |
location |
Région Azure dans laquelle déployer ce service web. Si elle n’est pas spécifiée, l’emplacement de l’espace de travail sera utilisé. Vous trouverez plus d’informations sur les régions disponibles ici : Régions ACI |
authEnabled |
auth_enabled |
Indique s’il faut activer ou l’authentification pour ce service web. Par défaut, False |
sslEnabled |
ssl_enabled |
Indique s’il faut activer le protocole TLS pour ce service web. Valeur par défaut False. |
appInsightsEnabled |
enable_app_insights |
Indique s’il faut activer AppInsights pour ce service Web. Par défaut, False |
sslCertificate |
ssl_cert_pem_file |
Fichier de certificat requis si le protocole TLS est activé |
sslKey |
ssl_key_pem_file |
Fichier de clé requis si le protocole TLS est activé |
cname |
ssl_cname |
Le CNAME si le protocole TLS est activé |
dnsNameLabel |
dns_name_label |
Étiquette du nom DNS pour le point de terminaison de scoring. Si elle n’est pas spécifiée, une étiquette de nom DNS unique sera générée pour le point de terminaison de scoring. |
Le code JSON suivant est un exemple de configuration de déploiement à utiliser avec l’interface CLI :
{
"computeType": "aci",
"containerResourceRequirements":
{
"cpu": 0.5,
"memoryInGB": 1.0
},
"authEnabled": true,
"sslEnabled": false,
"appInsightsEnabled": false
}
Pour plus d’informations, consultez les informations de référence sur az ml model deploy.
Avec VS Code
Consultez le guide pratique pour gérer les ressources dans VS Code.
Important
Vous n’avez pas besoin de créer un conteneur ACI à tester à l’avance. Les conteneurs ACI sont créés en fonction des besoins.
Important
Nous ajoutons l’ID de l’espace de travail haché à toutes les ressources ACI sous-jacentes qui sont créées ; tous les noms ACI du même espace de travail auront le même suffixe. Le nom du service Azure Machine Learning est toujours le même « service_name » fourni par le client, et l’ensemble des API du kit SDK Azure Machine Learning orienté utilisateur ne nécessite aucune modification. Nous ne garantissons pas les noms des ressources sous-jacentes en cours de création.
Étapes suivantes
- Guide pratique pour déployer un modèle à l’aide d’une image Docker personnalisée
- Résolution des problèmes liés au déploiement
- Mettre à jour le service web
- Utiliser TLS pour sécuriser un service web par le biais d’Azure Machine Learning
- Utiliser un modèle ML déployé en tant que service web
- Superviser vos modèles Azure Machine Learning avec Application Insights
- Collecter des données pour des modèles en production