Mettre à l’échelle Azure OpenAI pour le chat .NET avec RAG en utilisant Azure Container Apps
Découvrez comment ajouter l’équilibrage de charge à votre application pour étendre l’application de conversation au-delà des limites de quota du service Azure OpenAI. Cette approche utilise Azure Container Apps pour créer trois points de terminaison Azure OpenAI et un conteneur principal pour diriger le trafic entrant vers l’un des trois points de terminaison.
Cet article vous oblige à déployer deux exemples distincts :
Application de conversation
Si vous n’avez pas encore déployé l’application de conversation, attendez que l’exemple d’équilibreur de charge soit déployé.
Si vous avez déjà déployé l’application de conversation une fois, modifiez la variable d’environnement pour prendre en charge un point de terminaison personnalisé pour l’équilibreur de charge et redéployez-la.
L’application de conversation est disponible dans ces langues :
Application d’équilibreur de charge
Remarque
Cet article utilise un ou plusieurs modèles d’application IA comme base pour les exemples et les conseils de l’article. Les modèles d’application IA vous fournissent des implémentations de référence bien gérées qui sont faciles à déployer. Ils aident à garantir un point de départ de haute qualité pour vos applications IA.
Architecture pour l’équilibrage de charge d’Azure OpenAI avec Azure Container Apps
Étant donné que la ressource Azure OpenAI a des limites de quota de jeton et de modèle spécifiques, une application de conversation qui utilise une seule ressource Azure OpenAI est susceptible d’avoir des échecs de conversation en raison de ces limites.
Pour utiliser l’application de conversation sans atteindre ces limites, utilisez une solution à charge équilibrée avec Container Apps. Cette solution expose en toute transparence un point de terminaison unique entre Container Apps et votre serveur d’applications de conversation.
L’application conteneur se trouve devant un ensemble de ressources Azure OpenAI. L'application Container Apps résout deux scénarios : normal et limité. Au cours d'un scénario normal où le quota de jetons et de modèles est disponible, la ressource Azure OpenAI renvoie un 200 par l'intermédiaire de l'application conteneur et du serveur d'application.
Lorsqu’une ressource se trouve dans un scénario limité en raison de limites de quota, l’application conteneur peut réessayer immédiatement une autre ressource Azure OpenAI pour répondre immédiatement à la demande d’application de conversation d’origine.
Conditions préalables
Abonnement Azure. En créer un gratuitement
Accès accordé à Azure OpenAI dans l’abonnement Azure souhaité.
Actuellement, l’accès à ce service est accordé uniquement par application. Vous devez demander l'accès à l'OpenAI Azure.
Des conteneurs de développement sont disponibles pour les deux échantillons, avec toutes les dépendances nécessaires à la réalisation de cet article. Vous pouvez exécuter les conteneurs de développement dans GitHub Codespaces (dans un navigateur) ou localement à l’aide de Visual Studio Code.
Ouvrez l'exemple d'application d'équilibreur de charge pour Container Apps
GitHub Codespaces exécute un conteneur de développement géré par GitHub avec Visual Studio Code pour le web comme interface utilisateur. Pour l’environnement de développement le plus simple, utilisez GitHub Codespaces afin que vous disposiez des outils de développement et des dépendances appropriés préinstallés pour terminer cet article.
Important
Tous les comptes GitHub peuvent utiliser GitHub Codespaces pour jusqu’à 60 heures gratuites chaque mois avec deux instances principales. Pour plus d’informations, consultez Stockage et heures par cœur inclus chaque mois avec GitHub Codespaces.
Déployer l’équilibreur de charge Azure Container Apps
Connectez-vous à Azure Developer CLI pour fournir l’authentification aux étapes d’approvisionnement et de déploiement :
azd auth login --use-device-code
Définissez une variable d’environnement pour utiliser l’authentification Azure CLI à l’étape de post-approvisionnement :
azd config set auth.useAzCliAuth "true"
Déployez l’application d’équilibreur de charge :
azd up
Sélectionnez un abonnement et une région pour le déploiement. Il n'est pas nécessaire qu'ils aient le même abonnement et la même région que l'application de chat.
Attendez que le déploiement se termine avant de continuer.
Obtenir le point de terminaison de déploiement
Utilisez la commande suivante pour afficher le point de terminaison déployé pour l’application conteneur :
azd env get-values
Copiez la valeur
CONTAINER_APP_URL
. Vous l’utilisez dans la section suivante.
Redéployer l'application de chat avec le point de terminaison de l'équilibreur de charge.
Ces exemples sont complétés par l'exemple de l'application de chat.
Ouvrez le conteneur de développement de l’exemple d’application de conversation à l’aide de l’un des choix suivants.
Langue GitHub Codespaces Visual Studio Code .NET JavaScript Python Connectez-vous à Azure Developer CLI (
AZD
) :azd auth login
Terminez les instructions de connexion.
Créez un environnement
AZD
avec un nom tel quechat-app
:azd env new <name>
Ajoutez la variable d’environnement suivante, qui indique au back-end de l’application de conversation d’utiliser une URL personnalisée pour les requêtes Azure OpenAI :
azd env set OPENAI_HOST azure_custom
Ajoutez la variable d’environnement suivante. Remplacez
<CONTAINER_APP_URL>
de l’URL de la section précédente. Cette action indique au back-end de l’application de conversation la valeur de l’URL personnalisée de la requête Azure OpenAI.azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
Déployez l’application de conversation :
azd up
Vous pouvez maintenant utiliser l'application de messagerie en toute confiance qu'elle est conçue pour s'adapter à de nombreux utilisateurs sans manquer de quota.
Diffuser en continu les journaux pour voir les résultats de l’équilibreur de charge
Dans le portail Azure , recherchez votre groupe de ressources.
Dans la liste des ressources du groupe, sélectionnez la ressource Azure Container Apps.
Sélectionnez le flux Contrôle>Journal pour afficher le journal.
Utilisez l’application de conversation pour générer du trafic dans le journal.
Recherchez les journaux qui font référence aux ressources Azure OpenAI. Chacune des trois ressources a son identité numérique dans le commentaire de journal qui commence par
Proxying to https://openai3
, où3
indique la troisième ressource Azure OpenAI.
Lorsque l’équilibreur de charge reçoit l’état que la demande dépasse le quota, l’équilibreur de charge pivote automatiquement vers une autre ressource.
Configurer le quota TPM
Par défaut, chacune des instances Azure OpenAI dans l’équilibreur de charge est déployée avec une capacité de 30 000 jetons par minute (TPM). Vous pouvez utiliser l'application de conversation en toute confiance, sachant qu'elle est conçue pour évoluer avec de nombreux utilisateurs sans épuiser le quota. Modifiez cette valeur quand :
- Vous obtenez des erreurs de capacité de déploiement : réduisez la valeur.
- Vous avez besoin d’une capacité plus élevée : augmentez la valeur.
Utilisez la commande suivante pour modifier la valeur :
azd env set OPENAI_CAPACITY 50
Redéployez l’équilibreur de charge :
azd up
Nettoyer les ressources
Lorsque vous avez terminé avec l’application de conversation et l’équilibreur de charge, nettoyez les ressources. Les ressources Azure créées dans cet article sont facturées à votre abonnement Azure. Si vous ne vous attendez pas à avoir besoin de ces ressources à l’avenir, supprimez-les pour éviter d’entraîner davantage de frais.
Nettoyer les ressources de l’application de conversation
Retournez à l'article sur l'application de chat pour nettoyer les ressources :
Nettoyer les ressources de l’équilibreur de chargement
Exécutez la commande Azure Developer CLI suivante pour supprimer les ressources Azure et supprimer le code source :
azd down --purge --force
Les commutateurs fournissent :
purge
: les ressources supprimées sont immédiatement purgées afin de pouvoir réutiliser les jetons du service Azure OpenAI par minute.force
: la suppression se produit silencieusement, sans exiger le consentement de l’utilisateur.
Nettoyer GitHub Codespaces et Visual Studio Code
La suppression de l'environnement GitHub Codespaces garantit que vous pouvez maximiser le nombre d'heures gratuites par cœur auxquelles vous avez droit pour votre compte.
Important
Pour plus d’informations sur les droits de votre compte GitHub, consultez GitHub Codespaces mensuel inclus stockage et heures principales.
Localisez vos espaces de code actifs provenant du dépôt GitHub azure-samples/openai-aca-lb.
Ouvrez le menu contextuel de l’espace de code, puis sélectionnez Supprimer.
Obtenir de l’aide
Si vous ne parvenez pas à déployer l’équilibreur de charge de la gestion des API Azure, ajoutez votre problème à la page web des problèmes du dépôt.
Exemple de code
Les exemples utilisés dans cet article sont les suivants :
Étape suivante
- Utilisez le test de charge Azure pour tester la charge de votre application de chat.