Leitfaden für die Machine-Learning-Entwicklung

Künstliche Intelligenz strukturiert projektiert

Wirklich Nutzen aus Machine Learning zu ziehen, ist schon schwer genug. Umso ärgerlicher ist es, wenn Fehler den Fortschritt verzögern. Dieser Leitfaden führt, angelehnt an zahlreiche Best Practices, durch ein erfolgreiches ML-Projekt und zeigt typische Fallstricke auf.

 (Bild: ©putilov_denis/stock.adobe.com)
(Bild: ©putilov_denis/stock.adobe.com)

In der strategischen Planung großer Unternehmen spielen Machine-Learning-Projekte eine immer wichtigere Rolle. Dabei kann die Machine-Learning-Logik selbst zwar oft sehr schnell und kostengünstig entwickelt werden. Doch die Integration die Geschäftsprozesse und die allgemeine Software-Bereitstellung und -Wartung ist eine aufwendige und oft teure Angelegenheit. Drei Faktoren sind wichtig für die erfolgreiche Umsetzung:

  • • Erstens können traditionelle Softwareentwicklungsparadigmen den Projekterfolg nicht mehr garantieren, sobald große Datenmengen ins Spiel kommen.
  • • Zweitens ist ein hohes Maß an Koordination und Kooperation nötig, da häufig viele Teams in die Projekte eingebunden sind. Neben Data-Science- und Data-Engineering-Teams sind auch Infrastruktur- und Applikationsentwicklungs-Teams involviert.
  • • Drittens bauen ML-Entwicklungsprojekte zu Beginn oft nicht direkt auf den Daten auf – sondern auf einmaligen Daten-Exporten. Dies kann dazu führen, dass die Projektteams weder nicht-funktionale noch Skalierungsanforderungen einbeziehen können. Beispiele dafür sind unterschiedliche Datenformate, aber auch die Größe von Datenmengen oder die Geschwindigkeit, mit der Daten bereitgestellt werden, sowie erwartete Antwortzeiten.

Typische Fallstricke

Die folgenden Erkenntnisse zeigen, wie typische Fallstricke vermieden werden können. Wichtig ist zu Projektbeginn das richtige Setup für eine hohe Entwicklungsgeschwindigkeit zu wählen. Darüber hinaus sollte das Ziel – das produktive Deployment – so unkompliziert wie möglich erreicht werden.

Die Daten

Es ist üblich, lokal gespeicherte Beispieldaten, lokale Skripts und unstrukturierte Entwicklungsumgebungen für die Arbeit mit Daten und die Ergebnisanalyse zu nutzen. Dies sorgt anfangs für mehr Geschwindigkeit, weil die Daten vorhanden und beherrschbar sind. Wenn die Ressourcenanforderungen steigen, stößt das jedoch schnell an Grenzen. Vor allem der Anspruch, die Entwicklungen universal nutzen zu können, leidet darunter. Der stark lokal getriebene Entwicklungsansatz macht es schwer, reproduzierbare Ergebnisse zu liefern, kollaborativ zu arbeiten und Aufgaben wie Parsen, Prozessierung, Training oder Inferenz unabhängig voneinander zu bearbeiten. Das ist beim Deployment in Produktivumgebungen fatal, in denen sich Datenschemata, Speicher- und Prozessierungstechnologien sowie weitere Faktoren ständig ändern. Je früher an das produktive Deployment gedacht wird, desto besser. Best Practices umfassen dabei:

  • •  einen gut strukturierten Code in Verbindung mit Tests, Fehlerbehandlung, Logging und Verwaltung von Abhängigkeiten,
  • •  eine Unterteilung in logische, voneinander unabhängige Abläufe,
  • •  die gleichen Datenquellen, die später in der Produktivumgebung genutzt werden,
  • •  bei der initialen Auswahl der ML-Algorithmen an die späteren Skalierbarkeits-Anforderungen denken.

Langes Training

Das Training von ML-Modellen kann lange dauern. In Verbindung mit großen Datenmengen ist das bei vielen Projekten eine erhebliche technische Herausforderung. Solche Erwägungen sollten bereits in der Experimentierphase einfließen. So lassen sich Skalierbarkeitsprobleme und ein hierdurch verursachter Neuentwicklungsaufwand in späteren Projektphasen verhindern. Eine von vornherein effiziente Trainings-Pipeline liefert zudem einen Produktivitätszuwachs für das Entwicklungsteam und reduziert die Kosten für das Training der Modelle.

