kirill_makarov - stock.adobe.com
Machine Learning: Von der Entwicklung in die Produktion
Die Überbrückung der Lücke zwischen Training und Produktion ist eine der größten Machine-Learning-Hürden. Einige Firmen können den Prozess rationalisieren.
Data Scientists, die KI-Modelle entwickeln und Data Engineers, die Machine Learning (ML) produktiv einsetzen, leben und arbeiten in verschiedenen Welten. Deshalb ist es schwierig, neue Vorhersagemodelle schnell und effizient in Betrieb zu nehmen.
Einige Unternehmen finden allerdings Wege, dieses Problem zu umgehen. Auf der Konferenz Flink Forward in San Francisco im April 2018 beschrieben die Ingenieure von Comcast und Capital One, wie sie Apache Flink verwenden, um diese Lücke zu schließen und die Entwicklung neuer KI-Algorithmen zu beschleunigen.
Versions-Management
Die Werkzeuge, die von Data Scientists und Ingenieuren verwendet werden, können sich auf subtile Weise unterscheiden. Das führt zu Problemen bei der Nachbildung guter KI-Modelle in der Produktion.
Comcast experimentiert mit der Versionierung aller Artefakte, die in die Entwicklung und Bereitstellung von KI-Modellen gehen. Dazu gehören Datenmodelle für Machine Learning, Modellfunktionen und Code, der Vorhersagen für maschinelles Lernen ausführt. Alle Komponenten sind in GitHub gespeichert, wodurch es möglich ist, von Data Scientists entwickelte Modelle und von Entwicklern eingesetzten Code miteinander zu verknüpfen.
„Dies stellt sicher, dass das, was wir in Produktion und Featureentwicklung investieren, konsistent ist“, sagt Dave Torok, Senior Enterprise Architect bei Comcast. Der Prozess ist derzeit noch nicht vollständig automatisiert. Ziel ist es jedoch, den gesamten Lebenszyklus der Entwicklungs-Pipeline von Comcast für Machine Learning zu automatisieren.
Python versus Java
Data Scientists verwenden als Programmiersprache gerne Python, wogegen Produktionssysteme häufig mit Java arbeiten. Um diese Lücke zu schließen, hat Comcast eine Reihe von Jython-Komponenten für seine Data Scientists gebaut.
Jython ist eine Implementierung, die es Data Scientists ermöglicht, Python-Anwendungen nativ auf Java-Infrastrukturen auszuführen. Es wurde erstmals 1997 veröffentlicht und erfreut sich wachsender Beliebtheit bei Unternehmen, die Machine-Learning-Initiativen starten, da Python von Data Scientists häufig zur Erstellung von Modellen für maschinelles Lernen verwendet wird. Eine Einschränkung des Ansatzes ist, dass er viele der Funktionen, die auf Flink laufen, nicht nutzen kann. Jython kompiliert Python-Code als nativen Java-Code.
Java-Entwickler müssen jedoch auch Anbindungen implementieren, um die Vorteile der neuen Java-Methoden zu nutzen, die mit Tools wie Flink eingeführt wurden. „Irgendwann wollen wir mehr Flink-native Funktionen entwickeln, doch andererseits gibt es uns mehr Flexibilität beim Deployment“, sagt Torok.
Capital One stieß auf ähnliche Probleme, als es darum ging, bessere Algorithmen für die Betrugserkennung zu erstellen. Auch hier musste die Python-Umgebung der Data Scientists mit der produktiven Java-Umgebung verbunden werden. Die Bank arbeitete daran, eine Jython-Bibliothek aufzubauen, die als Adapter fungiert.
„Dadurch können wir jedes Feature so implementieren, wie es in Python verfügbar ist“, sagt Jeff Sharpe, Senior Software Engineer bei Capital One. Diese Anwendungen laufen innerhalb von Flink wie Java-Code. Einer der Vorteile dieses Ansatzes ist, dass die Funktionen parallel laufen können, was in Jython normalerweise nicht möglich ist.
Fallback-Mechanismen notwendig
Die Machine-Learning-Modelle von Comcast erstellen Vorhersagen über Korrelationen mehrerer Funktionen. Allerdings sind die Daten für einige dieser Features nicht immer in der Laufzeit verfügbar, so dass Fallback-Mechanismen implementiert werden müssen.
Comcast hat zum Beispiel eine Reihe von Predictive-Modellen entwickelt, um Reparaturen auf Grundlage einer Vielzahl von Funktionen zu priorisieren, einschließlich der Anzahl von Anrufen im letzten Monat, der Messung geringerer Internetgeschwindigkeit und das Verhalten der Endgeräte. Allerdings sind einige Daten nicht immer verfügbar, um die Schwere eines Kundenproblems rechtzeitig vorherzusagen, was zu Verzögerungen und zur Verwendung eines weniger genauen Modells führt.
Die ersten Modelle werden auf Grundlage von historischen Daten erstellt. Die KI-Infrastruktur von Comcast ermöglicht es Ingenieuren jedoch, Informationen über die Leistung des maschinellen Lernens in der Produktion wieder in den Modellschulungsprozess einzuspeisen, um die Leistung im Laufe der Zeit zu verbessern. Der Schlüssel liegt in der Korrelation von Modellvorhersagen mit Faktoren wie den Beobachtungen eines Technikers.
Historische Daten sind eine Herausforderung
Capital One nutzt Flink und Microservices, um historische und aktuelle Daten für die Entwicklung und Implementierung besserer Betrugserkennungsmodelle zu verwenden.
Andrew Gao, Softwareentwickler bei Capital One, sagt, dass die bisherigen Algorithmen der Bank nicht auf alle Aktivitäten eines Kunden zugreifen konnten. Auf der Produktionsseite müssen diese Modelle in der Lage sein, in angemessener Zeit eine Antwort zu geben. „Wir wollen Betrug erkennen, aber kein schlechtes Kundenerlebnis schaffen", sagt er.
Das erste Projekt begann als eine monolithische Flink-Anwendung. Capital One stieß jedoch auf Probleme beim Zusammenführen von Daten aus historischen Datenquellen und aktuellen Streaming-Daten, so dass diese in mehrere Microservices aufgeteilt wurden, die zur Lösung des Problems beitrugen.
Das deutet auf eine der aktuellen Einschränkungen bei der Verwendung von Stream Processing für die Erstellung von KI-Anwendungen hin. Stephan Ewen, Chief Technology Officer bei Data Artisans und leitender Entwickler von Flink, weist darauf hin, dass sich die Entwicklung von Flink-Tools traditionell auf KI und Machine Learning in der Produktion konzentriert hat.
„Entwickler können mit Flink Trainingslogik modellieren, aber wir haben sie nicht dazu gedrängt. Das geschieht aber immer häufiger“, sagt er.
Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+, Xing und Facebook!