LLMOps avec le flux d’invite et GitHub

Les opérations de langage volumineuses, ou LLMOps, sont devenues la pierre angulaire de l’ingénierie rapide efficace et du développement et du déploiement d’applications infusés par LLM. À mesure que la demande d’applications LLM-infusées continue de s’augmenter, les organisations se trouvent en besoin d’un processus cohérent et rationalisé pour gérer leur cycle de vie de bout en bout.

Azure Machine Learning permet l’intégration à GitHub pour automatiser le cycle de vie du développement d’applications infusées par LLM avec un flux d’invite.

Le flux d’invite Azure Machine Learning offre une approche simplifiée et structurée pour le développement d’applications infusées par 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 infusées par LLM entièrement fonctionnelles.

Fonctionnalités du flux d’invite LLMOps

LLMOps avec flux rapide est un « modèle et conseils LLMOps » pour vous aider à créer des applications infusées LLM à l’aide du flux rapide. Elle fournit les fonctionnalités suivantes :

  • L’hébergement de code centralisé : ce référentiel prend en charge l’hébergement de code pour plusieurs flux en fonction du flux rapide, fournissant un référentiel unique pour tous vos flux. Considérez cette plateforme comme un référentiel unique où réside tout votre code de flux rapide. Il s’agit d’une bibliothèque pour vos flux, ce qui facilite la recherche, l’accès et la collaboration sur différents projets.

  • Gestion de cycle de vie : chaque flux bénéficie de son propre cycle de vie, ce qui permet une transition fluide de l’expérimentation locale au déploiement de production. Screenshot of pipeline.

  • Expérimentation de variante et d’hyperparamètre : expérimentez avec plusieurs variantes et hyperparamètres, en évaluant facilement les variantes de flux. Les variantes et les hyperparamètres sont comme des ingrédients dans une recette. Cette plateforme vous permet d’expérimenter différentes combinaisons de variantes sur plusieurs nœuds dans un flux.

  • Plusieurs cibles de déploiement : le référentiel prend en charge le déploiement de flux vers Azure App Services, Kubernetes, les calculs managés Azure pilotés par la configuration, ce qui garantit que vos flux peuvent être mis à l’échelle selon les besoins. Il génère également des images Docker fusionnées avec le runtime Flow et vos flux pour le déploiement sur n’importe quel système d’exploitation et plateforme cible prenant en charge Docker. Screenshot of endpoints.

  • Déploiement A/B : implémentez en toute transparence des déploiements A/B, ce qui vous permet de comparer facilement différentes versions de flux. Tout comme dans les tests A/B traditionnels pour les sites web, cette plateforme facilite le déploiement A/B pour le flux rapide. Cela signifie que vous pouvez facilement comparer différentes versions d’un flux dans un paramètre réel pour déterminer les performances optimales. Screenshot of deployments.

  • Relations de jeu de données/flux plusieurs à plusieurs : prenez en charge plusieurs jeux de données pour chaque flux standard et d’évaluation, garantissant ainsi la polyvalence dans les tests de flux et l’évaluation. La plateforme est conçue pour prendre en charge plusieurs jeux de données pour chaque flux.

  • Inscription conditionnelle des données et des modèles : la plateforme crée une nouvelle version du jeu de données dans Azure Machine Learning Data Asset et les flux dans le registre de modèles uniquement lorsqu’une modification est apportée à ces données, et non dans le cas contraire.

  • Rapports complets : générez des rapports détaillés pour chaque configuration de variante, ce qui vous permet de prendre des décisions éclairées. Fournit une collection de métriques détaillée, des exécutions en bloc d’expérience et de variantes pour toutes les exécutions et expériences, ce qui permet de prendre des décisions pilotées par les données dans des fichiers CSV et HTML. Screenshot of flow variants report.Screenshot of metrics report.

Autres fonctionnalités de personnalisation :

  • Offre BYOF (bring-your-own-flows / apportez vos propres flux). Une plateforme complète pour développer plusieurs cas d’usage liés aux applications infusées LLM.

  • Offre un développement basé sur la configuration. Il n’est pas nécessaire d’écrire un code complet.

  • Fournit l’exécution à la fois de l’expérimentation rapide et de l’évaluation localement, ainsi que sur le cloud.

  • Fournit des notebooks pour l’évaluation locale des invites. Fournit une bibliothèque de fonctions pour l’expérimentation locale.

  • Test de point de terminaison dans le pipeline après le déploiement pour vérifier sa disponibilité et sa préparation.

  • Fournit une boucle « human-in-loop » facultative pour valider les métriques d’invite avant le déploiement.

