5. Intégration continue - AWS Conseils prescriptifs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

5. Intégration continue

Le système ML exécute des tests pour valider le fonctionnement du système de bout en bout, en vérifiant les éventuels points de défaillance. Les tests sont exécutés automatiquement lors de la validation, et les tests plus longs sont exécutés selon un calendrier fixe. Les tests vérifient les domaines traditionnels du génie logiciel, par exemple au niveau de l'unité et du système. En outre, les tests saisissent les particularités du ML en vérifiant les données, les fonctionnalités et le modèle.

5.1 Contrôles de code locaux

Avant de valider le code dans un référentiel de code centralisé, les développeurs exécutent localement des contrôles tels que des tests unitaires de base et des analyses statiques. L'exécution de ces vérifications avant la validation améliore la qualité globale du code et détecte les problèmes avant qu'ils ne soient soumis au contrôle de version.

5.2 Analyse de code statique

Le référentiel de code central contient des outils d'analyse de code statique qui s'exécutent rapidement lors de la validation. Cet outil devrait améliorer le style et le formatage du code. Il doit également vérifier les vulnérabilités de sécurité courantes dans le code source et le code d'infrastructure, les bogues courants et les autres faiblesses du code.

5.3 Tests de qualité des données

Les tests de qualité des données doivent, au minimum, vérifier que les données n'ont pas enfreint un schéma fixe. Une approche plus complète consiste à calculer les statistiques des données lors de l'ingestion, à définir des contraintes sur les données et à effectuer des tests par rapport à celles-ci.

Il est possible de configurer des tests de qualité des données indépendamment ou dans le cadre du pipeline. Les statistiques et les contraintes sont réutilisées pour le suivi.

5.4 Tests de fonctionnalités

Dans le cadre d'un pipeline complet, l'importance des fonctionnalités est générée. Les tests de fonctionnalités affirment que l'importance des caractéristiques, ou la manière dont le modèle attribue les valeurs des caractéristiques, ne change pas. Les tests de fonctionnalités peuvent contribuer à la surveillance, car ils peuvent alerter et suivre les violations dans les entrées d'un modèle.

5.5 Tests unitaires

Les tests unitaires pour l'ensemble du code (modèle, application et infrastructure) sont exécutés avant et lors de la validation. Chaque test unitaire permet de vérifier un élément de code important pour confirmer qu'il fonctionne comme prévu. Dans le cas du code ML, des tests peuvent être exécutés pour vérifier l'exactitude algorithmique.

5.6 Tests d'intégration

Un test d'intégration vérifie que le pipeline fonctionne de bout en bout avec succès, notamment en mettant en place l'infrastructure associée au pipeline. Ce test permet de vérifier que le système fonctionne et se connecte comme prévu. Si le déploiement est distinct, il devrait également y avoir un end-to-end test pour s'assurer que le déploiement fonctionne.

5.7 Tests de fumée

Le système comporte des tests de fumée qui s'exécutent en mini-régression rapide de chaque fonctionnalité. Les tests de fumée font partie de l'intégration continue et peuvent être exécutés dans un environnement conteneurisé pour imiter les fonctionnalités du cloud.

5.8 Essais de charge

Des tests de charge à la demande sont en place. En plus de capturer le comportement du système ML sous des charges élevées et faibles, les tests de charge fournissent des statistiques sur le débit ou la latence à l'échelle du système. Les données recueillies par le biais de tests de charge fournissent des informations sur la taille des ressources et les politiques de dimensionnement.

5.9 Tests fonctionnels du modèle

Les sorties et entrées du modèle sont soumises à des tests fonctionnels automatisés. Pour vérifier un comportement au sein d'une capacité, les sorties et les entrées du modèle sont testées sur des données réelles ou fausses avec des exemples de base.

5.10 Tests d'inférence de modèles avec des cas extrêmes

Dans le cadre des tests de fonctionnalité minimaux, les tests de modèles doivent vérifier l'absence de comportement extrême compte tenu de certaines entrées avant la promotion du modèle. Cela place un garde-corps supplémentaire pour aider à prévenir les comportements inattendus.