Share via


Déployer un flux en tant que point de terminaison en ligne managé pour l’inférence en temps réel

Après avoir généré un flux et l’avoir testé correctement, vous voudrez probablement le déployer en tant que point de terminaison afin de pouvoir appeler le point de terminaison pour l’inférence en temps réel.

Dans cet article, vous allez apprendre à déployer un flux en tant que point de terminaison en ligne managé pour l’inférence en temps réel. Les étapes à suivre sont les suivantes :

Important

Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. La préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Prérequis

  • Découvrez comment générer et tester un flux dans le flux d’invite.

  • Connaître les bases des points de terminaison en ligne managés. Les points de terminaison en ligne managés fonctionnent de manière scalable et complètement managée avec des machines équipées de processeurs et de GPU puissants dans Azure, lequel vous libère des contraintes de configuration et de gestion de l’infrastructure de déploiement sous-jacente. Pour plus d’informations sur les points de terminaison en ligne managés, consultez Points de terminaison et déploiements en ligne pour l’inférence en temps réel.

  • Les contrôles d’accès en fonction du rôle Azure (Azure RBAC) sont utilisés pour accorder l’accès aux opérations dans Azure Machine Learning. Pour pouvoir déployer un point de terminaison dans le flux d’invite, votre compte d’utilisateur doit se voir attribuer le rôle Scientifique des données AzureML ou un rôle avec plus de privilèges pour l’espace de travail Azure Machine Learning.

  • Disposer d’une compréhension de base des identités managées. En savoir plus sur les Identités managées.

Générer le flux et le préparer pour le déploiement

Si vous avez déjà terminé le tutoriel de démarrage, vous avez déjà testé le flux correctement en soumettant une exécution par lots et en évaluant les résultats.

Si vous n’avez pas terminé le tutoriel, vous devez créer un flux. Il est recommandé de tester correctement le flux avec une exécution et une évaluation par lots avant le déploiement.

Nous allons utiliser l’exemple de classification Web de flux comme exemple pour montrer comment déployer le flux. Cet exemple de flux est un flux standard. Le déploiement de flux de conversation est similaire. Le flux d’évaluation ne prend pas en charge le déploiement.

Définition de l’environnement utilisé par le déploiement

Lorsque vous déployez un flux d’invite sur un point de terminaison en ligne managé dans l’interface utilisateur, le déploiement utilise par défaut l’environnement créé à partir de la dernière image du flux d’invite et les dépendances spécifiées dans le requirements.txt du flux. Vous pouvez spécifier des packages supplémentaires dont vous aviez besoin dans requirements.txt. Vous pouvez trouver requirements.txt dans le dossier racine de votre dossier de flux.

Capture d’écran du texte des exigences du flux.

Si vous utilisez l’environnement client pour créer un runtime d’instance de calcul, vous trouverez l’image dans la page de détails de l’environnement d’Azure Machine Learning studio. Pour en savoir plus, consultez Personnaliser l’environnement avec le contexte Docker pour le runtime.

Capture d’écran du nom d’image dans la page détaillée de l’environnement.

Ensuite, vous devez également spécifier l’image à environment dans flow.dag.yaml dans le dossier de flux.

Capture d’écran de la personnalisation d’événement pour un runtime automatique dans la page de flux.

Remarque

Si vous utilisez des flux privés dans Azure DevOps, vous devez d’abord générer l’image avec des flux privés et sélectionner un environnement personnalisé à déployer dans l’interface utilisateur.

Créer un déploiement en ligne

Maintenant que vous avez créé un flux et que vous l’avez testé correctement, il est temps de créer votre point de terminaison en ligne pour l’inférence en temps réel.

Le flux d’invite vous permet de déployer des points de terminaison à partir d’un flux ou d’une exécution par lots. Tester le flux avant le déploiement est une bonne pratique que nous recommandons.

Dans la page de création de flux ou la page de détails de l’exécution, sélectionnez Déployer.

Page de création de flux :

Capture d’écran de la classification Web sur la page de création du flux.

Page des détails de l’exécution :

Capture d’écran de la classification Web sur la page des détails de l’exécution.