LLMOps avec flux rapide fournit des fonctionnalités pour les applications LLM simples et complexes infusées. Entièrement personnalisable selon les besoins de l’application.

Étapes de LLMOps

Le cycle de vie comprend quatre étapes distinctes :

  • Initialisation : définir clairement l’objectif métier, collecter des exemples de données pertinents, établir une structure d’invite 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 l’invite et affiner le flux en fonction des besoins. Itérer de façon continue jusqu’à ce que les résultats soient satisfaisants.

  • Évaluation et affinage : établissez un point de référence des performances du flux en utilisant un jeu de données plus grand, évaluez l’efficacité de l’invite et effectuez les affinages nécessaires. Passer à l’étape suivante si les résultats répondent aux standards souhaités.

  • Déploiement : optimiser le flux en matière d’efficacité, 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, le flux d’invite vous permet 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 LLMOps formalise cette méthodologie structurée en utilisant l’approche orientée code, et vous aide à créer des applications infusées par LLM avec un flux d’invite en utilisant des outils et des processus pertinents pour le flux d’invite. Il offre une gamme de fonctionnalités, incluant l’hébergement de code centralisé, la gestion du cycle de vie, l’expérimentation des variantes et des hyperparamètres, le déploiement A/B, la création de rapports pour toutes les exécutions et les expériences, etc.

Le référentiel pour cet article est disponible sur LLMOps avec le modèle de flux d’invite

Flux de processus LLMOps

Screenshot of LLMOps prompt flow Process.

  1. Il s’agit de l’étape d’initialisation. Ici, les flux sont développés, les données sont préparées et organisées et les fichiers de configuration liés à LLMOps sont mis à jour.
  2. Après le développement local à l’aide de Visual Studio Code avec l’extension de flux d’invite, une demande de tirage (pull request) est déclenchée de la branche de fonctionnalité à la branche de développement. Cela entraîne l’exécution du pipeline de validation de build. Elle exécute également les flux d’expérimentation.
  3. La demande de tirage est approuvée manuellement et le code est fusionné à la branche de développement
  4. Une fois la demande de tirage fusionnée à la branche de développement, le pipeline d’intégration continue pour l’environnement de développement est exécuté. Il 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.
  5. Une fois l’exécution du pipeline d’intégration continue terminée, un déclencheur de déploiement continu garantit l’exécution du pipeline de déploiement continu qui déploie le flux standard à partir d’Azure Machine Learning Registry en tant que point de terminaison en ligne Azure Machine Learning et exécute des tests d’intégration et d’acceptation de build sur le flux déployé.
  6. 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 depuis la branche de développement vers la branche de mise en production.
  7. 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 à la branche de mise en production, le pipeline d’intégration continue pour l’environnement prod est exécuté. Il 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.
  8. Une fois l’exécution du pipeline d’intégration continue terminée, un déclencheur de déploiement continu garantit l’exécution du pipeline de déploiement continu qui déploie le flux standard à partir d’Azure Machine Learning Registry en tant que point de terminaison en ligne Azure Machine Learning et exécute des tests d’intégration et d’acceptation de build sur le flux déployé.

Dans cet article, vous pouvez découvrir LLMOps avec des flux d’invite en suivant les exemples de bout en bout que nous avons fournis, ce qui vous aide à créer des applications infusées par LLM en utilisant des flux d’invite et GitHub. Son objectif principal est de fournir de l’aide au développement de ces applications, en tirant parti des fonctionnalités du flux rapide et des LLMOps.

Conseil

Nous vous recommandons de comprendre comment intégrer les opérations des grands modèles de langage avec le flux d’invite.

Important

Le flux de l’invite est actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de 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

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayez la version gratuite ou payante d’Azure Machine Learning.
  • Un espace de travail Azure Machine Learning.
  • Git en cours d’exécution sur votre ordinateur local.
  • GitHub en tant que référentiel de contrôle de code source.

Remarque

Git version 2.27 ou ultérieure est obligatoire. Pour plus d’informations sur l’installation de la commande Git, consultez https://git-scm.com/downloads et sélectionnez votre système d’exploitation

