Que sont les points de terminaison Azure Machine Learning ?

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

Utilisez les points de terminaison Azure Machine Learning pour simplifier les déploiements de modèle pour les déploiements d’inférence en temps réel et par lot. Les points de terminaison fournissent une interface unifiée pour appeler et gérer des déploiements de modèle pour différents types de calcul.

Cet article porte sur les points suivants :

  • Points de terminaison
  • Déploiements
  • Points de terminaison en ligne managés
  • Points de terminaison en ligne Kubernetes
  • Points de terminaison d’inférence par lot

Que sont les points de terminaison et les déploiements ?

Après avoir entraîné un modèle Machine Learning, vous devez le déployer pour que d’autres personnes puissent l’utiliser afin d’effectuer l’inférence. Dans Azure Machine Learning, vous pouvez utiliser des points de terminaison et des déploiements à cette fin.

Un point de terminaison est un point de terminaison HTTPS que les clients peuvent appeler pour recevoir la sortie d’inférence (scoring) d’un modèle entraîné. Il offre :

  • Authentification basée sur la méthode « clé et jeton »
  • Arrêt SSL
  • Un URI de scoring stable (nom-point-de-terminaison.region.inference.ml.azure.com)

Un déploiement est un ensemble de ressources nécessaires pour héberger le modèle qui effectue l’inférence réelle.

Un point de terminaison unique peut contenir plusieurs déploiements. Les points de terminaison et les déploiements sont des ressources Azure Resource Manager indépendantes présentées dans le portail Azure.

Azure Machine Learning utilise le concept de points de terminaison et de déploiements pour l’implémentation de différents types de points de terminaison : les points de terminaison en ligne et les points de terminaison de traitement de lots.

Plusieurs interfaces développeur

Créez et gérez des points de terminaison de traitement de lots et en ligne avec plusieurs outils de développement :

  • Interface Azure CLI et SDK Python
  • API Azure Resource Manager/REST
  • Portail web du studio Azure Machine Learning
  • Portail Azure (informatique/administrateur)
  • Prise en charge des pipelines MLOps CI/CD avec l’interface Azure CLI et les interfaces REST/ARM

Que sont les points de terminaison en ligne ?

Les points de terminaison en ligne sont des points de terminaison utilisés pour l’inférence en ligne (en temps réel). À la différence des points de terminaison de traitement de lots, les points de terminaison en ligne contiennent des déploiements prêts à recevoir des données des clients et pouvant renvoyer des réponses en temps réel.

Le diagramme suivant montre un point de terminaison en ligne qui a deux déploiements : « bleu » et « vert ». Le déploiement bleu utilise des machines virtuelles avec une référence de processeur et exécute la version 1 d’un modèle. Le déploiement vert utilise des machines virtuelles avec une référence de GPU et utilise la version 2 du modèle. Le point de terminaison est configuré pour acheminer 90 % du trafic entrant vers le déploiement bleu, tandis que le vert reçoit les 10 % restants.

Schéma montrant un point de terminaison divisant le trafic en deux déploiements.

Conditions requises pour les déploiements en ligne

Pour créer un point de terminaison en ligne, vous devez spécifier les éléments suivants :

  • Fichiers de modèle (ou spécifiez un modèle inscrit dans votre espace de travail)
  • Script de scoring : code nécessaire pour effectuer le scoring/l’inférence
  • Environnement : une image Docker avec des dépendances Conda ou un Dockerfile
  • Paramètres de mise à l’échelle et d’instance de calcul

Découvrez comment déployer des points de terminaison en ligne à partir de l’interface CLI/du kit SDK et du portail web du studio.

Tester et déployer localement pour un débogage plus rapide

Déployez localement pour tester vos points de terminaison sans les déployer dans le cloud. Azure Machine Learning crée une image Docker locale qui reproduit l’image Azure ML. Azure Machine Learning générera et exécutera les déploiements pour vous localement et mettra l’image en cache pour des itérations rapides.

Déploiement bleu/vert natif

Rappelez-vous qu’un seul point de terminaison peut avoir plusieurs déploiements. Le point de terminaison en ligne peut effectuer l’équilibrage de charge pour donner un pourcentage du trafic à chaque déploiement.

L’allocation du trafic peut être utilisée pour effectuer des déploiements bleus/verts sûrs en équilibrant les requêtes entre les différentes instances.