Un Assistant vous permettant de configurer le point de terminaison se produit et inclut les étapes suivantes.

Paramètres de base

Capture d’écran de l’assistant de déploiement sur la page du point de terminaison.

Cette étape vous permet de configurer les paramètres de base du déploiement.

Propriété Description
Point de terminaison Vous pouvez choisir de déployer un nouveau point de terminaison ou de mettre à jour un point de terminaison existant.
Si vous sélectionnez Nouveau, vous devez spécifier le nom du point de terminaison.
Nom du déploiement - Dans le même point de terminaison, le nom de déploiement doit être unique.
- Si vous sélectionnez un point de terminaison existant et que vous entrez un nom de déploiement existant, ce déploiement est remplacé par les nouvelles configurations.
Machine virtuelle Taille de machine virtuelle à utiliser pour le déploiement. Pour obtenir la liste des tailles prises en charge, consultez la liste des références SKU des points de terminaison en ligne managés.
Nombre d’instances Nombre d’instances à utiliser pour le déploiement. Spécifiez la valeur sur la charge de travail que vous attendez. Pour une haute disponibilité, nous vous recommandons de définir la valeur sur au moins 3. Nous réservons 20 % en plus pour effectuer des mises à niveau. Pour plus d’informations, consultez les quotas de points de terminaison en ligne managés
Collecte de données d’inférence Si vous activez cette option, les entrées et sorties de flux seront collectées automatiquement dans une ressource de données Azure Machine Learning et pourront être utilisées pour la supervision ultérieure. Pour en savoir plus, consultez Supervision des applications d’IA générative.
Diagnostics Application Insights Si vous activez cette option, les métriques système (telles que le nombre de jetons, la latence du flux, la demande de flux, etc.) sont collectées au cours du temps d’inférence dans l’espace de travail par défaut Application Insights. Pour plus d’informations, consultez Les métriques de flux d’invite.

Une fois que vous avez terminé avec les paramètres de base, vous pouvez directement passer à Vérifier + créer pour finir la création, ou vous pouvez sélectionner Suivant pour configurer les Paramètres avancés.

Paramètres avancés - Point de terminaison

Vous pouvez spécifier les paramètres suivants pour le point de terminaison.

Capture d’écran des paramètres de l’assistant de déploiement sur la page du point de terminaison.

Type d'authentification

Méthode d’authentification du point de terminaison. L’authentification par clé fournit une clé primaire et secondaire qui n’expire pas. L’authentification basée sur les jetons Azure Machine Learning fournit un jeton qui s’actualise régulièrement automatiquement. Pour plus d’informations sur l’authentification, consultez S’authentifier auprès d’un point de terminaison en ligne.

Type d'identité

Le point de terminaison doit accéder aux ressources Azure telles que Azure Container Registry ou les connexions de votre espace de travail pour l’inférence. Vous pouvez autoriser l’autorisation de point de terminaison à accéder aux ressources Azure en accordant l’autorisation à son identité managée.

L’identité attribuée par le système est créée automatiquement après la création de votre point de terminaison, tandis que l’identité attribuée par l’utilisateur est créée par l’utilisateur. En savoir plus sur les Identités managées.

Attribué par le système

Vous remarquerez qu’il existe une option pour Appliquer l’accès aux secrets de connexion (préversion). Si votre flux utilise des connexions, le point de terminaison doit y accéder pour procéder à l’inférence. L’option est activée par défaut et le point de terminaison reçoit le rôle Lecteur de secrets de connexion de l’espace de travail Azure Machine Learning pour accéder automatiquement aux connexions si vous disposez d’une autorisation de lecteur de secrets de connexion. Si vous désactivez cette option, vous devez vous-même accorder ce rôle à l’identité affectée par le système manuellement ou demander de l’aide à votre administrateur. En savoir plus sur l’octroi d’autorisations à l’identité du point de terminaison.

Affectée par l’utilisateur

Lorsque vous créez le déploiement, Azure essaie de extraire (pull) l’image conteneur de l’utilisateur du registre ACR (Azure Container Registry) de l’espace de travail, puis monte les artefacts de modèle et de code utilisateur dans le conteneur utilisateur à partir du compte de stockage de l’espace de travail.

