Partager via


Points de terminaison pour l’inférence en production

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

Une fois que vous avez entraîné des pipelines ou des modèles Machine Learning, ou que vous avez trouvé des modèles à partir du catalogue de modèles qui répondent à vos besoins, vous devez les déployer en production afin que d’autres utilisateurs puissent les utiliser pour l’inférence. L’inférence est le processus permettant d’appliquer de nouvelles données d’entrée à un pipeline ou un modèle Machine Learning pour générer des sorties. Bien que ces sorties soient généralement appelées « prédictions », l’inférence peut être utilisée pour générer des sorties pour d’autres tâches d’apprentissage automatique, telles que la classification et le clustering. Dans Azure Machine Learning, vous effectuez l’inférence à l’aide de points de terminaison.

Points de terminaison et déploiements

Un point de terminaison est une URL stable et durable qui peut être utilisé pour faire la requête ou appeler un modèle. Vous fournissez les entrées requises au point de terminaison et récupérez les sorties. Azure Machine Learning vous permet d’implémenter des points de terminaison d’API serverless, des points de terminaison en ligne et des points de terminaison par lots. Un point de terminaison fournit :

  • une URL stable et durable (comme endpoint-name.region.inference.ml.azure.com),
  • un mécanisme d’authentification, et
  • un mécanisme d’autorisation.

Un déploiement est un ensemble de ressources et de calculs nécessaires pour héberger le modèle ou le composant qui effectue l’inférence réelle. Un point de terminaison contient un déploiement et, pour les points de terminaison en ligne et par lots, un point de terminaison peut contenir plusieurs déploiements. Les déploiements peuvent héberger des éléments indépendants et consommer des ressources différentes en fonction des besoins de ces éléments. De plus, un point de terminaison a un mécanisme de routage qui peut diriger les requêtes vers n’importe lequel de ses déploiements.

D’un côté, certains types de points de terminaison dans Azure Machine Learning consomment des ressources dédiées sur leurs déploiements. Pour que ces points de terminaison s’exécutent, vous devez disposer d’un quota de calcul sur votre abonnement Azure. De l’autre, certains modèles prennent en charge un déploiement serverless, ce qui leur permet de ne consommer aucun quota de votre abonnement. Pour le déploiement serverless, vous êtes facturé à l’utilisation.

Intuition

Imaginons que vous travaillez sur une application qui prédit le type et la couleur d’une voiture en fonction de sa photo. Pour cette application, un utilisateur disposant de certaines informations d’identification effectue une requête HTTP à une URL et fournit une image d’une voiture dans le cadre de la requête. En retour, l’utilisateur obtient une réponse qui inclut le type et la couleur de la voiture en tant que valeurs de chaîne. Dans ce scénario, l’URL sert de point de terminaison.

Diagramme montrant le concept de point de terminaison.

En outre, supposons qu’une scientifique des données, Alice, travaille à l’implémentation de l’application. Alice connaît bien TensorFlow et décide d’implémenter le modèle à l’aide d’un classifieur séquentiel Keras avec une architecture RestNet à partir du TensorFlow Hub. Après avoir testé le modèle, Alice est satisfaite de ses résultats et décide d’utiliser le modèle pour résoudre le problème de prédiction de voiture. Le modèle est volumineux et nécessite 8 Go de mémoire avec 4 cœurs pour s’exécuter. Dans ce scénario, le modèle d’Alice et les ressources, telles que le code et le calcul, nécessaires pour exécuter le modèle, constituent un déploiement sous le point de terminaison.

Diagramme montrant le concept de déploiement.

Imaginons qu’après quelques mois, l’organisation découvre que l’application fonctionne mal sur les images dans des conditions d’éclairage insuffisantes. Bob, un autre scientifique des données, connaît très bien les techniques d’argumentation des données qui aident le modèle à créer une robustesse sur ce facteur. Cependant, Bob préfère utiliser Torch pour implémenter le modèle et entraîne un nouveau modèle avec Torch. Bob aimerait essayer ce modèle en production progressivement jusqu’à ce que l’organisation soit prête à mettre hors service l’ancien modèle. Le nouveau modèle affiche également de meilleures performances lorsqu’il est déployé sur GPU, le déploiement doit donc inclure un GPU. Dans ce scénario, le modèle de Bob et les ressources, telles que le code et le calcul, nécessaires pour exécuter le modèle, constituent un autre déploiement sous le même point de terminaison.

