GenAIOps avec flux de prompt et GitHub
À mesure que la requête d’applications basées sur les LLM augmente, les organisations ont besoin d’un processus cohérent et rationalisé pour gérer le cycle de vie de bout en bout de ces applications. Generative Artificial Intelligence Operations (GenAIOps), parfois appelé LLMOps, est une pierre angulaire de l’ingénierie d’invite efficace ainsi que du développement et du déploiement d’applications basées sur les LLM.
Cet article montre comment Azure Machine Learning vous permet d’intégrer à GitHub afin d’automatiser le cycle de vie du développement d’applications basées sur des LLM avec un flux d’invite. Le flux d’invite offre une approche simplifiée et structurée pour le développement d’applications basées sur des LLM. Son processus et son cycle de vie bien définis vous guident tout au long du processus de création, de test, d’optimisation et de déploiement de flux, ce qui aboutit à la création de solutions basées sur des LLM entièrement fonctionnelles.
Fonctionnalités du flux d’invite GenAIOps
GenAIOps avec flux d’invite utilise un modèle et des conseils GenAIOps pour vous aider à créer des applications basées sur des LLM au moyen d’un flux d’invite. GenAIOps avec flux d’invite dispose de fonctionnalités pour les applications basées sur des LLM simples ou complexes, et est personnalisable en fonction des besoins de l’application.
GenAIOps avec la plateforme de flux d’invite fournit les fonctionnalités suivantes :
Hébergement de code centralisé. Le référentiel prend en charge l’hébergement de code pour plusieurs flux d’invite, et constitue un référentiel unique pour tous vos flux. Ce référentiel s’apparente à une bibliothèque pour vos flux. Il facilite la recherche, l’accès et la collaboration sur différents projets.
Gestion du cycle de vie. Chaque flux a son propre cycle de vie, ce qui offre une transition fluide de l’expérimentation locale au déploiement de production.
Expérimentation de variantes et d’hyperparamètres. Les variantes et les hyperparamètres sont comme des ingrédients dans une recette. La plateforme vous permet d’expérimenter différentes combinaisons de variantes sur plusieurs nœuds dans un flux. Vous pouvez expérimenter plusieurs variantes et hyperparamètres afin d’évaluer facilement des variantes de flux.
Cibles de déploiement multiples. La plateforme génère des images Docker alimentées avec votre flux et votre session de calcul pour le déploiement sur n’importe quelle plateforme cible et système d’exploitation qui prend en charge Docker. Vous pouvez déployer des flux sur Azure App Services, Kubernetes et des calculs managés Azure, et les configurer pour une mise à l’échelle en fonction des besoins.
Déploiement A/B. GenAIOps avec flux d’invite implémente en toute transparence les déploiements A/B, ce qui vous permet de comparer facilement différentes versions de flux. La plateforme facilite le déploiement A/B pour le flux d’invite tout comme dans les tests A/B traditionnels de sites web. Vous pouvez facilement comparer différentes versions d’un flux dans un paramètre réel pour identifier la version offrant les performances optimales.
Relations de jeu de données à flux plusieurs à plusieurs. GenAIOps avec flux d’invite prend en charge plusieurs jeux de données pour chaque flux standard et d’évaluation, offrant ainsi une polyvalence dans les tests de flux et l’évaluation.
Données conditionnelles et inscription de modèle. La plateforme inscrit une nouvelle version du jeu de données pour la ressource de données Azure Machine Learning et les flux dans le registre de modèle uniquement en cas de modification du jeu de données.
Rapports complets. GenAIOps avec flux d’invite génère des rapports détaillés pour chaque configuration de variante, ce qui vous permet de prendre des décisions éclairées. La plateforme fournit une collection de métriques détaillées, des expériences et des exécutions en bloc de variantes pour toutes les exécutions et expériences, ce qui permet de prendre des décisions pilotées par les données pour les fichiers CSV et HTML.
GenAIOps avec flux d’invite fournit les autres fonctionnalités suivantes pour la personnalisation :
- Bring-your-own-flows (BYOF) fournit une plateforme complète pour développer plusieurs cas d’usage liés aux applications basées sur des LLM.
- Grâce au développement basé sur la configuration, il n’est pas nécessaire d’écrire de longs blocs de code réutilisable.
- L’expérimentation et l’évaluation de requête s’exécutent à la fois localement et dans le cloud.
- Des notebooks pour l’évaluation locale des requêtes fournissent une bibliothèque de fonctions pour l’expérimentation locale.
- Les tests de point de terminaison dans le pipeline après le déploiement vérifient la disponibilité et la préparation des points de terminaison.
- Un processus d’intervention humaine dans la boucle facultatif (HITL, Human-in-the-Loop) valide les métriques de requête avant le déploiement.
Phases de GenAIOps
Le cycle de vie GenAIOps comprend quatre phases distinctes :
Initialisation. Définir clairement l’objectif métier, collecter des exemples de données pertinents, établir une structure de requête de base et créer un flux qui améliore ses capacités.
Expérimentation. Appliquer le flux à des exemples de données, évaluer les performances de la requête et affiner le flux en fonction des besoins. Itérer de façon continue jusqu’à ce que les résultats soient satisfaisants.
Évaluation et affinement. Établir un point de référence des performances du flux en utilisant un jeu de données plus grand, évaluer l’efficacité de la requête et effectuer les affinements nécessaires. Passer à l’étape suivante si les résultats répondent aux standards souhaités.
Déploiement. Optimiser l’efficacité du flux, le déployer dans un environnement de production, y compris le déploiement A/B, surveiller ses performances, recueillir des commentaires des utilisateurs, et utiliser ces informations pour améliorer davantage le flux.
En adhérant à cette méthodologie structurée, les flux d’invites vous permettent de développer en confiance, de tester rigoureusement, d’optimiser et de déployer des flux, ce qui aboutit à la création d’applications d’IA robustes et sophistiquées.
Le modèle de flux d’invite GenAIOps formalise cette méthodologie structurée en appliquant une approche code-first, et vous aide à créer des applications basées sur des LLM à l’aide d’outils et de processus de flux d’invite et de fonctionnalités de flux d’invite GenAIOps. Ce modèle est disponible à la page Modèle GenAIOps avec flux d’invite.
Flux de processus GenAIOps
- Lors de la phase d’initialisation, vous développez des flux, préparez et organisez les données, et mettez à jour les fichiers de configuration associés à GenAIOps.
- Après le développement local à l’aide de Visual Studio Code avec l’extension Flux d’invite, vous déclenchez une demande de tirage (pull request) de la branche de fonctionnalité vers la branche de développement, ce qui exécute le pipeline de validation de build et les flux d’expérimentation.
- La demande de tirage est approuvée manuellement et le code est fusionné dans la branche de développement.
- Une fois la demande de tirage fusionnée dans la branche de développement, le pipeline d’intégration continue (CI) pour l’environnement de développement s’exécute. Le pipeline CI exécute les flux d’expérimentation et d’évaluation en séquence, et inscrit les flux dans Azure Machine Learning Registry en dehors des autres étapes du pipeline.
- Une fois l’exécution du pipeline CI terminée, un déclencheur de déploiement continu (CD) exécute le pipeline CD, qui déploie le flux standard à partir d’Azure Machine Learning Registry en tant que point de terminaison en ligne Azure Machine Learning. Le pipeline exécute ensuite des tests d’intégration et de détection de fumée sur le flux déployé.
- Une branche de mise en production est créée à partir de la branche de développement, ou une demande de tirage est déclenchée de la branche de développement vers la branche de mise en production.
- La demande de tirage est approuvée manuellement et le code est fusionné à la branche de mise en production. Une fois la demande de tirage fusionnée dans la branche de mise en production, le pipeline CI pour l’environnement de production est exécuté. Le pipeline exécute les flux d’expérimentation et d’évaluation en séquence, et inscrit les flux dans Azure Machine Learning Registry en dehors des autres étapes du pipeline.
- Une fois l’exécution du pipeline CI terminée, un déclencheur CD exécute le pipeline CD, qui déploie le flux standard à partir d’Azure Machine Learning Registry en tant que point de terminaison en ligne Azure Machine Learning. Le pipeline exécute ensuite des tests d’intégration et de détection de fumée sur le flux déployé.
Créer un flux d’invite GenAIOps
Le reste de cet article montre comment utiliser GenAIOps avec flux d’invite en suivant l’exemple de bout en bout fourni dans le référentiel de modèles GenAIOps avec flux d’invite, afin de vous aider à créer des applications basées sur des LLM à l’aide du flux d’invite et de GitHub. L’objectif principal est de fournir une assistance au développement de ces applications en tirant parti des fonctionnalités du flux d’invite et de GenAIOps.
Prérequis
- Un abonnement Azure avec la version gratuite ou payante d’Azure Machine Learning.
- Un espace de travail Azure Machine Learning.
- Git version 2.27 ou ultérieure s’exécutant sur votre ordinateur local, avec la possibilité de créer un référentiel de contrôle de code source GitHub.
- Connaissance du processus d’intégration de GenAIOps avec flux d’invite.
Configurer une connexion de flux d’invite
Le flux d’invite utilise une ressource de connexion pour se connecter aux points de terminaison Azure OpenAI, OpenAI ou Recherche Azure AI. Vous pouvez créer une connexion via l’interface utilisateur du portail de flux d’invite ou à l’aide de l’API REST. Pour plus d’informations, consultez Connexions dans le flux d’invite.
Pour créer la connexion, suivez les instructions fournies dans Configuration des connexions pour le flux d’invite. Les exemples de flux utilisent une connexion appelée aoai
. Donnez donc ce nom à votre connexion.
Configurer une session de calcul
Le flux d’invite utilise une session de calcul pour exécuter le flux. Créez et démarrez la session de calcul avant d’exécuter le flux d’invite.
Configurer le référentiel GitHub
Pour créer un référentiel dupliqué dans votre organisation GitHub, suivez les instructions de la page Configurer le référentiel GitHub. Ce référentiel utilise deux branches, main
et development
, pour les promotions de code et l’exécution du pipeline.
Pour créer un référentiel local, suivez les instructions fournies dans Cloner le référentiel. Ce clone vous aide à créer une branche de fonctionnalités à partir de la branche de développement, et à incorporer des modifications.
Configurer l’authentification entre GitHub et Azure
Ce processus configure un secret GitHub qui stocke les informations relatives au principal du service. Pour se connecter automatiquement à Azure, les flux de travail du référentiel peuvent lire les informations de connexion en utilisant le nom du secret. Pour en savoir plus, consultez Utiliser GitHub Actions pour la connexion à Azure PostgreSQL.
- Créez un principal de service en suivant les instructions fournies dans Créer un principal de service Azure.
- Utilisez le principal de service pour configurer l'authentification entre le référentiel GitHub et les services Azure en suivant les instructions de la section Configurer l'authentification avec Azure et GitHub.
Tester le pipeline
Pour tester les pipelines, suivez les instructions à la page Mettre à jour les données de test. Le processus de complet comprend les étapes suivantes :
- Vous déclenchez une demande de tirage d’une branche de fonctionnalité vers la branche de développement.
- Le pipeline de demande de tirage s’exécute automatiquement en raison de la configuration de la stratégie de branche.
- La demande de tirage est fusionnée dans la branche de développement.
- Le pipeline
dev
associé s’exécute, ce qui entraîne l’exécution et l’approvisionnement complets de CI et CD ou la mise à jour des points de terminaison Azure Machine Learning.
Les sorties doivent ressembler aux exemples fournis dans Exemple de scénario de déploiement, d’évaluation et d’exécution de requête.
Utiliser l’exécution locale
Pour utiliser les fonctionnalités d’exécution locale, effectuez les étapes suivantes.
Clonez le référentiel comme suit :
git clone https://github.com/microsoft/genaiops-promptflow-template.git
Créez un fichier .env au niveau du dossier supérieur. Ajoutez des lignes pour chaque connexion, en mettant à jour les valeurs des espaces réservés. Les exemples de l’exemple de référentiel utilisent la connexion AzureOpenAI nommée
aoai
et la version d’API2024-02-01
.aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"} <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
Préparez l’environnement local conda ou virtuel pour installer les dépendances.
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
Apportez ou écrivez vos flux dans le modèle en fonction des instructions fournies dans Guide pratique pour intégrer de nouveaux flux.
Écrivez dans le dossier local_execution des scripts Python similaires aux exemples fournis.