Continuous Learning mit Deep Learning für Analytics-Plattform
Unser Kunde, eine Analytics-Plattform für das Marketing, benötigte täglich aktuelle Modelle für Prognosen im Marketing. niologic implementierte ein Deep Learning Modell und Continuous Integration für das Modell. Somit wurde Continuous Learning des Algorithmus skalierbar.
Herausforderung
Unser Kunde wollte seine Analytics-Plattform um Prognosen erweitern. Schnell war klar, dass ein Ansatz mittels Deep Learning implementiert werden sollte. Das Modell sollte jedoch im laufenden Betrieb automatisch ausgeliefert (deployed) und semiautomatisch überwacht werden, um die Personalkosten gering zu halten.
Vorgehen
niologic implementierte und trainierte die initiale Version des Algorithmus mittels Google Tensorflow. Zum Einsatz kam eine cloud-native Infrastruktur auf Kubernetes. Aufgrund der zu erwartenden Leistungsanforderungen (Load) wurde entschieden, die erzeugten Deep Learning Modelle als Numpy-Matrizen zu exportieren und per HTTP REST-API zu integrieren.
Im Gegensatz zu Tensorflow Serving erlaubte diese Lösung eine leichtere Entwicklung durch Verwendung eines Klartext-Protokolls. Tensorflow Serving hingegen basiert auf gRPC (Protobuf-Protokoll) und ist in der Entwicklung aufwendiger aber performanter.
Durch die Verwendung von Containern konnte das Modell einerseits skalierbar und andererseits mittels Batching trainiert werden. Weiterhin wurden die erzeugten Modelle (Gewichtungsmatrizen) nach dem Training exportiert und in Container für das Scoring eingebettet.
Diese Scoring-Container wurden in einer CI/CD Pipeline getestet (Modell, Güte und Integration). Erfolgreich qualifizierte Container konnten dann direkt ausgerollt werden (Kubernetes Replication Controller bzw. später Deployments).
Die CI/CD-Pipeline wurde anschließend im Rahmen des Build-Prozesses mit gängigen Build- und Monitoringtools überwacht.
Projektergebnis und Kundennutzen
Der Kunde erhielt eine Lösung für Deep Learning, welche sich in die Anforderung eines Continuous Learning einbettete. Durch die Verwendung einer cloud-nativen Architektur und einer CI/CD-Pipeline konnten Standardwerkzeuge der Softwareentwicklung eingesetzt werden.
Die Kubernetes-Lösung führte bei den Entwicklern des Kunden direkt zu einer hohen Akzeptanz und lieferte gleichzeitig Impulse für eine Weiterentwicklung anderer Komponenten.
Durch die Verwendung eines Continuous Integration Ansatzes für Deep Learning konnte der Kunde eine halbe Vollzeitstelle für die Integration einsparen. Das Entwicklungsteam konnte sich im laufenden Betrieb voll auf die Weiterentwicklung des Algorithmus konzentrieren. Die Überwachung des Algorithmus erlaubte dieselben Qualitätsmerkmale für Machine Learning wie zuvor für die Plattformentwicklung.