Consignes pour le développement de solutions de ML prédictives de haute qualité

Last reviewed 2024-07-08 UTC

Ce document rassemble un certain nombre de consignes pour vous aider à évaluer, garantir et contrôler la qualité lors de la mise en place de solutions de machine learning (ML) prédictives. Il fournit des suggestions pour chaque étape du processus, allant du développement de vos modèles de ML au déploiement de vos systèmes d'entraînement et d'inférence en production. Ce document complète les informations décrites dans le Guide opérationnel de MLOps en mettant en évidence et en transmettant des considérations de qualité pour chaque processus du cycle de vie MLOps.

Ce document est destiné à toute personne impliquée dans la création, le déploiement et l'exploitation de solutions de ML. Dans ce document, nous partons du principe que vous connaissez bien le MLOps en général. Il ne suppose pas la maîtrise d'une plate-forme de ML spécifique.

Présentation de la qualité pour les solutions de machine learning

En ingénierie logicielle, de nombreux outils, normes, processus et pratiques ont été développés dans le but d'assurer la qualité des logiciels. L'objectif est de s'assurer que le logiciel fonctionne comme prévu en production et qu'il répond à des exigences fonctionnelles et non fonctionnelles. Ces pratiques couvrent des sujets tels que les tests, la vérification et la validation, ainsi que la journalisation et la monitoring des logiciels. En DevOps, ces pratiques sont généralement intégrées et automatisées dans des processus CI/CD.

Le MLOps est un ensemble de processus et de fonctionnalités standardisés visant à compiler, déployer et exploiter des systèmes de ML de manière rapide et fiable. À l'instar des autres solutions logicielles, les solutions logicielles de ML nécessitent d'intégrer ces pratiques de qualité logicielle et de les appliquer tout au long du cycle de vie MLOps. En appliquant ces pratiques, vous contribuez à assurer la fiabilité et la prévisibilité de vos modèles, ainsi que leur conformité vis-à-vis de vos exigences.

Cependant, les tâches de compilation, de déploiement et d'exploitation de systèmes de ML présentent des défis supplémentaires nécessitant certaines pratiques de qualité qui ne s'appliquent pas nécessairement à d'autres systèmes logiciels. Outre les caractéristiques applicables à la plupart des autres systèmes logiciels, les systèmes de ML présentent les caractéristiques suivantes :

  • Systèmes dépendant des données. La qualité des modèles entraînés et de leurs prédictions dépend de la validité des données utilisées pour l'entraînement et de celles transmises dans les requêtes de prédiction. Tout système logiciel dépend de données valides, mais les systèmes de ML déduisent la logique de prise de décision de manière automatique à partir des données. Ils sont donc particulièrement dépendants de la qualité des données.

  • Deux systèmes pour l'entraînement et l'inférence. Les charges de travail de ML sont généralement constituées de deux systèmes de production distincts mais liés : le système d'entraînement et le système d'inférence. Un pipeline d'entraînement continu produit des modèles nouvellement entraînés, qui sont ensuite déployés pour l'inférence de prédictions. Chaque système requiert un ensemble distinct de pratiques de qualité permettant d'équilibrer l'efficacité et l'efficience, afin de produire et de maintenir un modèle performant en production. De plus, les incohérences entre ces deux systèmes entraînent des erreurs et des performances de prédiction médiocres.

  • Sujets à l'obsolescence. Il est fréquent de voir les modèles se dégrader après leur déploiement en production, car ils ne parviennent pas à s'adapter aux changements intervenant dans l'environnement qu'ils représentent, comme les variations saisonnières du comportement d'achat. Il est également possible que les modèles ne parviennent pas à s'adapter aux changements au niveau des données, tels que de nouveaux produits et de nouveaux emplacements. Par conséquent, le suivi de l'efficacité du modèle en production constitue un défi supplémentaire pour les systèmes de ML.

  • Systèmes de prise de décision automatisés. Contrairement à d'autres systèmes logiciels, dans lesquels les actions sont soigneusement codées manuellement pour suivre un ensemble d'exigences et de règles métier, les modèles de ML apprennent des règles à partir de données pour prendre une décision. Des biais implicites dans les données peuvent conduire les modèles à produire des résultats injustes.

