Warum ist es wichtig seine Modelle zu hosten?
Bis zu 90 Prozent der Machine-Learning-Modelle gelangen gar nicht erst in den Produktiveinsatz. Woran scheitert es und wie lässt sich das verhindern?
Ziel von Machine Learning (ML) im Unternehmen ist meistens die Automatisierung von Abläufen, indem auf Basis von historischen Daten automatisiert Entscheidungen getroffen werden (z.B. Customer-Service Anfragen auf Basis der Anfrage zum zuständigen Mitarbeiter weiterleiten oder in der Produktion fehlerhafte Produkte automatisiert aussortieren).
Die Modelle sollen also direkt in die Unternehmensabläufe integriert werden und rund um die Uhr für das Unternehmen arbeiten.
Bevor die Modelle aber in den produktiven Einsatz kommen können, werden sie oft von einzelnen Mitarbeitern (meist Data-Scientist oder Machine-Learning-Engineers) oder einem kleinen Team in einer Offline-Umgebung entwickelt und trainiert. Die lokale Entwicklung hat den Vorteil, dass man schnell Anpassungen ausprobieren und kleine Veränderungen vornehmen kann und so einfach und effizient das Model verbessert. Arbeitet man mit großen Datenmengen, kann es auch sinnvoll sein, die Modelle auf einem Server im Unternehmen oder in der Cloud mit mehr Rechenleistung zu trainieren. Das geschieht so lange, bis man mit der Qualität des Modells zufrieden ist und es die vorgegebene Aufgabe hinreichend gut erledigt.
Soll das Modell nun aber in eine Umgebung überführt werden, wo es rund um die Uhr Prozesse unterstützen soll, muss es auch unabhängig vom Computer / Laptop des Entwicklers laufen und von anderen Computern, die in diesem Prozess involviert sind, ansprechbar sein. Dies ist ein sogenannter Server: ein Computer der rund um die Uhr läuft und über eine Schnittstelle (API) im lokale Netzwerk oder Internet maschinenlesbar Anfragen entgegennehmen und diese beantworten kann.
Diese Überführung in einen Server ist aber nicht immer schn und es gibt in der Welt der Softwareentwicklung einen berühmte Satz, der leider viel zu häufig fällt: "Aber auf meinem Rechner ging es noch!".
Warum ist das Überführen von Machine-Learning Modellen in eine Produktivumgebung so schwer?
Es gibt einige Punkte, die die Überführung von lokale entwickelten Modellen in eine Produktivumgebung erschweren:
- Die Entwicklungsumgebung (Hardware-Komponenten, Betriebssystem, andere Software) ist anders als die finale Produktivumgebung.
- Die Ansprache der Modelle funktioniert für die lokale Entwicklung manuell über das einmalige Ausführen des Programms, das Modell muss aber auf dem Server dauerhaft über eine Schnittstelle (API) ansprechbar sein.
- Je nach Anforderungen muss das Modell in der Produktivumgebung mehrere Berechnungen gleichzeitig erledigen können oder es gibt bestimmte Zeitvorgaben wie schnell eine Antwort dauern darf.
- Es müssen eventuell Lastspitzen bei der Anfrage abgefangen werden können. So gibt es z.B. bei Bestellung in Online-Shops am Black Friday ungewöhnlich viele Bestellungen, auf die das System flexibel reagieren und mit skalieren muss.
Viele dieser Herausforderungen sind aus den Bereichen der Software-Entwicklung und DevOps bekannt, aber für viele Data-Scientist und Machine-Learning-Engineers abseits ihrer Kernkompetenz.
Diese Probleme sind so weit verbreitet, dass einige Experten schätzen, dass bis zu 90 Prozent der ML-Modelle gar nicht erst in Produktiveinsatz gelangen.
Wie können die größten Hindernisse umgangen werden?
Besonders die ersten der angemerkten Punkte sind auch für Data-Scientists und Machine-Learning-Engineers vergleichsweise einfach zu lösen, sodass viele Modelle mit nicht zu strengen Performance Anforderungen es in eine Produktivumgebung schaffen können.
Im Idealfall sollte der Code unabhängig von der zugrunde liegenden Maschine und dem Betriebssystem laufen. Um das zu ermöglichen nutzt man Technologien wie das Containerisieren. Dabei wird der Softwarecode in Pakete, die alle erforderlichen Komponenten wie Libraries, Frameworks und andere Abhängigkeiten enthalten, verpackt und gewährt so diese Isolierung von der Maschine auf der er ausgeführt wird. Docker ist die bekannteste Containertechnologie und auch wir verwenden dieses System beim Hosting unserer Modelle.
Wie das geht, haben wir in verschiedenen Beispielprojekten dargestellt, die wir Open-Source zur Verfügung gestellt haben.
Beispiel in Python (mit Streamlit)
Was haben Sie für Herausforderungen bei der Bereitstellung oder Entwicklung Ihrer Machine-Learning Modelle? Schreiben Sie uns gerne eine E-Mail und lassen Sie uns in den Austausch treten.