Intégration continue (CI)
Améliorez les flux de travail en IA/ML grâce à l'intégration continue. Automatisez les tests, améliorez la qualité du code et rationalisez le développement des modèles sans effort.
L'intégration continue (IC) est une pratique de développement logiciel dans laquelle les développeurs fusionnent fréquemment leurs modifications de code dans un référentiel central, après quoi des constructions et des tests automatisés sont exécutés. L'objectif principal de l'intégration continue est de détecter rapidement les problèmes d'intégration, d'améliorer la qualité du code et de rationaliser le flux de travail de développement. Dans le contexte de l'intelligence artificielle (IA) et de l'apprentissage automatique (ML), l'IC va au-delà des vérifications traditionnelles du code pour inclure la validation des données, des modèles et des performances globales du pipeline, formant ainsi un composant essentiel des opérations d'apprentissage automatique (MLOps).
Principes clés de l'intégration continue
Le processus de CI repose sur une base d'automatisation et d'itération fréquente. Les développeurs apportent de petites modifications fréquentes à un référentiel partagé en utilisant un système de contrôle de version tel que Git. Chaque modification déclenche un flux de travail automatisé, ou pipeline, qui exécute plusieurs étapes clés :
- Construction automatisée : Le système compile automatiquement le code pour s'assurer qu'il s'intègre correctement. Pour les projets ML, cela peut impliquer la mise en place de l'environnement à l'aide d'outils de conteneurisation tels que Docker.
- Tests automatisés : Une suite de tests est exécutée pour valider les nouveaux changements. Il s'agit de tests unitaires pour la logique du code, de tests d'intégration pour les interactions entre les composants et de tests spécialisés pour le ML, tels que la validation des données et l'évaluation des modèles.
- Boucle de rétroaction rapide : Si une étape du pipeline échoue, l'équipe de développement en est immédiatement informée. Elle peut ainsi résoudre rapidement les problèmes avant qu'ils ne deviennent plus complexes et ne soient intégrés dans la base de code principale.
CI pour l'apprentissage automatique (CI4ML)
L'application de l'IC aux projets d'apprentissage automatique présente des défis uniques. Au-delà du simple code, les systèmes de ML impliquent des données et des modèles formés, qui doivent également être versionnés et validés. Un pipeline d'IC efficace pour un projet d'apprentissage automatique, tel qu'un modèle YOLO d'Ultralytics, comprend des étapes supplémentaires :
- Validation des données : Vérification automatique de l'exactitude des nouvelles données, du respect du schéma et des biais potentiels de l'ensemble de données. Des outils tels que Great Expectations peuvent être utilisés à cette fin.
- Tests de modèles : Exécution de tests pour vérifier la dégradation des performances. Il s'agit de comparer les performances du nouveau modèle à celles d'une version de référence sur un ensemble de données de validation normalisé.
- Validation du pipeline de formation : S'assurer que le processus de formation du modèle lui-même est reproductible et efficace. Ceci peut être géré à l'aide de plateformes comme Ultralytics HUB, qui rationalise la gestion des ensembles de données et les flux de travail de formation.
Applications dans le monde réel
- Développement de la conduite autonome : Une équipe travaillant sur un modèle de détection d'objets pour les véhicules autonomes utilise un pipeline de CI. Lorsqu'un développeur soumet du code pour améliorer la capacité du modèle à détecter les piétons la nuit, le pipeline se déclenche automatiquement. Il exécute des tests unitaires, réapprend une version légère du modèle YOLO11 sur un ensemble de données de test et évalue son mAP. Si la précision ne diminue pas et que tous les tests sont concluants, la modification est approuvée pour être fusionnée. Les outils de CI populaires tels que GitHub Actions ou Jenkins sont couramment utilisés pour automatiser ces flux de travail.
- Analyse d'images médicales : Dans un système conçu pour la détection de tumeurs dans des images médicales, un spécialiste des données peut ajouter de nouvelles données afin d'améliorer la robustesse. Le pipeline CI valide le nouveau format et la nouvelle distribution des données. Il déclenche ensuite une validation à l'aide d'un modèle pré-entraîné pour s'assurer que les prédictions du modèle sur un "ensemble de données en or" restent cohérentes, évitant ainsi un comportement inattendu en production. Ce processus permet de maintenir des normes de fiabilité élevées, cruciales pour l'IA dans le secteur de la santé.
Intégration continue et livraison/déploiement continus (CD)
Bien qu'étroitement liée, l'IC est distincte de la livraison continue et du déploiement continu (CD).
- Intégration continue (CI) : Elle se concentre sur l'intégration fréquente et les tests automatisés des modifications du code. Le résultat est une version validée prête pour l'étape suivante. Ultralytics utilise l'intégration continue pour tester toutes les demandes de téléchargement avant de les fusionner.
- Livraison continue (CD) : Extension de l'IC en préparant automatiquement chaque modification validée en vue de sa diffusion dans un environnement de stockage ou de production. Cependant, le déploiement final du modèle vers la production nécessite une approbation manuelle. Cette approche est détaillée dans des guides provenant de sources telles qu'Atlassian.
- Déploiement continu (CD) : Il va plus loin en déployant automatiquement chaque modification validée directement en production, sans aucune intervention humaine. Il s'agit du niveau d'automatisation le plus élevé du cycle de vie des versions logicielles.
Ensemble, les pratiques de CI et de CD sont à la base d'une stratégie MLOps solide, qui vise à unifier le développement et le fonctionnement des systèmes d'apprentissage automatique, de l'expérimentation initiale au déploiement et à la surveillance continue des modèles.