Diagramme montrant le concept d’un point de terminaison avec plusieurs déploiements.

Points de terminaison : API serverless, en ligne et par lots

Azure Machine Learning vous permet d’implémenter des points de terminaison d’API serverless, des points de terminaison en ligne et des points de terminaison par lots.

Les points de terminaison d’API serverless et les points de terminaison en ligne sont conçus pour l’inférence en temps réel. Chaque fois que vous appelez le point de terminaison, les résultats sont retournés dans la réponse de celui-ci. Les points de terminaison d’API serverless ne consomment aucun quota de votre abonnement. Au lieu de cela, ils sont facturés sur la base du paiement à l’utilisation.

Les points de terminaison par lots sont conçus pour l’inférence par lots à long terme. Chaque fois que vous appelez un point de terminaison par lots, vous générez un travail par lots qui se charge de ce qu’il y a à faire.

Quand utiliser les points de terminaison d’API serverless, en ligne et par lots

Points de terminaison d’API serverless :

Utilisez les points de terminaison d’API serverless afin de consommer de grands modèles de base pour l’inférence en temps réel standard ou pour les affiner. Le déploiement vers des points de terminaison d’API serverless n’est pas disponible pour tous les modèles. Nous vous recommandons d’utiliser ce mode de déploiement lorsque :

  • Votre modèle est un modèle de base ou une version affinée de celui-ci qui est disponible pour les déploiements d’API serverless.
  • Vous pouvez bénéficier d’un déploiement sans quota.
  • Vous n’avez pas besoin de personnaliser la pile d’inférence utilisée pour exécuter le modèle.

Points de terminaison en ligne :

Utilisez les points de terminaison en ligne pour rendre les modèles opérationnels pour l’inférence en temps réel dans les requêtes synchrones à faible latence. Nous vous recommandons de les utiliser dans les cas suivants :

  • Votre modèle est un modèle de base ou une version affinée de celui-ci, mais il n’est pas pris en charge dans les points de terminaison d’API serverless.
  • Vous êtes soumis à des exigences de faible latence.
  • Votre modèle peut répondre à la requête dans un laps de temps relativement court.
  • Les entrées de votre modèle correspondent à la charge utile HTTP de la requête.
  • Vous devez effectuer un scale-up en termes de nombre de requêtes.

Points de terminaison par lots :

Utilisez des points de terminaison de lot pour rendre opérationnels des modèles ou des pipelines pour l’inférence asynchrone de longue durée. Nous vous recommandons de les utiliser dans les cas suivants :

  • Vous disposez de modèles ou de pipelines coûteux qui nécessitent un temps d’exécution plus long.
  • Vous souhaitez rendre opérationnels les pipelines Machine Learning et réutiliser les composants.
  • Vous devez effectuer une inférence sur de grandes quantités de données qui sont distribuées dans plusieurs fichiers.
  • Vous n’avez pas d’exigences de faible latence.
  • Les entrées de votre modèle sont stockées dans un compte de stockage ou dans un élément de données Azure Machine Learning.
  • Vous pouvez tirer parti de la parallélisation.

Comparaison des points de terminaison d’API serverless, en ligne et par lots

Tous les points de terminaison d’API serverless, en ligne et par lots sont basés sur le concept de points de terminaison, c’est pourquoi vous pouvez passer facilement de l’un à l’autre. Les points de terminaison en ligne et par lots peuvent également gérer plusieurs déploiements pour le même point de terminaison.

Points de terminaison

Le tableau suivant présente un résumé des différentes fonctionnalités disponibles pour les points de terminaison d’API serverless, en ligne et par lots au niveau du point de terminaison.