Lorsqu'un modèle de ML déployé génère des prédictions erronées, la mauvaise qualité du ML peut être le résultat d'une grande variété de problèmes. Certains de ces problèmes peuvent provenir des bugs classiques que l'on rencontre dans n'importe quel programme. Toutefois, les problèmes propres au ML peuvent également inclure des décalages et des anomalies dans les données, ainsi que l'absence de procédures appropriées d'évaluation et de validation des modèles dans le cadre du processus d'entraînement. Un autre problème potentiel est un format de données incohérent entre l'interface intégrée du modèle et l'API d'inférence. De plus, les performances du modèle se dégradent au fil du temps, même en l'absence de ces problèmes, ce qui peut aboutir à des échecs silencieux s'il n'est pas correctement surveillé. Par conséquent, vous devez inclure différents types de tests et de surveillance pour les modèles et systèmes de ML durant le développement, durant le déploiement, et en production.

Consignes relatives à la qualité du développement de modèles

Lorsque vous développez un modèle de ML en phase de tests, les deux ensembles de métriques cibles suivants vous permettent d'évaluer les performances du modèle :

  • Les métriques d'optimisation du modèle Cette métrique reflète l'efficacité prédictive du modèle. Elle inclut les éléments suivants : la précision et la f-measure pour les tâches de classification ; l'erreur absolue moyenne en pourcentage pour les tâches de régression et de prévision ; le bénéfice cumulé réduit normalisé pour les tâches de classement ; et les scores de perplexité et BLEU pour les modèles de langage. Plus la valeur de cette métrique est élevée, plus le modèle est efficace pour une tâche donnée. Dans certains cas d'utilisation, afin de garantir l'équité, il est important d'obtenir une efficacité prédictive similaire sur différentes tranches de données, par exemple pour différentes données démographiques sur les clients.
  • Les métriques d'acceptabilité du modèle. Cette métrique reflète une contrainte opérationnelle à laquelle le modèle doit satisfaire, telle que la latence de prédiction. Vous définissez un seuil de latence sur une valeur particulière, par exemple 200 millisecondes. Les modèles qui ne respectent pas ce seuil sont rejetés. Un autre exemple de métrique d'acceptabilité est la taille du modèle, qui est importante lorsque vous souhaitez le déployer sur un matériel de faible puissance, tel que des appareils mobiles et des dispositifs intégrés.

Pendant les tests, vous développez, entraînez, évaluez et déboguez votre modèle pour améliorer son efficacité par rapport aux métriques d'optimisation, sans enfreindre les seuils des métriques d'acceptabilité.

Consignes pour les tests

  • Vous devez disposer de seuils prédéfinis et fixes pour les métriques d'optimisation et d'acceptabilité.
  • Mettez en œuvre une routine d'évaluation optimisée, qui prend un modèle et des données, et génère un ensemble de métriques d'évaluation. Mettez en œuvre cette routine pour qu'elle fonctionne indépendamment du type de modèle (par exemple, qu'il s'agisse d'arbres de décision ou de réseaux de neurones) et du framework du modèle (par exemple, TensorFlow ou scikit-learn).
  • Assurez-vous de disposer d'un modèle de référence avec lequel effectuer les comparaisons. Cette référence peut être constituée d'une heuristique codée en dur ou il peut s'agir d'un modèle simple qui prédit la valeur cible moyenne ou du mode. Utilisez le modèle de référence pour vérifier les performances du modèle de ML. Si le modèle de ML n'est pas meilleur que le modèle de référence, il présente un problème fondamental.
  • Suivez tous les tests effectués pour vous aider à améliorer la reproductibilité et l'amélioration progressive. Pour chaque test, stockez les valeurs des hyperparamètres, la sélection des caractéristiques et les graines aléatoires.

