Kontinuierliche Integration (CI)
Verbessern Sie AI/ML-Workflows mit kontinuierlicher Integration. Automatisieren Sie Tests, verbessern Sie die Codequalität und optimieren Sie die Modellentwicklung mühelos.
Continuous Integration (CI) ist eine Praxis der Softwareentwicklung, bei der Entwickler ihre Codeänderungen häufig in ein zentrales Repository einbringen, woraufhin automatisierte Builds und Tests durchgeführt werden. Das Hauptziel von CI ist die frühzeitige Erkennung von Integrationsproblemen, die Verbesserung der Codequalität und die Rationalisierung des Entwicklungsworkflows. Im Kontext der künstlichen Intelligenz (KI) und des maschinellen Lernens (ML) geht KI über die traditionellen Codeprüfungen hinaus und umfasst auch die Validierung von Daten, Modellen und der Gesamtleistung der Pipeline, was eine wichtige Komponente des maschinellen Lernens darstellt.
Schlüsselprinzipien der kontinuierlichen Integration
Der CI-Prozess basiert auf Automatisierung und häufigen Iterationen. Die Entwickler übertragen kleine, häufige Änderungen in ein gemeinsames Repository mit einem Versionskontrollsystem wie Git. Jeder Push löst einen automatisierten Workflow oder eine Pipeline aus, die mehrere wichtige Schritte ausführt:
- Automatisierte Erstellung: Das System kompiliert den Code automatisch, um sicherzustellen, dass er korrekt integriert wird. Bei ML-Projekten kann dies die Einrichtung der Umgebung mithilfe von Containerisierungstools wie Docker beinhalten.
- Automatisierte Tests: Eine Reihe von Tests wird ausgeführt, um die neuen Änderungen zu validieren. Dazu gehören Unit-Tests für die Codelogik, Integrationstests für die Interaktion von Komponenten und spezielle Tests für ML, z. B. Datenvalidierung und Modellbewertung.
- Schnelle Feedback-Schleife: Wenn ein Schritt in der Pipeline fehlschlägt, wird das Entwicklungsteam sofort benachrichtigt. So können sie Probleme schnell beheben, bevor sie komplexer werden und in die Hauptcodebasis integriert werden.
CI für maschinelles Lernen (CI4ML)
Die Anwendung von KI auf Projekte des maschinellen Lernens bringt einzigartige Herausforderungen mit sich. ML-Systeme umfassen nicht nur Code, sondern auch Daten und trainierte Modelle, die ebenfalls versioniert und validiert werden müssen. Eine effektive KI-Pipeline für ein ML-Projekt, z. B. für ein Ultralytics YOLO-Modell, umfasst zusätzliche Schritte:
- Datenvalidierung: Automatische Überprüfung neuer Daten auf Korrektheit, Schemataeinhaltung und mögliche Verzerrungen des Datensatzes. Hierfür können Tools wie Great Expectations verwendet werden.
- Modellprüfung: Durchführung von Tests zur Prüfung auf Leistungsverschlechterung. Dabei werden die Leistungsmetriken des neuen Modells mit einer Basisversion auf einem standardisierten Validierungsdatensatz verglichen.
- Validierung der Schulungspipeline: Sicherstellen, dass der Modellschulungsprozess selbst reproduzierbar und effizient ist. Dies kann mithilfe von Plattformen wie Ultralytics HUB verwaltet werden, die die Datensatzverwaltung und die Schulungsworkflows rationalisieren.
Anwendungen in der realen Welt
- Entwicklung des autonomen Fahrens: Ein Team, das an einem Objekterkennungsmodell für autonome Fahrzeuge arbeitet, verwendet eine CI-Pipeline. Wenn ein Entwickler Code einreicht, um die Fähigkeit des Modells zu verbessern, Fußgänger bei Nacht zu erkennen, wird die Pipeline automatisch ausgelöst. Sie führt Unit-Tests durch, trainiert eine abgespeckte Version des YOLO11-Modells auf einem Testdatensatz neu und bewertet dessen mAP. Wenn die Genauigkeit nicht abnimmt und alle Tests erfolgreich sind, wird die Änderung zur Zusammenführung freigegeben. Beliebte CI-Tools wie GitHub Actions oder Jenkins werden häufig zur Automatisierung dieser Arbeitsabläufe verwendet.
- Medizinische Bildanalyse: In einem System, das für die Tumorerkennung in medizinischen Bildern entwickelt wurde, könnte ein Datenwissenschaftler neue erweiterte Daten hinzufügen, um die Robustheit zu verbessern. Die CI-Pipeline validiert das neue Datenformat und die Verteilung. Anschließend löst sie einen Validierungslauf mit einem vorab trainierten Modell aus, um sicherzustellen, dass die Vorhersagen des Modells auf einem "goldenen Datensatz" konsistent bleiben und unerwartetes Verhalten in der Produktion verhindert wird. Dieser Prozess trägt dazu bei, hohe Zuverlässigkeitsstandards aufrechtzuerhalten, die für KI im Gesundheitswesen entscheidend sind.
Kontinuierliche Integration im Vergleich zu kontinuierlicher Bereitstellung (Continuous Delivery/Deployment, CD)
Obwohl eng miteinander verbunden, unterscheidet sich CI von Continuous Delivery und Continuous Deployment (CD).
- Kontinuierliche Integration (CI): Konzentriert sich auf die häufige Integration und das automatisierte Testen von Codeänderungen. Das Ergebnis ist ein validiertes Build, das für die nächste Stufe bereit ist. Ultralytics nutzt CI, um alle Pull-Anforderungen zu testen, bevor sie zusammengeführt werden.
- Kontinuierliche Bereitstellung (CD): Erweitert CI, indem jede validierte Änderung automatisch für die Freigabe in einer Staging- oder Produktionsumgebung vorbereitet wird. Die endgültige Bereitstellung des Modells in der Produktion erfordert jedoch eine manuelle Genehmigung. Dieser Ansatz wird in Anleitungen von Quellen wie Atlassian detailliert beschrieben.
- Kontinuierliche Bereitstellung (CD): Geht noch einen Schritt weiter, indem jede validierte Änderung automatisch und ohne menschliches Zutun direkt in der Produktion bereitgestellt wird. Dies stellt den höchsten Automatisierungsgrad im Software-Release-Lebenszyklus dar.
KI- und CD-Praktiken bilden zusammen die Grundlage für eine robuste MLOps-Strategie, die darauf abzielt, die Entwicklung und den Betrieb von Systemen für maschinelles Lernen zu vereinheitlichen, von den ersten Experimenten bis zur Bereitstellung und kontinuierlichen Modellüberwachung.