Si vous avez créé le point de terminaison associé avec une identité affectée par l’utilisateur, celle-ci doit recevoir les rôles suivants avant la création du déploiement, sinon la création du déploiement échoue.

Étendue Rôle Pourquoi il est nécessaire
Espace de travail Azure Machine Learning Rôle Lecteur de secrets de connexion de l’espace de travail Azure Machine LearningOU un rôle personnalisé avec « Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action » Obtenir des connexions à l’espace de travail
Registre de conteneurs d’espace de travail ACR pull Tirage (pull) d’image de conteneur
Stockage par défaut de l’espace de travail Lecteur des données blob du stockage Charger le modèle à partir du stockage
(Facultatif) Espace de travail Azure Machine Learning Enregistreur de métriques d’espace de travail Après avoir déployé le point de terminaison, si vous souhaitez surveiller les métriques liées au point de terminaison telles que l’utilisation du processeur/GPU/disque/mémoire, vous devez accorder cette autorisation à l’identité.

Consultez les instructions détaillées sur la façon d’accorder des autorisations à l’identité du point de terminaison dans Accorder des autorisations au point de terminaison.

Paramètres avancés - Déploiement

Dans cette étape, à l’exception des étiquettes, vous pouvez également spécifier l’environnement utilisé par le déploiement.

Capture d’écran de l’environnement du déploiement.

Utiliser l’environnement de la définition du flux actuel

Par défaut, le déploiement utilise l’environnement créé en fonction de l’image de base spécifiée dans le flow.dag.yaml et les dépendances spécifiées dans le requirements.txt.

  • Vous pouvez spécifier l’image de base dans le flow.dag.yaml en sélectionnant Raw file mode du flux. Si aucune image n’est spécifiée, l’image de base par défaut est l’image de base de flux d’invite la plus récente.

    Capture d’écran de la spécification de l’image de base dans le fichier yaml brut du flux.

  • Vous pouvez trouver requirements.txt dans le dossier racine de votre dossier de flux et y ajouter des dépendances.

    Capture d’écran du texte des exigences du flux.

Utiliser un environnement personnalisé

Vous pouvez également créer un environnement personnalisé et l’utiliser pour le déploiement.

Remarque

Votre environnement personnalisé doit répondre aux exigences suivantes :

  • l’image Docker doit être créée en fonction de l’image de base de flux d’invite, mcr.microsoft.com/azureml/promptflow/promptflow-runtime-stable:<newest_version>. Vous trouverez ici la dernière version.
  • la définition de l’environnement doit inclure le inference_config.

Voici un exemple de définition d’environnement personnalisée.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
  path: ./image_build
  dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
  liveness_route:
    port: 8080
    path: /health
  readiness_route:
    port: 8080
    path: /health
  scoring_route:
    port: 8080
    path: /score

Paramètres avancés : Sorties et connexions

Dans cette étape, vous pouvez afficher toutes les sorties de flux et spécifier celles qui seront incluses dans la réponse du point de terminaison que vous déployez. Par défaut, toutes les sorties de flux sont sélectionnées.

Vous pouvez également spécifier les connexions utilisées par le point de terminaison lorsque celui-ci procède à une inférence. Par défaut, elles sont héritées du flux.

Une fois que vous avez configuré et passé en revue toutes les étapes ci-dessus, vous pouvez sélectionner Vérifier + créer pour terminer la création.

Remarque

Attendez-vous à ce que la création du point de terminaison prenne plus de 15 minutes, car celle-ci présente plusieurs phases, notamment la création d’un point de terminaison, l’inscription du modèle, la création d’un déploiement, etc.

Vous pouvez voir la progression de la création du déploiement via la notification qui commence par Déploiement du flux d’invite. Capture d’écran de la notification du déploiement.

Accorder des autorisations au point de terminaison

Important

L’octroi d’autorisations (ajout d’une attribution de rôle) est uniquement activé pour le propriétaire des ressources Azure spécifiques. Vous risquez de devoir demander de l’aide à votre administrateur informatique. Il est recommandé d’accorder des rôles à l’identité affectée par l’utilisateur avant la création du déploiement. La mise en application de l’autorisation accordée risque de prendre plus de 15 minutes.