Important

Les commandes CLI de cet article ont été testées à l’aide de Bash. Si vous utilisez un autre interpréteur de commandes, vous pouvez rencontrer des erreurs.

Configurer le flux d’invite

Le flux d’invite utilise la ressource de connexions pour se connecter à des points de terminaison comme Azure OpenAI, OpenAI ou Recherche Azure AI, et utilise le runtime pour l’exécution des flux. Ces ressources doivent être créées avant d’exécuter les flux dans le flux d’invite.

Configurer des connexions pour le flux rapide

Les connexions peuvent être créées via l’interface utilisateur du portail du flux d’invite ou en utilisant l’API REST. Suivez les instructions pour créer des connexions pour le flux d’invite.

Cliquez sur le lien pour en savoir plus sur les connexions.

Remarque

Les exemples de flux utilisent la connexion « aoai » et la connexion nommée « aoai » doit être créée pour les exécuter.

Configurer le calcul et le runtime pour le flux d’invite

Le runtime peut être créé via l’interface utilisateur du portail du flux d’invite ou en utilisant l’API REST. Suivez les instructions pour configurer le calcul et le runtime pour le flux d’invite.

Cliquez sur le lien pour en savoir plus sur le runtime.

Remarque

Le même nom de runtime doit être utilisé dans le fichier LLMOps_config.json expliqué plus loin.

Configurer le référentiel GitHub

Il existe plusieurs étapes à entreprendre pour configurer le processus LLMOps à l’aide du référentiel GitHub.

Duplication et configuration du référentiel

Suivez les instructions pour créer un référentiel dupliqué dans votre organisation GitHub. Ce référentiel utilise deux branches, main et development, pour les promotions de code et l’exécution de pipelines au lieu de modifications apportées à leur code.

Configurer l’authentification entre GitHub et Azure

Suivez les instructions pour utiliser le principal de service créé précédemment et configurer l’authentification entre le référentiel GitHub et les services Azure.

Cette étape configure un secret GitHub qui stocke les informations du principal de service. Les flux de travail du référentiel peuvent lire les informations de connexion à l’aide du nom du secret. Cela permet de configurer les étapes de flux de travail GitHub pour se connecter automatiquement à Azure.

Clonage du référentiel

Suivez les instructions pour créer un référentiel local.

Cela nous aidera à créer une branche de fonctionnalité à partir de la branche de développement et à incorporer des modifications.

Tester les pipelines

Suivez les instructions pour tester les pipelines. Les étapes à suivre sont les suivantes

  1. Déclenchez une demande de tirage (pull request) d’une branche de fonctionnalité vers une branche de développement.
  2. Le pipeline de demande de tirage doit s’exécuter automatiquement à la suite de la configuration de la stratégie de branche.
  3. La demande de tirage est ensuite fusionnée à la branche de développement.
  4. Le pipeline « dev » associé est exécuté. Cela entraîne l’exécution d’intégration continue et de déploiement continu complète et entraîne l’approvisionnement ou la mise à jour des points de terminaison Azure Machine Learning existants.

Les résultats des tests doivent être similaires à ceux présentés ici.

Exécution locale

Pour exploiter les fonctionnalités de l’exécution locale, effectuez les étapes d’installation suivantes :

  1. Cloner le référentiel : commencez par cloner le référentiel du modèle depuis son référentiel GitHub.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. Configurer le fichier env : créez un fichier .env au niveau du dossier le plus haut et fournissez les informations pour les éléments mentionnés. Ajoutez autant de noms de connexion que nécessaire. Tous les exemples de flux de ce référentiel utilisent la connexion AzureOpenAI nommée aoai. Ajoutez une ligne aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} avec des valeurs mises à jour pour api_key et api_base. Si des connexions supplémentaires avec différents noms sont utilisées dans vos flux, elles doivent être ajoutées en conséquence. Actuellement, un flux avec AzureOpenAI comme fournisseur est pris en charge.

experiment_name=
connection_name_1={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
connection_name_2={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
  1. 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

  1. Apportez ou écrivez vos flux dans le modèle en fonction de la documentation accessible ici.

  2. Écrivez des scripts Python similaires aux exemples fournis dans le dossier local_execution.

Étapes suivantes