Consignes relatives à la qualité des données

  • Corrigez les classes déséquilibrées dès le début de vos tests en choisissant la bonne métrique d'évaluation. En outre, appliquez des techniques telles que la surpondération des instances de classes minoritaires ou le sous-échantillonnage des instances de classes majoritaires.
  • Assurez-vous de bien comprendre la source de données à traiter, et effectuez le prétraitement des données et l'ingénierie des caractéristiques adéquats pour préparer l'ensemble de données d'entraînement. Ce type de processus doit être reproductible et automatisable.
  • Assurez-vous de disposer d'une division de données de test distincte (de validation) pour l'évaluation finale du modèle. La division de test ne doit pas être visible lors de l'entraînement et ne doit pas être utilisée pour le réglage des hyperparamètres.
  • Assurez-vous que les divisions d'entraînement, de validation et de test sont également représentatives de vos données d'entrée. L'échantillonnage d'une telle division de test dépend de la nature des données et de la tâche de ML à accomplir. Par exemple, la division stratifiée est pertinente pour les tâches de classification, tandis que la division chronologique est pertinente pour les tâches de séries temporelles.
  • Assurez-vous que les partitions de validation et de test sont prétraitées séparément de la division des données d'entraînement. Si les divisions sont prétraitées dans un mélange, cela entraîne une fuite de données. Par exemple, lorsque vous utilisez des statistiques pour transformer des données à des fins de normalisation ou pour mettre en bucket des caractéristiques numériques, calculez les statistiques à partir des données d'entraînement et appliquez-les pour normaliser les divisions de validation et de test.
  • Générez un schéma d'ensemble de données incluant les types de données ainsi que certaines propriétés statistiques des caractéristiques. Vous pouvez utiliser ce schéma pour rechercher des données anormales ou non valides lors des tests et de l'entraînement.
  • Assurez-vous que vos données d'entraînement sont correctement brassées par lots, mais qu'elles répondent toujours aux exigences d'entraînement du modèle. Par exemple, cette tâche peut s'appliquer aux distributions d'instances positives et négatives.
  • Gardez un ensemble de données de validation distinct pour le réglage des hyperparamètres et la sélection du modèle. Vous pouvez également utiliser l'ensemble de données de validation pour effectuer un arrêt prématuré. Sinon, vous pouvez laisser le modèle s'entraîner pour la totalité de l'ensemble maximal d'itérations. Cependant, vous ne devez enregistrer un nouvel instantané du modèle que si ses performances sur l'ensemble de données de validation s'améliorent par rapport à l'instantané précédent.

Consignes relatives à la qualité des modèles

  • Assurez-vous que vos modèles ne présentent aucun problème fondamental qui les empêche d'apprendre une relation entre les entrées et les sorties. Vous pouvez atteindre cet objectif en entraînant le modèle avec très peu d'exemples. Si le modèle n'atteint pas une précision élevée pour ces exemples, il se peut qu'il existe un bug dans la mise en œuvre ou l'entraînement de votre modèle.
  • Lorsque vous entraînez des réseaux de neurones, surveillez les valeurs NaN dans votre perte et le pourcentage de pondérations ayant des valeurs nulles dans votre entraînement de modèle. Ces valeurs NaN ou nulles peuvent indiquer des calculs arithmétiques incorrects, ou des problèmes de disparition de gradients ou de gradients exponentiels. Visualiser les variations de la distribution des valeurs de pondération au fil du temps peut vous aider à détecter les changements internes de covariance qui ralentissent l'entraînement. Vous pouvez appliquer une normalisation par lot pour atténuer cette réduction de la vitesse.
  • Comparez les performances de votre modèle sur les données d'entraînement et sur les données de test afin de déterminer si votre modèle est en surapprentissage ou sous-apprentissage. Si vous rencontrez l'un de ces problèmes, apportez les améliorations appropriées. Par exemple, en cas de sous-apprentissage, vous pouvez augmenter la capacité d'apprentissage du modèle. En cas de surapprentissage, vous pouvez appliquer une régularisation.
  • Analysez les instances mal classifiées, en particulier les instances qui présentent une confiance de prédiction élevée et les classes les plus sujettes à confusion dans la matrice de confusion multiclasses. Ces erreurs peuvent être le signe d'exemples d'entraînement mal étiquetés. Les erreurs peuvent également identifier une opportunité de prétraitement des données, telle que la suppression des anomalies ou la création de nouvelles caractéristiques pour aider à distinguer ces classes.
  • Analysez les scores d'importance des caractéristiques et nettoyez les caractéristiques qui n'améliorent pas suffisamment la qualité du modèle. Les modèles parcimonieux sont préférables aux modèles complexes.