Vous pouvez accorder toutes les autorisations dans l’interface utilisateur du portail Azure en suivant ces étapes.

  1. Dans le portail Azure, accédez à la page de présentation de l’espace de travail Azure Machine Learning.

  2. Sélectionnez Contrôle d’accès, et sélectionnez Ajouter une attribution de rôle. Capture d’écran du Contrôle d'accès avec l’attribution de rôle ajoutée en surbrillance.

  3. Sélectionnez Lecteur de secrets de connexion de l’espace de travail Azure Machine Learning, puis Suivant.

    Remarque

    Lecteur de secrets de connexion de l’espace de travail Azure Machine Learning est un rôle intégré qui a l’autorisation d’obtenir les connexions de l’espace de travail.

    Si vous souhaitez utiliser un rôle personnalisé, assurez-vous que le rôle personnalisé dispose de l’autorisation « Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action ». Découvrez la création de rôles personnalisés.

  4. Sélectionnez Identité managée, puis les membres.

    Pour identité affectée par le système, sélectionnez Point de terminaison en ligne Machine Learning sous Identité managée affectée par le système, puis recherchez par nom de point de terminaison.

    Pour Identité affectée par l’utilisateur, sélectionnez Identité managée affectée par l’utilisateur, puis recherchez par nom d’identité.

  5. Pour l’identité affectée par l’utilisateur, vous devez accorder des autorisations au registre de conteneurs et au compte de stockage de l’espace de travail. Vous trouverez le registre de conteneurs et le compte de stockage dans la page de vue d’ensemble de l’espace de travail dans le portail Azure.

    Capture d’écran de la page de présentation avec le stockage et le registre de conteneurs en surbrillance.

    Accédez à la page de vue d’ensemble du registre de conteneurs de l’espace de travail, sélectionnez Contrôle d’accès et Ajouter une attribution de rôle, puis attribuez ACR pull |Extraire l’image conteneur à l’identité du point de terminaison.

    Accédez à la page de vue d’ensemble du stockage par défaut de l’espace de travail, sélectionnez Contrôle d’accès et Ajouter une attribution de rôle, puis attribuez Lecteur des données Blob du stockage à l’identité du point de terminaison.

  6. (facultatif) Pour l’identité affectée par l’utilisateur, si vous souhaitez surveiller les métriques liées au point de terminaison, telles que l’utilisation du processeur/GPU/disque/mémoire, vous devez également accorder le rôle Auteur de métriques d’espace de travail de l’espace de travail à l’identité.

Vérifiez l’état du point de terminaison

Des notifications seront envoyées une fois que vous aurez terminé l’Assistant de déploiement. Une fois le point de terminaison et le déploiement créés, vous pouvez sélectionner Déployer les détails dans la page de détails de la notification sur le point de terminaison.

Vous pouvez également accéder directement à la page Points de terminaison dans le studio et vérifier l’état du point de terminaison que vous avez déployé.

Capture d’écran de la page des détails du point de terminaison montrant un déploiement réussi.

Tester le point de terminaison avec des exemples de données

Dans la page des détails du point de terminaison, basculez vers l’onglet Test.

Vous pouvez entrer les valeurs et sélectionner le bouton Tester.

Le résultat de test s’affiche comme suit :

Capture d’écran de la page des détails du point de terminaison sur l’onglet Test.

Tester le point de terminaison déployé à partir d’un flux de conversation

Pour les points de terminaison déployés à partir d’un flux de conversation, vous pouvez le tester dans une fenêtre de conversation immersive.

Capture d’écran d’un point de terminaison déployé à partir d’un flux de conversation.

chat_input a été défini pendant le développement du flux de conversation. Vous pouvez saisir le message chat_input dans la zone de saisie. Le panneau Entrées sur le côté droit vous permet de spécifier les valeurs pour d’autres entrées en plus de chat_input. En savoir plus sur le développement d’un flux de conversation.

Consommer le point de terminaison

Dans la page détails du point de terminaison, basculez vers l’onglet Consommer. Vous trouverez le point de terminaison REST et la clé/jeton pour consommer votre point de terminaison. Il existe également un exemple de code vous permettant d’utiliser le point de terminaison dans différents langages.

