Exécuter un SLM local dans un conteneur sidecar dans Azure App Service
Dans ce tutoriel, vous allez apprendre à exécuter un petit modèle de langage (SLM) en tant que conteneur sidecar dans Azure App Service et à y accéder dans votre conteneur principal sous Linux. À la fin de ce tutoriel, vous disposerez d’une application de chat assistant sur la mode s’exécutant dans App Service et accédant à un modèle localement.
L’exécution locale d’un SLM est bénéfique si vous souhaitez exécuter une application de chatbot sans envoyer vos données métier via Internet à un service de chatbot IA basé sur le cloud.
- Niveaux tarifaires hautes performances : App Service offre des niveaux tarifaires hautes performances qui vous aident à exécuter des modèles d’IA à grande échelle.
- Séparation des préoccupations : l’exécution d’un SLM dans un sidecar vous permet de séparer la logique IA de la logique de votre application. Vous pouvez gérer les composants discrets séparément, tels que la mise à niveau de votre modèle sans affecter votre application.
Prérequis
- Compte Azure avec un abonnement actif. Si vous ne possédez pas de compte Azure, vous pouvez créer un compte gratuit.
- Un compte GitHub. Vous pouvez aussi en obtenir un gratuitement.
Considérations relatives aux performances
Étant donné que les modèles d’IA consomment des ressources considérables, choisissez le niveau tarifaire qui vous donne suffisamment de processeurs virtuels et de mémoire pour exécuter votre modèle spécifique. Dans la pratique, vous devez également utiliser un modèle optimisé pour l’UC, car les niveaux tarifaires App Service sont des niveaux processeur uniquement.
Ce tutoriel utilise le modèle Phi-3 mini avec une longueur de contexte 4K de Hugging Face. Il est conçu pour s’exécuter avec des ressources limitées et fournit un raisonnement mathématique et logique fort pour de nombreux scénarios courants. Il est également fourni avec une version optimisée pour l’UC. Dans App Service, nous avons testé le modèle sur tous les niveaux Premium et avons constaté qu'il offrait de bonnes performances sur le niveau P2mv3. Si vos besoins l’autorisent, vous pouvez l’exécuter à un niveau inférieur.
1. Inspecter l’exemple dans GitHub Codespaces
- Connectez-vous à votre compte GitHub et accédez à https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar/fork.
- Sélectionnez Créer la duplication.
- Sélectionnez Code>Créer un codespace sur laprincipale. Il faut quelques minutes pour configurer le codespace.
L’exemple de référentiel contient le contenu suivant :
Contenu | Description |
---|---|
src/phi-3-sidecar | Code d’image Docker qui exécute un point de terminaison FastAPI en Python pour le modèle Phi-3 mini. Consultez Comment fonctionne le conteneur sidecar Phi-3 ? |
src/webapp | Une application .NET Blazor frontale. Consultez Comment fonctionne l’application frontale ? |
infra | Infrastructure en tant que code pour le déploiement d’une application web .NET dans Azure. Consultez Créer un aperçu des modèles Azure Developer CLI. |
azure.yaml | Configuration Azure Developer CLI qui déploie l’application Blazor sur App Service. Consultez Créer un aperçu des modèles Azure Developer CLI. |
2. Déployer l’application frontale
Connectez-vous à votre compte Azure à l’aide de la commande
azd auth login
et suivez les instructions de l’invite :azd auth login
Créez l’application App Service et déployez le code à l’aide de la commande
azd up
:azd up
L’exécution de la commande
azd up
peut prendre quelques instants.azd up
utilise les fichiers Bicep dans vos projets pour créer une application App Service au niveau tarifaire P2mv3, puis déploie l’application .NET danssrc/webapp
.
3. Ajouter le sidecar Phi-3
Cette section part du principe que vous avez déjà créé une image Docker Phi-3 et que vous l’avez chargée dans un registre. Vous allez utiliser une image préchargée dans Microsoft Container Registry à la place. Pour générer et charger l’image vous-même, consultez Comment générer l’image Docker Phi-3 localement.
- Dans le portail Azure, accédez à la page de gestion de l’application.
- Dans la page de gestion de l’application, dans le menu de gauche, sélectionnez Centre de déploiement.
- Sélectionnez la bannière Vous souhaitez ajouter des conteneurs à exécuter parallèlement à votre application ? Cliquez ici pour l'essayer.
- Lorsque la page se recharge, sélectionnez l’onglet Conteneurs (nouveau).
- Sélectionnez Ajouter et configurez le nouveau conteneur comme suit :
- Nom : phi-3
- Source d’image : autres registres de conteneurs
- Type d’image : public
- URL du serveur du registre : mcr.microsoft.com
- Image et balise : appsvc/docs/sidecars/sample-experiment :phi3-python-1.0
- Sélectionnez Appliquer.
4. Vérifier l’application en cours d’exécution
Dans la sortie AZD, retrouvez l’URL de votre application et accédez-y dans le navigateur. L’URL ressemble à ceci dans la sortie AZD :
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Sélectionnez un produit, posez une question à son sujet, puis sélectionnez Envoyer.
Forum aux questions
- Comment fonctionne le conteneur sidecar Phi-3 ?
- Comment fonctionne l’application frontale ?
- Comment générer l’image Docker Phi-3 localement
Comment fonctionne le conteneur sidecar Phi-3 ?
Il exécute une application FastAPI qui écoute sur le port 8000, comme spécifié dans son Dockerfile.
L’application utilise ONNX Runtime pour charger le modèle Phi-3, puis transfère les données HTTP POST au modèle et transmet la réponse du modèle au client. Pour plus d’informations, consultez model_api.py.
Comment fonctionne l’application frontale ?
Il s’agit d’une application de génération d’extraction augmentée de base (RAG). Il affiche une page Razor qui envoie trois informations au point de terminaison FastAPI (à localhost:8000
) dans Send()
:
- Produit sélectionné
- Données de description de produit récupérées
- Message envoyé par l’utilisateur
Elle génère ensuite la réponse diffusée sur la page. Pour plus d’informations, consultez Home.razor.
Comment générer l’image Docker Phi-3 localement
Pour générer vous-même l’image sidecar, vous devez installer Docker Desktop localement sur votre ordinateur.
Clonez le référentiel localement.
git clone https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar cd ai-slm-in-app-service-sidecar
Passez au répertoire source de l’image Phi-3 et téléchargez le modèle localement.
cd src/phi-3-sidecar/ huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --local-dir ./Phi-3-mini-4k-instruct-onnx
Le Dockerfile est configuré pour copier le modèle à partir de ./Phi-3-mini-4k-instruct-onnx.
Créez l’image Docker. Par exemple :
docker build --tag phi-3 .
Pour charger l’image générée dans Azure Container Registry, consultez Envoyer votre première image vers votre registre de conteneurs Azure à l’aide de Docker CLI.