Consignes relatives à la qualité du déploiement du pipeline d'entraînement

Lorsque vous mettez en œuvre votre modèle et votre pipeline d'entraînement de modèle, vous devez créer un ensemble de tests dans une routine CI/CD. Ces tests s'exécutent automatiquement lorsque vous transmettez de nouvelles modifications de code ou avant de déployer votre pipeline d'entraînement dans l'environnement cible.

Consignes

  • Effectuez des tests unitaires de la fonctionnalité d'ingénierie des caractéristiques.
  • Effectuez des tests unitaires de l'encodage des entrées dans le modèle.
  • Effectuez des tests unitaires des modules mis en œuvre par l'utilisateur (personnalisés) sur les modèles de manière indépendante, par exemple des couches de convolution et de pooling de graphiques personnalisées, ou des couches d'attention personnalisées.
  • Effectuez des tests unitaires des fonctions de perte ou d'évaluation personnalisées.
  • Effectuez des tests unitaires des types et des formes de sortie de votre modèle par rapport aux entrées attendues.
  • Effectuez des tests unitaires afin de vérifier que la fonction fit du modèle fonctionne sans erreur sur un petit nombre de petits lots de données. Les tests doivent s'assurer que la perte diminue et que le temps d'exécution de l'étape d'entraînement suit la durée attendue. Vous devez effectuer ces vérifications, car les modifications apportées au code du modèle peuvent introduire des bugs qui ralentissent le processus d'entraînement.
  • Effectuez des tests unitaires de la fonctionnalité d'enregistrement et de chargement du modèle.
  • Effectuez des tests unitaires des interfaces d'inférence de modèle exportées par rapport aux entrées brutes et par rapport aux sorties attendues.
  • Testez les composants des étapes du pipeline avec des entrées fictives et avec des artefacts de sortie.
  • Déployez le pipeline dans un environnement de test et effectuez des tests d'intégration du pipeline de bout en bout. Pendant ce processus, utilisez des données de test pour vous assurer que l'intégralité du workflow s'exécute correctement et qu'il produit les artefacts attendus.
  • Utilisez un déploiement fantôme lorsque vous déployez une nouvelle version du pipeline d'entraînement dans l'environnement de production. Un déploiement fantôme vous permet de vous assurer que la version du pipeline nouvellement déployée s'exécute sur des données réelles en parallèle de la version précédente du pipeline.

Consignes relatives à la qualité de l'entraînement continu

Le processus d'entraînement continu consiste à orchestrer et à automatiser l'exécution des pipelines d'entraînement. Les workflows d'entraînement classiques comprennent des étapes telles que l'ingestion et la division des données, la transformation des données, l'entraînement du modèle, son évaluation, et son enregistrement. Certains pipelines d'entraînement sont constitués de workflows plus complexes. Les tâches supplémentaires peuvent inclure l'entraînement d'un modèle auto-supervisé qui utilise des données sans étiquette ou la création d'un index des plus proches voisins approximatifs pour les représentations vectorielles continues. L'entrée principale de tout pipeline d'entraînement est constitué de nouvelles données d'entraînement, et la sortie principale est un nouveau modèle candidat à déployer en production.