Notez que vous devez remplir les valeurs de données en fonction de vos entrées de flux. Prenez l’exemple de flux utilisé dans cet article de classification web, par exemple, vous devez spécifier data = {"url": "<the_url_to_be_classified>"} et remplir la clé ou le jeton dans l’exemple de code de consommation.

Capture d’écran de la page des détails du point de terminaison avec le code de consommation.

Afficher les métriques de point de terminaison

Afficher les métriques courantes des points de terminaison en ligne managés avec Azure Monitor (facultatif)

Vous pouvez afficher diverses métriques (nombres de demandes, latence des demandes, octets réseau, utilisation de processeur/GPU/disque/mémoire, etc.) pour un point de terminaison en ligne et ses déploiements en suivant les liens de la page Détails du point de terminaison dans studio. En suivant ces liens, vous accédez à la page des métriques exactes dans le Portail Azure pour le point de terminaison ou le déploiement.

Notes

Si vous spécifiez l’identité affectée par l’utilisateur pour votre point de terminaison, vérifiez que vous avez attribué des métriques d’espace de travail de l’espace de travail Azure Machine Learning à votre identité affectée par l’utilisateur. Sinon, le point de terminaison ne sera pas en mesure de journaliser les métriques.

Capture d’écran de la page des détails du point de terminaison avec Afficher les métriques en surbrillance.

Pour plus d’informations sur l’affichage des métriques de point de terminaison en ligne, consultez Superviser les points de terminaison en ligne.

Afficher les métriques spécifiques aux points de terminaison de flux d’invite (facultatif)

Si vous activez les diagnostics Application Insights dans l’Assistant Déploiement de l’interface utilisateur ou si vous définissez app_insights_enabled=true la définition de déploiement en utilisant du code, les métriques spécifiques aux points de terminaison de flux d’invite suivantes seront collectées dans l’espace de travail par défaut Application Insights.

Nom des métriques Type Axes analytiques Description
token_consumption counter - flux
- node
- llm_engine
- token_type: prompt_tokens: jetons d’entré LLM API input tokens; completion_tokens: jetons de réponse LLM API ; total_tokens = prompt_tokens + completion tokens
Métriques de consommation de jeton openai
flow_latency histogram flow,response_code,streaming,response_type coût d’exécution de la requête, response_type signifie s’il est complet/premier octet/dernier octet
flow_request counter flow,response_code,exception,streaming nombre de requêtes de flux
node_latency histogram flow,node,run_status coût d’exécution de nœud
node_request counter flow,node,exception,run_status nombre d’exécution de nœud
rpc_latency histogram flow,node,api_call Coût rpc
rpc_request counter flow,node,api_call,exception nombre de rpcs
flow_streaming_response_duration histogram flux Coût d’envoi de réponse de streaming, de l’envoi du premier octet à l’envoi du dernier octet

Vous trouverez l’espace de travail par défaut Application Insights dans la page de votre espace de travail dans le portail Azure.

Capture d’écran montrant l’espace de travail par défaut Application Insights.

Ouvrez Application Insights et sélectionnez Utilisation et coûts estimés dans le volet de navigation gauche. Sélectionnez Métriques personnalisées (préversion), puis Avec les dimensionset enregistrez la modification.

Capture d’écran montrant l’activation des métriques multidimensionnelles.

Sélectionnez l’onglet Métriques dans le volet de navigation gauche. Sélectionnez Métriques standard PromptFlow dans Espace de noms des Métriques. Vous pouvez explorer les métriques de la liste déroulante Métrique avec différentes méthodes d’agrégation.

Capture d’écran montrant les métriques du point de terminaison du flux d’invite.

Résoudre les problèmes de points de terminaison déployés à partir d’un flux d’invite

Absence d’autorisation pour effectuer l’action « Microsoft.MachineLearningService/workspaces/datastores/read »

Si votre flux contient l’outil Recherche d’index, après le déploiement du flux, il faut que le point de terminaison puisse accéder au magasin de données de l’espace de travail pour lire le fichier yaml MLIndex ou le dossier FAISS contenant des blocs et des incorporations. Par conséquent, vous devez accorder manuellement l’autorisation d’identité de point de terminaison.