Conseil

Une requête peut contourner l’équilibrage de charge du trafic configuré en incluant un en-tête HTTP de azureml-model-deployment. Définissez la valeur d’en-tête sur le nom du déploiement auquel vous souhaitez que la requête soit acheminée.

Capture d’écran montrant l’interface à curseur permettant de définir l’allocation du trafic entre les déploiements

Schéma montrant un point de terminaison divisant le trafic en deux déploiements.

Le trafic vers un déploiement peut également être mis en miroir (ou copié) vers un autre déploiement. La mise en miroir du trafic (également appelée ombrage) est utile lorsque vous souhaitez tester des éléments tels que la latence de réponse ou les conditions d’erreur sans affecter les clients en direct ; par exemple, lors de l’implémentation d’un déploiement bleu/vert où 100 % du trafic est routé vers le bleu et 10 % est mis en miroir vers le déploiement vert. Avec la mise en miroir, les résultats du trafic vers le déploiement en vert ne sont pas retournés vers clients, mais les métriques et les journaux sont collectés. Le test du nouveau déploiement avec la mise en miroir/ombrage du trafic est également appelé test instantané, et la fonctionnalité est actuellement une fonctionnalité en préversion .

Schéma montrant un point de terminaison mettant en miroir le trafic sur un déploiement.

Découvrez comment effectuer un déploiement sûr vers des points de terminaison en ligne.

Intégration d’Application Insights

Tous les points de terminaison en ligne s’intègrent à Application Insights. Ils permettent ainsi de superviser les Contrats de niveau de service et de diagnostiquer les problèmes.

Cependant, les points de terminaison en ligne managés incluent également l’intégration standard aux journaux et métriques Azure.

Sécurité

  • Authentification : clé et jetons Azure ML
  • Identité managée : affectée par l’utilisateur et par le système
  • SSL par défaut pour l’appel de point de terminaison

Mise à l’échelle automatique

La mise à l’échelle automatique exécute automatiquement la quantité appropriée de ressources pour gérer la charge sur votre application. Les points de terminaison gérés prennent en charge la mise à l’échelle automatique via l’intégration à la fonctionnalité de mise à l’échelle automatique d’Azure Monitor. Vous pouvez configurer la mise à l’échelle basée sur les métriques (par exemple utilisation du processeur > 70 %), la mise à l’échelle basée sur la planification (par exemple les règles de mise à l’échelle pour les heures de pointe) ou une combinaison des deux.

Capture d’écran montrant que la mise à l’échelle automatique offre une mise à l’échelle flexible entre les instances min et max, en fonction des règles.

Débogage Visual Studio Code

Visual Studio Code vous permet de déboguer les points de terminaison de manière interactive.

Capture d’écran du débogage du point de terminaison dans VSCode.

Prise en charge d'un point de terminaison privé

Si vous le souhaitez, vous pouvez sécuriser la communication avec un point de terminaison en ligne managé à l’aide de points de terminaison privés.

Vous pouvez configurer la sécurité pour les demandes de scoring entrantes et les communications sortantes avec l’espace de travail et d’autres services séparément. Les communications entrantes utilisent le point de terminaison privé de l’espace de travail Azure Machine Learning. Les communications sortantes utilisent des points de terminaison privés créés par déploiement.

Pour plus d’informations, consultez Sécuriser les points de terminaison en ligne.

Points de terminaison en ligne managés et points de terminaison en ligne Kubernetes

Il existe deux types de points de terminaison en ligne : les points de terminaison en ligne managés et les points de terminaison en ligne Kubernetes.

Les points de terminaison en ligne managés vous aident à déployer vos modèles de ML dans un mode clé en main. Les points de terminaison en ligne managés fonctionnent avec des ordinateurs de processeur et GPU puissants dans Azure de manière évolutive et entièrement gérée. Les points de terminaison en ligne gérés prennent en charge la fourniture, la mise à l’échelle et le monitoring de vos modèles, ce qui vous évite la surcharge liée à la configuration et à la gestion de l’infrastructure sous-jacente. L’exemple principal de ce document utilise des points de terminaison en ligne managés pour le déploiement.

Le point de terminaison en ligne Kubernetes vous permet de déployer des modèles et de servir des points de terminaison en ligne sur votre cluster Kubernetes entièrement configuré et managé n’importe où, avec des UC ou des GPU.