Le pipeline d'entraînement s'exécute automatiquement en production suivant une programmation (par exemple, tous les jours ou toutes les semaines) ou en fonction d'un déclencheur (par exemple, lorsque de nouvelles données étiquetées sont disponibles). Par conséquent, vous devez ajouter au workflow d'entraînement des étapes de contrôle qualité, en particulier des étapes de validation des données et de validation du modèle. Ces étapes permettent de valider les entrées et les sorties des pipelines.

Ajoutez l'étape de validation des données après l'étape d'ingestion des données dans le workflow d'entraînement. L'étape de validation des données profile les nouvelles données d'entrée pour l'entraînement ingérées dans le pipeline. Lors du profilage, le pipeline utilise un schéma de données prédéfini, créé lors du processus de développement du ML, afin de détecter les anomalies. Selon le cas d'utilisation, vous pouvez ignorer ou simplement supprimer certains enregistrements non valides de l'ensemble de données. Cependant, d'autres problèmes dans les données nouvellement ingérées peuvent interrompre l'exécution du pipeline d'entraînement. Vous devez donc identifier et résoudre ces problèmes.

Consignes relatives à la validation des données

  • Vérifiez que les caractéristiques des données d'entraînement extraites sont complètes et qu'elles correspondent au schéma attendu, c'est-à-dire qu'il n'y a ni caractéristiques manquantes, ni caractéristiques ajoutées. Vérifiez également que les caractéristiques correspondent aux volumes prévus.
  • Validez les types de données et les formes des caractéristiques de l'ensemble de données ingérées dans le pipeline d'entraînement.
  • Vérifiez que les formats de certaines caractéristiques (dates, heures, URL, codes postaux et adresses IP, par exemple) correspondent aux expressions régulières attendues. Vérifiez également que les caractéristiques se situent dans des plages valides.
  • Validez la fraction maximale de valeurs manquantes pour chaque caractéristique. Une fraction élevée de valeurs manquantes dans une caractéristique particulière peut affecter l'entraînement du modèle. Les valeurs manquantes traduisent généralement une source de caractéristiques peu fiable.
  • Validez les domaines des caractéristiques d'entrée. Par exemple, vérifiez s'il y a des modifications au niveau du vocabulaire des caractéristiques catégorielles ou des plages des caractéristiques numériques, et ajustez le prétraitement des données en conséquence. Autre exemple : les plages de caractéristiques numériques peuvent changer si une mise à jour du système en amont chargé de remplir les caractéristiques change les unités de mesure utilisées. Par exemple, le système en amont peut passer une devise du dollar au yen, ou passer une unité de distance du kilomètre au mètre.
  • Vérifiez que la répartition de chaque caractéristique correspond à vos attentes. Par exemple, vous pouvez vérifier que la valeur la plus courante d'une caractéristique de type de paiement est cash, et que ce type de paiement représente 50 % de l'ensemble des valeurs. Néanmoins, ce test peut échouer si le type de paiement le plus courant change et devient credit_card. Une modification externe telle que celle-ci peut nécessiter des changements dans votre modèle.

Ajoutez une étape de validation du modèle avant l'étape d'enregistrement du modèle pour vous assurer que seuls les modèles qui répondent aux critères de validation sont enregistrés pour le déploiement en production.

Consignes relatives à la validation des modèles

  • Pour l'évaluation finale du modèle, utilisez une division de test distincte qui n'a pas été utilisée pour l'entraînement du modèle ou pour le réglage des hyperparamètres.
  • Attribuez un score au modèle candidat en fonction de la division des données de test, calculez les métriques d'évaluation pertinentes et vérifiez que le modèle candidat dépasse les seuils de qualité prédéfinis.
  • Assurez-vous que la division des données de test est représentative de toutes les données afin de tenir compte de divers modèles de données. Pour les données de séries temporelles, assurez-vous que la division de test contient des données plus récentes que la division de l'entraînement.
  • Testez la qualité du modèle sur des tranches de données importantes, telles que les utilisateurs par pays ou les films par genre. En testant avec des données par tranches, vous évitez le cas où des problèmes de performances à un niveau très fin sont masqués par une métrique récapitulative globale.
  • Évaluez le modèle actuel (champion) par rapport à la division des données de test, puis comparez-le au modèle candidat (challenger) produit par le pipeline d'entraînement.
  • Validez le modèle par rapport aux indicateurs d'équité pour détecter les biais implicites. Par exemple, un biais implicite peut être induit par un manque de diversité dans les données d'entraînement. Les indicateurs d'équité peuvent révéler la cause profonde de problèmes que vous devrez résoudre avant de déployer le modèle en production.