Vous pouvez accorder l’autorisation d’identité de point de terminaison AzureML Data Scientist sur l’étendue de l’espace de travail ou définir un rôle personnalisé qui contient l’action « MachineLearningService/workspace/workspace/datastore/reader ».

Erreur MissingDriverProgram

Si vous déployez votre flux avec un environnement personnalisé et rencontrez l’erreur suivante, cela peut être dû au fait que vous n’avez pas spécifié le inference_config dans la définition de votre environnement personnalisé.

'error': 
{
    'code': 'BadRequest', 
    'message': 'The request is invalid.', 
    'details': 
         {'code': 'MissingDriverProgram', 
          'message': 'Could not find driver program in the request.', 
          'details': [], 
          'additionalInfo': []
         }
}

Il existe 2 façons de corriger cette erreur.

  • (Recommandé) Vous pouvez trouver l’URI d’image conteneur sur la page de détails de votre environnement personnalisé et le définir comme image de base de flux dans le fichier flow.dag.yaml. Lorsque vous déployez le flux dans l’interface utilisateur, vous sélectionnez simplement Utiliser l’environnement de la définition du flux actuel, et le service back-end crée l’environnement personnalisé basé sur cette image de base et requirement.txt pour votre déploiement. En savoir plus sur l’environnement spécifié dans la définition de flux.

    Capture d’écran de la page de détails de l’environnement personnalisé.

    Capture d’écran de la spécification de l’image de base dans le fichier yaml brut du flux.

  • Vous pouvez corriger cette erreur en ajoutant inference_config dans votre définition d’environnement personnalisée. En savoir plus sur l’utilisation d’un environnement personnalisé.

    Voici un exemple de définition d’environnement personnalisée.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
  path: ./image_build
  dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
  liveness_route:
    port: 8080
    path: /health
  readiness_route:
    port: 8080
    path: /health
  scoring_route:
    port: 8080
    path: /score

La réponse du modèle prend trop de temps

Vous remarquerez probablement que le déploiement met parfois trop de temps à répondre. Cela se produit lorsque plusieurs facteurs potentiels entrent en jeu.

  • Le modèle n’est pas suffisamment puissant (par exemple, utilisez gpt plutôt que text-ada)
  • La requête d’index n’est pas optimisée et prend trop de temps
  • Le flux comporte de nombreuses étapes à traiter

Envisagez d’optimiser le point de terminaison avec les considérations ci-dessus afin d’améliorer les performances du modèle.

Impossible d’extraire le schéma de déploiement

Après avoir déployé le point de terminaison et que vous souhaitez le tester sous l’onglet Test de la page de détails du point de terminaison, si l’onglet Test affiche Impossible d’extraire le schéma de déploiement comme suit, vous pouvez essayer les deux méthodes suivantes pour atténuer ce problème :

Capture d’écran de l’erreur impossible d’extraire le schéma de déploiement sous l’onglet Test dans la page de détails du point de terminaison.

  • Vérifiez que vous avez accordé l’autorisation correcte à l’identité du point de terminaison. En savoir plus sur l’octroi d’autorisations à l’identité du point de terminaison.
  • C’est peut-être parce que vous avez exécuté votre flux dans une ancienne version du runtime, puis déployé le flux, que le déploiement a utilisé l’environnement du runtime qui était également dans l’ancienne version. Mettez à jour le runtime en suivant ces instructions et réexécutez le flux dans le dernier runtime, puis redéployez le flux.

Accès refusé à la liste secrète de l’espace de travail

Si vous rencontrez une erreur telle que « Accès refusé à la liste des secrets de l’espace de travail », vérifiez que vous avez accordé l’autorisation appropriée à l’identité du point de terminaison. En savoir plus sur l’octroi d’autorisations à l’identité du point de terminaison.

Nettoyer les ressources

Si vous ne comptez pas utiliser le point de terminaison à l’issue de ce tutoriel, il est préférable de le supprimer.

Remarque

La suppression complète peut prendre environ 20 minutes.

Étapes suivantes