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 seul réplica 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

Limites

Lorsque votre espace de travail Azure Machine Learning est configuré avec un point de terminaison privé, le déploiement sur Azure Container Instances dans un réseau virtuel n’est pas pris en charge. Au lieu de cela, envisagez d’utiliser un point de terminaison en ligne managé avec l’isolation réseau.

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 À :Kit de développement logiciel (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 Azure CLI ml 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 SSL 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 SSL est activé
sslKey ssl_key_pem_file Fichier de clé requis si SSL est activé
cname ssl_cname cname si SSL 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