Pendant l'entraînement continu, vous pouvez valider le modèle par rapport aux métriques d'optimisation et d'acceptabilité. Vous pouvez également valider le modèle uniquement par rapport aux métriques d'optimisation et différer la validation par rapport aux métriques d'acceptabilité jusqu'à la phase de déploiement du modèle. Si vous prévoyez de déployer des variantes du même modèle dans différents environnements ou charges de travail d'inférence, il peut être plus approprié de différer la validation par rapport aux métriques d'acceptabilité. Différents environnements ou charges de travail d'inférence (par exemple des environnements cloud ou sur appareil, ou des environnements en temps réel ou par lot) peuvent nécessiter des seuils différents pour les métriques d'acceptabilité. Si vous effectuez un déploiement dans plusieurs environnements, votre pipeline d'entraînement continu peut entraîner au moins deux modèles, chacun étant optimisé pour son environnement de déploiement cible. Pour obtenir plus d'informations et un exemple, consultez la section Déploiements doubles sur Vertex AI.

À mesure que vous mettez en production davantage de pipelines d'entraînement continu avec des workflows complexes, vous devez suivre les métadonnées et les artefacts produits par le pipeline. Le suivi de ces informations vous permet de suivre et de déboguer tout problème pouvant survenir en production. Le suivi des informations vous aide également à reproduire les résultats des pipelines afin d'améliorer leur mise en œuvre dans les itérations de développement de ML suivantes.

Consignes relatives au suivi des métadonnées et des artefacts de ML

  • Assurez la traçabilité du code source, des pipelines déployés, des composants de pipeline, des exécutions de pipeline, de l'ensemble de données utilisé et des artefacts produits.
  • Suivez les hyperparamètres et les configurations des exécutions du pipeline.
  • Effectuez un suivi des entrées et des artefacts de sortie clés pour les étapes du pipeline, telles que les statistiques relatives aux ensembles de données, les anomalies des ensembles de données (le cas échéant), les données transformées et les schémas, les points de contrôle des modèles et les résultats des évaluations de modèle.
  • Vérifiez que les étapes du pipeline conditionnel s'exécutent en réponse aux conditions et assurez l'observabilité en ajoutant des mécanismes de modification dans le cas où les étapes clés ne s'exécutent pas ou échouent.

Consignes relatives à la qualité du déploiement de modèles

Supposons que vous disposiez d'un modèle entraîné qui a été validé du point de vue des métriques d'optimisation, et que le modèle est approuvé du point de vue de la gouvernance des modèles (comme décrit plus loin dans la section gouvernance des modèles). Le modèle est stocké dans le registre de modèles et prêt à être déployé en production. À ce stade, vous devez mettre en œuvre un ensemble de tests pour vérifier que le modèle est apte à l'inférence dans son environnement cible. Vous devez également automatiser ces tests dans une routine CI/CD de modèle.