Minimum Viable Products

Ein MVP (Minimum Viable Products) ist eine Produktversion, die gerade genug Features aufweist, um bereits zu einem frühen Zeitpunkt von Kunden genutzt werden zu können. MVPs reduzieren die Markteinführungszeit und helfen dabei, früh Nutzerfeedback einzuholen. Letzteres kann damit von Beginn an in die Produktentwicklung einfließen. In der MVP-Entwicklung sollte rechtzeitig mit Produktivanforderungen gearbeitet werden. Das ermöglicht die spätere Erweiterung zu einem Vollprodukt. Sowohl der Code als auch die Infrastruktur sollten dementsprechend gestaltet sein.

Continuous Integration und Continuous Delivery

Continuous Integration/Continuous Delivery (CI/CD) ist eine Methode, die das strukturierte Bereitstellen von Bugfixes und neuen Funktionalitäten ermöglichen soll. Der CI/CD-Prozess sorgt dafür, dass die Arbeit von vielen Teammitgliedern kombiniert wird. Dabei bewahrt er die lokale und globale Integrität des Codes. Continuous Delivery macht Verbesserungen und Erweiterungen der Funktionen schnell für die Nutzer zugänglich. Machine-Learning-Projekte stehen jedoch im Gegensatz zur klassischen Softwareentwicklung, da sie zu Beginn oft durch eine längere lokale Experimentierphase gehen und aufgrund dessen oft sehr skriptlastig sind. CI/CD ist wohl der einzige Ansatz, der die Betriebssicherheit der ML-Lösung im Speziellen und der Applikation im Allgemeinen sicherstellen kann, denn dadurch können sicherheitskritische Updates zu jeder Zeit eingearbeitet werden.

Schrittweise produktiv

Die Software in eine Reihe von Pre-Production-Umgebungen auszurollen, hat sich in der Mainstream-Software-Entwicklung als Best Practice durchgesetzt. Im Zuge dessen wird die Software unter algorithmischen, infrastrukturellen und kommerziellen Gesichtspunkten geprüft, bevor eine produktive Bereitstellung erfolgt. Bei ML-Produkten ist das Ziel am Ende oft nicht klar und Entscheidungen über Maßnahmen zur Einrichtung entsprechender Umgebungen werden verzögert. Das frühzeitige Einrichten von DEV (Development)-, QA ( Quality Assurance)- und PROD (Production)-Umgebungen ist grundlegend für die reibungslose Entwicklung eines Machine-Learning-Produkts.

Pipeline-Strukturen anpassen

Das Training von Machine-Learning-Modellen kann selten direkt mit Rohdaten erfolgen. Im Vorfeld muss eine Datenbereinigung und -vorbereitung stattfinden. Das stellt Unternehmen mit großen Datenmengen vor eine komplexe Aufgabe. Damit tatsächlich alle notwendigen Schritte in der richtigen Reihenfolge ausgeführt werden, ist es empfehlenswert, ein Orchestrierungs-Framework wie Kubernetes zu nutzen. Das sorgt für einen Überblick über alle Abläufe.

Machine Learning Operations

Es gibt Anforderungen an Monitoring und Betrieb, die speziell Machine Learning Deployments, so genannte MLOps betreffen. Darunter fallen z.B. das Performance-Monitoring für Machine Learning-Modelle und die Wahl des richtigen Zeitpunkts für sein erneutes Training. Solche Monitoring-Operationen und Entscheidungen erfordern effektive Sammeln, Zusammenführen und Speichern von Metriken zur Beschreibung der Performance von Machine Learning-Algorithmen. Die Wahl der richtigen Frameworks und der Infrastruktur für diese Aufgaben sind wichtige Bausteine der Systemarchitektur.

Daten, Tools und Monitoring

Zumeist entstehen Fehlentwicklungen bereits in der Anfangsphase, wenn es um die Verwendung der richtigen Datenquellen geht. In späteren Phasen können Projekte scheitern, wenn wichtige Anforderungen wie Monitoring und Betrieb nicht frühzeitig in die Architektur einbezogen wurden. Gerade bei Machine Learning-Projekten ist es elementar, mit produktionsähnlichen Daten, einer geeigneten Umgebung und einem Monitoring-Setup zu arbeiten.