Le tableau suivant met en évidence les principales différences entre les points de terminaison en ligne managés et les points de terminaison en ligne Kubernetes.

Points de terminaison en ligne managés Points de terminaison en ligne Kubernetes
Utilisateurs concernés Utilisateurs qui souhaitent un déploiement de modèle managé et une expérience MLOps améliorée Utilisateurs qui préfèrent Kubernetes et peuvent autogérer les exigences d’infrastructure
Gestion de l’infrastructure Provisionnement de calcul, mise à l’échelle, mises à jour de l’image du système d’exploitation hôte et durcissement de la sécurité managés Responsabilité de l’utilisateur
Type de capacité de calcul Managé (AmlCompute) Cluster Kubernetes (Kubernetes)
Supervision standard Surveillance Azure
(comprend des métriques clés telles que la latence et le débit)
Prise en charge
Journalisation standard Journaux Azure et Log Analytics au niveau du point de terminaison Non pris en charge
Application Insights Pris en charge Pris en charge
Identité gérée Pris en charge Prise en charge
Réseau virtuel (VNet) Prise en charge (préversion) Prise en charge
Visualisation des coûts Au niveau du point de terminaison et du déploiement Au niveau du cluster
Trafic en miroir Pris en charge Non pris en charge
Déploiement sans code Pris en charge (modèles MLflow et Triton) Pris en charge (modèles MLflow et Triton)

Points de terminaison en ligne managés

Les points de terminaison en ligne managés peuvent contribuer à simplifier votre processus de déploiement. Les points de terminaison en ligne managés offrent les avantages suivants par rapport aux points de terminaison en ligne Kubernetes :

  • Infrastructure managée

    • Provisionne automatiquement le calcul et héberge le modèle (vous devez simplement spécifier les paramètres de type de machine virtuelle et de mise à l’échelle)
    • Applique automatiquement les mises à jour et patchs à l’image du système d’exploitation hôte sous-jacent
    • Récupération automatique de nœud en cas de défaillance du système
  • Supervision et journaux

    • Supervisez la disponibilité, les performances et le SLA du modèle à l’aide de l’intégration native à Azure Monitor.
    • Déboguez les déploiements à l’aide des journaux et de l’intégration native à Azure Log Analytics.

    Capture d’écran montrant un graphe Azure Monitor de la latence du point de terminaison.

  • Voir les coûts

    Capture d’écran montrant le graphique de coûts d’un point de terminaison et d’un déploiement.

    Notes

    Les points de terminaison en ligne managés sont basés sur le calcul Azure Machine Learning. Lorsque vous utilisez un point de terminaison en ligne managé, vous payez les frais de calcul et de mise en réseau. Il n’y a aucun frais supplémentaire.

    Si vous utilisez un réseau virtuel et que vous sécurisez le trafic sortant à partir du point de terminaison en ligne managé, il existe un coût supplémentaire. Pour la sortie, trois points de terminaison privés sont créés par déploiement pour le point de terminaison en ligne managé. Ils sont utilisés pour communiquer avec le compte de stockage par défaut, Azure Container Registry et l’espace de travail. Des frais de mise en réseau supplémentaires peuvent s’appliquer. Pour plus d’informations sur la tarification, consultez la calculatrice de prix Azure.

Pour un didacticiel pas à pas, consultez Comment déployer des points de terminaison en ligne.

Que sont les points de terminaison de traitement de lots ?

Les points de terminaison de traitement de lots sont des points de terminaison utilisés pour effectuer l’inférence par lot sur de grands volumes de données, sur une période donnée. Les points de terminaison de traitement de lots reçoivent des pointeurs vers les données et exécutent les tâches de façon asynchrone pour traiter les données en parallèle sur les clusters de calcul. Les points de terminaison de traitement de lots stockent les sorties dans un magasin de données en vue d’une analyse plus approfondie.

Diagramme montrant qu’un seul point de terminaison de lot peut acheminer les requêtes vers plusieurs déploiements, dont l’un est le choix par défaut.

Exigences en matière de déploiement par lots

Pour créer un déploiement par lots, vous devez spécifier les éléments suivants :

  • Fichiers de modèle (ou spécifiez un modèle inscrit dans votre espace de travail)
  • Calcul
  • Script de scoring : code nécessaire pour effectuer le scoring/l’inférence
  • Environnement : une image Docker avec des dépendances Conda