Consignes

  • Vérifiez que l'artefact de modèle peut être correctement chargé et appelé avec ses dépendances d'exécution. Vous pouvez effectuer cette vérification en mettant le modèle en préproduction dans une version en bac à sable de l'environnement d'inférence. Cette vérification vous permet de vous assurer que les opérations et les fichiers binaires utilisés par le modèle sont présents dans l'environnement.
  • Le cas échéant, validez les métriques d'acceptabilité du modèle (telles que la taille du modèle et la latence) dans un environnement de préproduction.
  • Effectuez des tests unitaires des interfaces d'inférence des artefacts de modèle dans un environnement de préproduction par rapport aux entrées brutes et aux sorties attendues.
  • Effectuez des tests unitaires de l'artefact de modèle dans un environnement de préproduction pour un ensemble de cas types et de cas particuliers des requêtes de prédiction. Par exemple, effectuez des tests unitaires pour une instance de requête où toutes les caractéristiques sont définies sur None.
  • Effectuez un test de confiance sur l'API de service du modèle après son déploiement dans son environnement cible. Pour effectuer ce test, envoyez une seule instance ou un lot d'instances au service du modèle et validez la réponse du service.
  • Effectuez des tests Canary de la version du modèle nouvellement déployée sur un petit flux de données d'inférence réelles. Ce test garantit que le nouveau service du modèle ne produit pas d'erreur avant son exposition pour un grand nombre d'utilisateurs.
  • Vérifiez dans un environnement de préproduction que vous pouvez restaurer rapidement et en toute sécurité une version précédente du modèle d'inférence.
  • Effectuez des tests en ligne pour vérifier le modèle nouvellement entraîné sur un petit sous-ensemble des données d'inférence. Ce test mesure les performances du nouveau modèle par rapport au modèle actuel. Après avoir comparé les performances du nouveau modèle avec celles du modèle actuel, vous pouvez décider de publier entièrement le nouveau modèle pour l'inférence de l'intégralité des requêtes de prédiction en ligne. Les techniques d'expérimentation en ligne incluent les tests A/B et le bandit manchot (Multi-Armed Bandit ou MAB).

Consignes relatives à la qualité de l'inférence des modèles

Les performances de prédiction des modèles de ML déployés et réalisant l'inférence en production se dégradent généralement au fil du temps. Cette dégradation peut être due à des incohérences introduites entre les caractéristiques d'inférence et celles attendues par le modèle. Ces incohérences sont désignées par le terme décalage entraînement/inférence. Par exemple, un modèle de recommandation peut s'attendre à une valeur d'entrée alphanumérique pour une caractéristique telle qu'un code produit récemment consulté. Au lieu de cela, c'est le nom, et non le code du produit, qui est transmis lors de l'inférence, en raison d'une mise à jour de l'application qui utilise le service du modèle.

En outre, le modèle peut devenir obsolète car les propriétés statistiques des données d'inférence dérivent au fil du temps. Les motifs appris par le modèle actuellement déployé ne sont alors plus précis. Dans les deux cas, le modèle ne peut plus fournir de prédictions précises.

Pour éviter cette dégradation des performances de prédiction du modèle, vous devez effectuer une surveillance continue de son efficacité. La surveillance vous permet de vérifier régulièrement et de manière proactive que les performances du modèle ne se dégradent pas.

