Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article se concentre sur deux aspects distincts : l’évaluation des modèles et le test de l’ensemble du système. L’évaluation et les tests sont souvent utilisés de manière interchangeable, mais ils doivent être considérés comme des processus distincts qui utilisent des jeux de données distincts.
L’évaluation est une activité itérative que vous effectuez pendant la phase de développement. Il se concentre sur l’expérimentation pour trouver le meilleur modèle avec le bon niveau de réglage. Ensuite, évaluez le modèle en fonction de différentes métriques.
Les tests incluent la vérification de l’ensemble du système lorsqu’une modification est introduite, y compris le modèle paramétré et les composants non IA. L’objectif est de vérifier si la charge de travail répond aux cibles identifiées et répond aux attentes des utilisateurs. Il s’agit également d’une stratégie de gestion des changements non modifiables qui empêche les régressions de qualité.
Les deux pratiques sont couplées dans l’implémentation réelle. L’ensemble du processus inclut l’envoi de demandes au modèle, l’évaluation de ses réponses et la prise d’une décision ou no-go en fonction des données de test. Bien que le processus ne soit pas négocié avant la production, nous vous recommandons de mener le processus en production à l’aide d’un mélange de données réelles et synthétiques.
L’objectif principal est ici d’utiliser des solutions basées sur l’IA générative, en particulier les scénarios utilisant des modèles de base. Pour obtenir des conseils applicables aux modèles d’entraînement et de réglage précis, passez à l’aide des conseils pour tester l’entraînement des modèles et le réglage précis.
Utiliser des métriques de qualité pour l’évaluation du modèle
Établissez une qualité de modèle de référence et de mesure à l’aide de métriques qui s’alignent sur vos objectifs métier.
Avoir des processus qui évaluent et quantifient les résultats de l’expérience utilisateur par rapport à un ensemble de métriques. Par exemple, Groundedness évalue si la réponse d’un modèle génératif est prise en charge par le contexte fourni, plutôt que fabriqué. Supposons qu’un cabinet juridique développe un assistant IA qui cite des lois. Sans validation appropriée, elle pourrait tirer de documents obsolètes ou mal classés, ce qui entraînerait des conséquences graves. Un score d’intégrité élevée permet de s’assurer que la sortie du modèle reste alignée sur le matériau source approuvé.
Sélectionnez et hiérarchisez les métriques en fonction de votre cas d’usage spécifique, surveillez-les en continu et utilisez-les comme portes de décision pour le réglage et le déploiement du modèle. Évitez de compter sur une seule métrique, utilisez une combinaison pour capturer différentes dimensions de qualité. Par exemple, même si un modèle démontre une forte solidité, il peut encore produire des sorties biaisées. Intégrer des évaluations d’équité pour des résultats plus équilibrés et responsables.
Pour plus d’informations sur les métriques, consultez la description des métriques d’évaluation de surveillance et les cas d’usage.
Utiliser les données appropriées pour l’évaluation
Affinez votre modèle à l’aide d’un processus itératif à l’aide de données d’évaluation. Ce jeu de données, souvent appelé jeu de données d’or , se compose de paires de sortie d’entrée approuvées, généralement créées ou validées par des humains. Il sert de benchmark objectif pour évaluer les performances du modèle par rapport aux métriques de qualité définies.
Assurez-vous que le jeu de données est représentatif du domaine ou de la tâche, avec divers exemples de haute qualité et un bruit minimal. Une taille d’échantillon limitée peut entraîner une mauvaise qualité d’évaluation. Envisagez donc de générer des données synthétiques lorsque les données de l’échantillon ne disposent pas d’une diversité ou d’une couverture suffisantes pour améliorer l’équilibre et l’exhaustivité.
Valider les flux de travail agentiques
À mesure que les architectures évoluent pour utiliser l’IA, les fonctionnalités qui ont été gérées par du code déterministe sont désormais déchargées vers les agents IA. Ces agents prennent souvent des décisions avec un comportement dynamique.
Considérez une application agentique où l’orchestrateur lui-même est implémenté en tant qu’agent. Contrairement à l’orchestration traditionnelle, les agents peuvent appeler des outils, interpréter des invites, collaborer avec d’autres agents et s’adapter en temps réel, ce qui les rend plus flexibles, mais plus difficiles à valider.
Ce type d’architecture présente de nouveaux défis pour les tests et l’évaluation. Étant donné que les agents fonctionnent de manière non déterministe, les tests statiques traditionnels sont insuffisants. La stratégie de test doit valider le flux complet de l’entrée utilisateur à la réponse finale, notamment la récupération des données , l’appel d’outils et la génération de réponse. Par exemple,
Vérifiez que les agents appellent correctement des outils externes, des API et d’autres agents. Utilisez des dépendances fictifs pour valider que les données sont transmises correctement. Simuler des échecs d’outil ou d’agent pour tester la fiabilité dans le comportement.
Concevoir des tests basés sur des scénarios à l’aide d’invites prédéfinies et de sorties attendues. Étant donné que les sorties peuvent varier, évaluez les résultats à l’aide du scoring automatisé avec un autre modèle. Utilisez également la révision basée sur l’homme, en particulier pour les tâches sensibles ou subjectives.
Intégrez des outils de sécurité du contenu pour détecter les sorties dangereuses, biaisées ou inappropriées. Incluez des exercices d’association rouge pour identifier les comportements inattendus ou les vulnérabilités de jailbreak. Surveillez l’équité, la transparence et la conformité aux normes éthiques.
Du point de vue des outils, prenez en compte le Kit de développement logiciel (SDK) Azure AI Evaluation, qui prend en charge les vérifications telles que :
- Résolution d’intention : l’agent/orchestrateur comprend-il correctement la demande de l’utilisateur ?
- Précision de l’appel d’outil : les outils appropriés sont-ils appelés, avec les paramètres appropriés ?
- Respect des tâches : la sortie finale s’aligne-t-elle avec la tâche affectée et les étapes de raisonnement antérieures ?
En outre, effectuez des tests de performances et de charge réguliers. Évaluez la capacité de l’agent à effectuer une mise à l’échelle sous des requêtes simultanées, gérer des chemins d’exécution longs et gérer les interactions entre plusieurs agents. Surveillez en permanence les régressions dans la logique et les performances à mesure que le système évolue à travers des versions itératives.
Tester les aspects de sécurité
Sécuriser les flux de travail agentiques en contrôlant l’accès, en validant toutes les entrées et en surveillant le comportement de l’agent afin d’éviter toute mauvaise utilisation ou action involontaire.
Test de jailbreak. Testez toujours les tentatives de jailbreak. Les attaquants ciblent généralement la couche d’orchestration en premier, qui analyse et transfère les requêtes au modèle. Si les entrées malveillantes ne sont pas filtrées, elles peuvent compromettre le comportement du modèle.
Sécurité du contenu. Dans les applications basées sur les conversations, exécutez des invites utilisateur et un contexte de base via un service de sécurité du contenu.
Sécurité des points de terminaison. Pour les interfaces RESTful, appliquez une authentification forte et testez soigneusement les contrôles de sécurité pour empêcher l’accès non autorisé.
Il existe d’autres bibliothèques open source disponibles, telles que Scikit-learn, le module torch.testing de PyTorch, FairML pour les tests de biais et d’équité, et L’analyse du modèle TensorFlow pour l’évaluation du modèle.
Compromis. Le test de ce code a des implications sur les coûts. Par exemple, si vous utilisez Azure OpenAI pour héberger votre point de terminaison d’inférence, les tests de stress sont une pratique courante qui peut vous aider à déterminer les limites du système. Toutefois, les frais Azure OpenAI pour chaque appel, ce qui peut rendre coûteux les tests de stress étendus. L’une des façons d’optimiser les frais consiste à utiliser des unités de traitement inutilisées d’Azure OpenAI dans un environnement de test. Vous pouvez également simuler le point de terminaison d’inférence à l’aide d’outils tels que le proxy de développement.
Tester le comportement déterministe
Dans certaines architectures, vous pouvez utiliser une logique déterministe pour activer l’orchestration. Par exemple, au lieu d’un orchestrateur d’agent non déterministe, vous pouvez choisir d’avoir un orchestrateur qui utilise du code statique pour gérer le flux d’exécution, comme l’interprétation de l’intention de l’utilisateur, l’interrogation de l’index pour la mise à l’échelle des données et l’appel du point de terminaison d’inférence du modèle.
Du point de vue des tests, traitez ce code comme n’importe quel composant système critique : exécutez des performances, une fiabilité et des tests fonctionnels, en particulier sur sa logique de routage. Appliquez des tests unitaires aux composants déterministes, en particulier si vous utilisez des frameworks d’agent comme le noyau sémantique de Microsoft ou LangChain. Ces tests valident les modèles d’invite, la logique de sélection d’outils, la mise en forme des données et les arbres de décision, isolés de la variabilité du runtime.
Tester le point de terminaison d’inférence
Les points de terminaison d’inférence exposent vos modèles génératifs via des API REST et doivent être testés au-delà de la justesse du modèle. Que vous utilisiez des plateformes PaaS ou des serveurs auto-hébergés, testez le point de terminaison comme n’importe quel autre point de terminaison pour garantir la fiabilité, la scalabilité et la sécurité.
Tests fonctionnels et d’intégration. Validez la gestion des demandes, la structure de réponse et l’intégration à d’autres composants.
Tests de performances et de charge. Simuler des conditions réalistes pour évaluer le débit, la latence et l’utilisation des ressources. Pour les points de terminaison d’inférence PaaS, concentrez-vous sur les métriques au niveau du jeton (jetons/s ou jetons/min), qui sont plus significatives que les tailles de requête traditionnelles des API REST.
Mise à l’échelle et optimisation du GPU. Testez en fonction de la charge variable pour déterminer la bonne référence SKU GPU ou la configuration de mise à l’échelle automatique. Évitez de surprovisionner en contrôlant l’utilisation réelle du GPU.
Compromis. Les références SKU GPU sont coûteuses. Il est important de vérifier en permanence si les ressources GPU sont sous-utilisées et les droits, le cas échéant. Après avoir fait des ajustements, testez l’utilisation des ressources pour maintenir l’équilibre entre l’efficacité des coûts et l’optimisation des performances.
Gestion des défaillances. Simuler la limitation, comme les erreurs HTTP 429, les délais d’expiration du back-end et l’indisponibilité du service. Vérifiez que votre client gère correctement les nouvelles tentatives, les interruptions de circuit et les interruptions de circuit.
Sécurité et sécurité du contenu. Pour les points de terminaison publics ou auto-hébergés, effectuez des tests d’intrusion et validez les contrôles d’accès. Utilisez des outils de modération de contenu comme Azure AI Content Safety pour tester et filtrer les entrées/sorties non sécurisées.
Tester le flux de travail de base des données
La pertinence d’un modèle d’IA générative dépend de la qualité et de l’intégrité de ses données de base. L’amorçage des données peut être initialisé sur le modèle à l’aide de pipelines de traitement des données. Ces données sont prétraite, segmentées et indexées avant d’atteindre le modèle. Le modèle interroge l’index en temps réel pendant l’interaction utilisateur, ce qui rend les performances d’indexation et la précision critiques pour l’expérience utilisateur. Intégrez des tests précoces et maintenez-le tout au long du cycle de vie du système.
Les pipelines de données mal testés peuvent entraîner des résultats incohérents et des préoccupations croisées telles que les violations de sécurité. Pour garantir une expérience de haute qualité, testez l’ensemble du flux de données, notamment les documents sources, le prétraitement, la logique d’orchestration et l’index lui-même. Les principales considérations relatives aux tests sont les suivantes :
Tests fonctionnels et d’intégration. Vérifiez que toutes les données se chargent correctement et complètement. Vérifiez que le pipeline gère les données manquantes, vides ou synthétiques comme prévu.
Compatibilité du schéma d’index. Testez les modifications de schéma pour garantir la compatibilité descendante. Toutes les modifications de champ ou de document doivent conserver la prise en charge des formats de données plus anciens.
Prétraitement et test d’orchestration. La préparation des données de base implique le prétraitement, la segmentation et l’incorporation de calculs, souvent orchestrés par des outils tels que les ensembles de compétences Recherche d’IA Azure. Testez le pipeline d’orchestration pour vous assurer que toutes les étapes s’exécutent correctement et que les données résultantes sont précises et pertinentes.
Actualisation des données et vérifications de qualité. Incluez des tests pour les données obsolètes, les incompatibilités de contrôle de version, les artefacts synthétiques et les tables vides ou partielles. Mettez à jour les requêtes ou les paramètres d’index si nécessaire pour refléter les données les plus actuelles et les plus propres.
Test de charge d’index. Les index peuvent se comporter différemment sous différentes charges. Testez les performances des requêtes sur des scénarios d’utilisation réalistes pour prendre des décisions sur la mise à l’échelle, les références SKU de calcul et les exigences de stockage.
Tests de sécurité. Si des documents sont partitionnés avec des contrôles d’accès, testez rigoureusement ces contrôles. Assurez-vous que chaque utilisateur ou rôle accède uniquement au contenu autorisé pour maintenir la confidentialité et la conformité.
Conseils pour tester l’apprentissage et le réglage précis du modèle
À l’instar des modèles IA génératifs, utilisez différents types de tests à différents stades du cycle de vie de développement et entre différents composants et flux système. Autant que pratique, développez des ressources de charge de travail avec des tests à l’esprit. Par exemple, lorsque vous effectuez des manipulations de données et redéfinissez les données sources pour l’ingénierie des fonctionnalités, respectez les bonnes pratiques de codage et assurez-vous de structurer le code pour prendre en charge les tests.
Évaluer le modèle
Appliquez une stratégie de mise en base pendant l’entraînement du modèle pour mesurer et comparer la qualité du modèle. Évaluez les performances de différentes combinaisons de modèles, de paramètres et de fonctionnalités à l’aide de métriques bien définies. Ces métriques fournissent des scores objectifs et pilotés par les données que vous pouvez comparer de manière itérative entre les versions et les configurations pour identifier le modèle le plus performant.
Pour plus d’informations, consultez Les métriques de régression/prévision.
Données à évaluer et tester
Partitionnez les données sources en trois jeux de données distincts : l’entraînement, l’évaluation et les tests. Utilisez le jeu de données d’entraînement pour générer le modèle, le jeu de données d’évaluation pour l’ajuster et le jeu de données de test pour valider les performances finales.
Vérifiez que chaque jeu de données contient des données de haute qualité pour réduire le bruit. Utilisez des cas de test dans des pipelines de données pour appliquer la qualité et compléter les données synthétiques lorsque des échantillons réels sont limités, dans des domaines tels que la détection de fraudes, où les instances de fraude réelles sont rares et fournissent des données limitées pour l’apprentissage de modèles fiables.
Conservez tous les jeux de données distincts et sans chevauchement pour maintenir l’objectivité et empêcher les biais dans les prédictions. Ne réutilisez pas les données d’apprentissage pour les données d’évaluation ou d’évaluation pour les tests.
Test du flux de travail d’apprentissage et de réglage précis
Technologies de pipeline de données. Combinez des tests fonctionnels, de charge et de performances à l’aide de données synthétiques pour évaluer l’extensibilité et prendre des décisions éclairées sur le dimensionnement ou l’adéquation des produits, les références SKU requises et l’intégration du système.
Flux de travail d’ingestion. Testez les pipelines ETL/ELT de bout en bout pour vous assurer qu’ils ingèrent les données de manière fiable et que les données sont de haute qualité. En outre, testez l’intégration à tous les systèmes connectés et surveillez les dépendances externes. Utilisez des données synthétiques pour valider le traitement de bout en bout, en particulier pour les charges de travail complexes ou volumineuses.
Testez les travaux planifiés pour valider que les tâches d’ingestion se terminent à temps et retournent les volumes attendus.
Qualité des données sur l’ingestion. Vérifiez que le nettoyage et le traitement des données incluent des tests pour confirmer que la manipulation des données fonctionne comme prévu. Incluez les vérifications de l’exhaustivité, de l’actualisation, de la cohérence du schéma, de l’unicité et de la pertinence. Vérifiez également que les données structurées sont ingérées sans doublons, valeurs manquantes ou entrées non valides.
Intégrité des fonctionnalités et des étiquettes. Vérifiez que les fonctionnalités sont correctement calculées et que les étiquettes sont correctement affectées, en particulier lors de l’utilisation de règles complexes. Recherchez les fuites de données pour empêcher les informations futures ou dérivées d’étiquettes de contaminer les données d’apprentissage. Vérifiez également que les fractionnements de données sont appropriés pour éviter les échantillons biaisés ou superposés, car même les fuites subtiles peuvent nuire aux performances du modèle.
Test d’hyperparamètres. Le test hyperparamètre est un processus itératif dans lequel les paramètres du modèle sont paramétrés pour atteindre les objectifs de précision en fonction du cas d’usage de votre charge de travail. Cela implique une formation répétée sur les données sélectionnées et l’évaluation des données de test pour valider les performances. Commencez par un jeu de données plus petit pour évaluer rapidement le comportement du modèle, puis mettez à l’échelle les tests sur le jeu complet. Soyez conscient du compromis entre la précision du modèle et le coût de calcul et le temps requis pour la formation et l’évaluation répétées.
Qualité du code. Lorsque vous entraînez des modèles à l’aide de code personnalisé, comme avec le script PyTorch, exécutez des tests de charge pendant la phase de conception pour évaluer les exigences de calcul et sélectionner les références SKU appropriées. Utilisez des tests unitaires pour intercepter les régressions pendant le développement et vous appuyer sur des tests manuels lorsque l’automatisation n’est pas réalisable. Étant donné que ces scripts s’exécutent dans des flux de travail, ajoutez des tests d’intégration pour vérifier que les scripts sont exécutés de manière fiable dans le pipeline.
Point de terminaison d’inférence. Cette API REST permet d’accéder au modèle Machine Learning entraîné pour effectuer des prédictions. Le modèle est déployé dans un environnement avec un point de terminaison capable de recevoir des données d’entrée en temps réel ou par lot, de les traiter et de retourner des prédictions. Comme toute autre API, assurez-vous que le point de terminaison d’inférence subit des tests fonctionnels, de performances et de sécurité, vérifiez qu’il retourne des résultats précis, gère la charge attendue et reste sécurisé contre toute utilisation incorrecte.
Test de site en direct. Étendez les tests fonctionnels dans le système en direct. Exécutez des tests planifiés pour valider les volumes de données, détecter les enregistrements manquants ou dupliqués et confirmer l’actualisation des données. Utilisez des données synthétiques pour valider en toute sécurité les transformations et la logique de bout en bout dans des conditions de production. Incorporez des tests A/B pour évaluer de nouvelles expériences et empêcher les régressions de qualité avant le déploiement complet. Configurez les alertes pour déclencher une investigation immédiate lorsque les tests échouent.
Intégrez des tests de données dans des pipelines CI/CD en automatisant les tests unitaires et fonctionnels, en particulier pendant les modifications de code ou les mises à jour du pipeline. Ajoutez des vérifications de qualité avant de réentraîner et utilisez des déploiements côte à côte pour tester en toute sécurité en production. Configurez des alertes pour les échecs de test ou les anomalies d’ingestion.
Remarque
Les tests et la surveillance ont des objectifs différents. Effectuez des tests pour évaluer les modifications potentielles apportées au système, généralement avant d’implémenter des modifications. Effectuer une surveillance continue pour évaluer l’intégrité globale du système.
Test de la désintégration du modèle
Tous les modèles se dégradent au fil du temps en raison de modifications internes et externes dans la charge de travail. Ce déclin de la qualité du modèle, connu sous le nom de désintégration du modèle, peut se produire de deux façons :
La dérive des données se produit lorsque les données d’entrée changent, ce qui rend le modèle obsolète. Par exemple, un modèle qui prédit que les modèles de vote ne sont pas pertinents en raison de changements démographiques après la redistrication.
La dérive de concept se produit lorsque les conditions externes changent, ce qui entraîne la non-réflexion des prédictions du modèle. Par exemple, un modèle qui prédit que les tendances des ventes ne sont pas pertinentes, car il y a un changement de comportement des consommateurs après qu’un concurrent lance un nouveau produit.
Pour détecter la décomposition, utilisez des tests automatisés pour comparer les prédictions par rapport aux résultats réels et surveiller la dérive à l’aide de métriques statistiques. Les commentaires des utilisateurs, par exemple en utilisant des pouces vers le haut/vers le bas, constituent également un signal précieux pour identifier les problèmes. Lorsque la dégradation potentielle est détectée, l’équipe des opérations doit alerter les scientifiques des données pour examiner et déterminer les causes racines et les étapes suivantes.
Outils de test
Tenez compte de ces ressources Azure :
Collecteur de données Azure Machine Learning pour la journalisation en temps réel des données d’entrée/sortie pour les modèles déployés sur des points de terminaison en ligne Managés ou Kubernetes.
Analyse des modèles Azure Machine Learning pour la supervision automatisée en comparant les données d’inférence en temps réel avec des jeux de données de référence pour suivre la dérive et d’autres métriques de performances. Consultez les meilleures pratiques pour obtenir d’autres recommandations.