Fonctionnalité Points de terminaison d’API serverless Points de terminaison en ligne Points de terminaison batch
URL d’appel stable Oui Oui Oui
Prise en charge de plusieurs déploiements Non Oui Oui
Routage du déploiement Aucun Fractionnement du trafic Basculement vers la valeur par défaut
Mettre en miroir le trafic pour un déploiement sécurisé Non Oui Non
Prise en charge de Swagger Oui Oui Non
Authentification Clé Clé et Microsoft Entra ID (préversion) Microsoft Entra ID
Prise en charge des réseaux privés (hérité) Non Oui Oui
Isolation de réseau gérée Oui Oui Oui (voir la configuration supplémentaire requise)
Clés gérées par le client NA Oui Oui
Base des coûts Par point de terminaison, par minute1 None None

1Une petite partie est facturée pour les points de terminaison d’API serverless par minute. Consultez la section Déploiements pour les frais liés à la consommation facturés par jeton.

Déploiements

La table suivante présente un résumé des différentes fonctionnalités disponibles pour les points de terminaison d’API serverless, en ligne et par lots au niveau du déploiement. Ces concepts s’appliquent à chaque déploiement sous le point de terminaison (pour les points de terminaison en ligne et par lots) et s’appliquent aux points de terminaison d’API serverless (où le concept de déploiement est intégré au point de terminaison).

Fonctionnalité Points de terminaison d’API serverless Points de terminaison en ligne Points de terminaison batch
Types de déploiement Modèles Modèles Modèles et composants de pipeline
Déploiement de modèles MLflow Non, seuls des modèles particuliers du catalogue Oui Oui
Déploiement de modèles personnalisés Non, seuls des modèles particuliers du catalogue Oui, avec un script de scoring Oui, avec un script de scoring
Déploiement de package de modèle 2 Intégré Oui (préversion) Non
Serveur d’inférence 3 API d’inférence de modèle Azure AI – Serveur d’inférence Azure Machine Learning
– Triton
– Personnalisé (avec BYOC)
Inférence par lots
Ressource de calcul consommée Aucun (serverless) Instances ou ressources granulaires Instances de cluster
Type de capacité de calcul Aucun (serverless) Calcul managé et Kubernetes Calcul managé et Kubernetes
Calcul à faible priorité NA Non Oui
Calcul de mise à l’échelle à zéro Intégré Non Oui
Calcul de mise à l’échelle automatique4 Intégré Oui, en fonction de l’utilisation des ressources Oui, en fonction du nombre de travaux
Gestion des surcapacités Limitation Limitation Mise en file d'attente
Base des coûts5 Par jeton Par déploiement : instances de calcul en cours d’exécution Par travail : instance de calcul consommée dans le travail (limité au nombre maximal d’instances du cluster)
Test local des déploiements Non Oui Non

2 Le déploiement de modèles MLflow sur des points de terminaison sans connectivité Internet sortante ou réseaux privés nécessite d’abord d’empaqueter le modèle.

3 Le serveur d’inférence fait référence à la technologie de service qui accepte les requêtes, les traite, et crée des réponses. Le serveur d’inférence détermine également le format de l’entrée et les sorties attendues.

4 La mise à l’échelle automatique permet d’effectuer dynamiquement un scale-up ou un scale-down des ressources allouées du déploiement en fonction de sa charge. Les déploiements en ligne et par lots utilisent différentes stratégies de mise à l’échelle automatique. Alors que les déploiements en ligne sont mis à l’échelle en fonction de l’utilisation des ressources (comme le processeur, la mémoire, les requêtes, etc.), les points de terminaison par lots sont mis à l’échelle en fonction du nombre de travaux créés.

5 Les déploiements en ligne et par lots sont facturés en fonction des ressources consommées. Dans les déploiements en ligne, les ressources sont approvisionnées au moment du déploiement. Dans le déploiement par lots, les ressources ne sont pas consommées au moment du déploiement, mais au moment de l’exécution du travail. Par conséquent, aucun coût n’est associé au déploiement par lots lui-même. De même, les travaux en file d’attente ne consomment pas non plus de ressources.

Interfaces développeur

Les points de terminaison sont conçus pour aider les organisations à rendre opérationnelles les charges de travail au niveau de la production dans Azure Machine Learning. Les points de terminaison sont des ressources robustes et évolutives qui fournissent les meilleures fonctionnalités pour implémenter des workflows MLOps.

Vous pouvez créer et gérer des points de terminaison par 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