Consignes

  • Consignez un échantillon des charges utiles de requête/réponse d'inférence dans un datastore pour les analyser régulièrement. La requête correspond à l'instance d'entrée, et la réponse correspond à la prédiction générée par le modèle pour cette instance de données.
  • Mettez en œuvre un processus automatisé qui profile les données de requête-réponse stockées en calculant des statistiques descriptives. Calculez et stockez ces statistiques d'inférence à intervalles réguliers.
  • Identifiez le décalage entraînement/inférence icausé par le décalage et la dérive des données, en comparant les statistiques de données d'inférence aux statistiques de référence des données d'entraînement. En outre, analysez l'évolution des statistiques de données d'inférence au fil du temps.
  • Identifiez la dérive conceptuelle en analysant la manière dont les attributions de caractéristiques pour les prédictions évoluent au fil du temps.
  • Identifiez les instances de données d'inférence considérées comme des anomalies par rapport aux données d'entraînement. Pour identifier ces anomalies, utilisez des techniques de détection de nouveauté et suivez l'évolution du pourcentage d'anomalies dans les données d'inférence au fil du temps.
  • Définissez des alertes avertissant quand le modèle atteint des seuils de score de décalage sur les caractéristiques de prédiction clés de votre ensemble de données
  • Si des étiquettes sont disponibles (c'est-à-dire, une vérité terrain), associez les étiquettes réelles aux étiquettes prédites des instances d'inférence pour effectuer une évaluation continue. Cette approche est semblable au système d'évaluation que vous mettez en œuvre en tant que test A/B lors des tests en ligne. L'évaluation continue permet d'identifier non seulement la puissance prédictive de votre modèle en production, mais aussi d'identifier les types de requêtes sur lesquels il est efficace et ceux sur lesquels il obtient de mauvaises performances.
  • Définissez des objectifs pour les métriques système qui sont importantes pour vous, et mesurez les performances des modèles par rapport à ces objectifs.
  • Surveillez l'efficacité du service pour vous assurer que votre modèle peut être utilisé en production à grande échelle. Cette surveillance vous permet également de prédire et de gérer la planification des capacités, ainsi que d'estimer le coût de votre infrastructure d'inférence. Surveillez les métriques d'efficacité, y compris l'utilisation du processeur, du GPU, de la mémoire, la latence du service, les débits et le taux d'erreur.

Gouvernance des modèles

La gouvernance des modèles est une fonction essentielle au sein des entreprises. Elle fournit des consignes et des processus permettant aux employés de mettre en œuvre les principes d'IA de l'entreprise. Ces principes peuvent consister à éviter les modèles qui créent ou appliquent des biais, et à être en mesure de justifier les décisions basées sur l'IA. La fonction de gouvernance des modèles garantit qu'il y a un humain dans la boucle. L'examen manuel est particulièrement important pour les charges de travail sensibles et à fort impact (souvent destinées aux utilisateurs). Les charges de travail de ce type peuvent inclure l'évaluation des risques liés au crédit, le classement des candidats à un emploi, l'approbation des polices d'assurance et la propagation d'informations sur les réseaux sociaux.

Consignes

  • Ayez une matrice d'attribution de responsabilité pour chaque modèle par tâche. La matrice doit prendre en compte les équipes pluridisciplinaires (secteurs métier, ingénierie des données, data science, ingénierie du ML, risques et conformité, etc.) sur l'ensemble de la hiérarchie de l'organisation.
  • Gérez la documentation et les rapports associés à un modèle dans le registre lié à la version du modèle, par exemple à l'aide de fiches de modèle. De telles métadonnées incluent des informations sur les données utilisées pour entraîner le modèle, sur les performances du modèle et sur ses limites connues.
  • Mettez en œuvre un processus d'examen pour le modèle avant d'approuver son déploiement en production. Dans ce type de processus, vous conservez les versions de la checklist du modèle, de la documentation supplémentaire et de toutes les informations complémentaires susceptibles d'être demandées par les parties prenantes.
  • Évaluez le modèle sur des ensembles de données de référence (également appelés golden datasets), qui couvrent à la fois les cas standards et les cas particuliers. En outre, validez le modèle par rapport aux indicateurs d'équité pour vous aider à détecter les biais implicites.
  • Expliquez aux utilisateurs du modèle le comportement prédictif qu'il doit avoir dans son ensemble et sur des exemples d'instances d'entrée spécifiques. Fournir ces informations vous aide à comprendre les caractéristiques importantes et les comportements indésirables possibles du modèle.
  • Analysez le comportement prédictif du modèle à l'aide d'outils d'analyse de type "Et si ?" pour comprendre l'importance des différentes caractéristiques de données. Cette analyse peut également vous aider à visualiser le comportement du modèle sur plusieurs modèles et sous-ensembles de données d'entrée.
  • Testez le modèle contre des attaques contradictoires pour vous assurer qu'il est robuste contre les tentatives d'exploitation en production.
  • Suivez les alertes concernant les performances de prédiction des modèles en production, le décalage des ensembles de données et la dérive. Configurez les alertes pour avertir les parties prenantes du modèle.
  • Gérez l'expérimentation en ligne, le déploiement et le rollback des modèles.

Étape suivante

Contributeurs

Auteur : Mike Styer | Architecte de solutions d'IA générative

Autre contributeur : Amanda Brinhosa | Ingénieur client