Si vous déployez des modèles MLFlow dans des déploiements par lots, il n’est pas nécessaire de fournir un script de scoring et un environnement d’exécution, car les deux sont générés automatiquement.

En savoir plus sur le déploiement et l’utilisation des points de terminaison de traitement par lots.

Coût maîtrisé avec le scaling automatique des ressources de calcul

L’appel d’un point de terminaison de traitement de lots déclenche un travail d’inférence par lot asynchrone. Les ressources de calcul sont automatiquement provisionnées au démarrage du travail et désallouées à la fin du travail. Ainsi, vous payez pour le calcul uniquement quand vous l’utilisez.

Vous pouvez remplacer les paramètres de ressource de calcul (comme le nombre d’instances) et les paramètres avancés (tels que la taille des mini-lots, le seuil d’erreur, etc.) pour chaque travail d’inférence par lot afin d’accélérer l’exécution et de réduire les coûts.

Sources de données et stockage flexibles

Vous pouvez utiliser les options suivantes pour les données d’entrée quand vous appelez un point de terminaison de traitement de lots :

  • Données cloud : Il peut s’agir d’un chemin sur le magasin de données Azure Machine Learning inscrit, d’une référence à une ressource de données V2 Azure Machine Learning inscrite ou d’un URI public. Pour plus d’informations, consultez Données dans Azure Machine Learning.
  • Données stockées localement : les données sont automatiquement chargées dans le magasin de données Azure ML inscrit et passées au point de terminaison de lot.

Notes

  • Si vous utilisez des FileDatasets V1 existants pour les points de terminaison de lot, nous vous recommandons de les migrer vers des ressources de données V2. Vous pouvez ensuite faire référence aux ressources de données V2 directement lors de l’appel de points de terminaison de lot. Actuellement, seules les ressources de données de type uri_folder ou uri_file sont prises en charge. Les points de terminaison de lot créés avec GA CLIv2 (2.4.0 et ultérieur) ou l’API REST GA (2022-05-01 et ultérieur) ne prennent pas en charge le jeu de données V1.
  • Vous pouvez également extraire l’URI ou le chemin d’accès des magasins de données à partir de FileDatasets V1. Pour cela, vous allez utiliser la commande az ml dataset show avec le paramètre--query et utiliser ces informations pour appeler.
  • Alors que les points de terminaison de lot créés avec les API antérieures continueront à prendre en charge les FileDatasets V1, nous ajouterons davantage de prise en charge des ressources de données V2 dans les dernières versions de l’API pour une meilleure convivialité et flexibilité. Pour plus d’informations sur les ressources de données V2, consultez Utiliser des données à l’aide du Kit de développement logiciel (SDK) v2. Pour plus d’informations sur la nouvelle expérience V2, consultez Qu’est-ce que v2.

Pour plus d’informations sur les options d’entrée prises en charge, consultez Accès aux données à partir de travaux de points de terminaison de traitement par lots.

Définissez l’emplacement de sortie de stockage sur n’importe quel magasin de données et chemin. Par défaut, les points de terminaison de traitement de lots stockent leur sortie dans le magasin d’objets blob par défaut de l’espace de travail. Le stockage est organisé selon le nom du travail (GUID généré par le système).

Sécurité

  • Authentification : jetons Azure Active Directory
  • SSL : activé par défaut pour l’appel du point de terminaison
  • Prise en charge de réseau virtuel : les points de terminaison de lot prennent en charge la protection d’entrée. Un point de terminaison de lot avec protection d’entrée accepte uniquement les demandes de scoring provenant d’hôtes dans un réseau virtuel (pas de l’Internet public). Un point de terminaison de lot créé dans un espace de travail avec liaison privée bénéficie d’une protection d’entrée. Pour créer un espace de travail avec liaison privée, consultez Créer un espace de travail sécurisé.

Notes

La création de points de terminaison de traitement par lots dans un espace de travail avec private-link n’est prise en charge que dans les versions suivantes.

  • CLI - version 2.15.1 ou ultérieure.
  • API REST version 2022-05-01 ou ultérieure.
  • SDK V2 - version 0.1.0b3 ou ultérieure.

Étapes suivantes