Wie Verivox in wenigen Wochen ein Machine-Learning-Modell in Produktion bringt

kreuzwerker und das Data-Science-Team von Verivox modernisierten ein Machine-Learning-Modell und nahmen es auf AWS in Betrieb mithilfe von Amazon SageMaker Pipelines und AWS Lambda.
24.05.2023

Verivox ist eines der führenden Vergleichsportale in Deutschland. Seit 1998 macht das Unternehmen Märkte in den Bereichen Energie, Mobilfunk, Internet, Finanzen und Versicherungen transparent. Die Expertinnen und Experten von Verivox recherchieren und analysieren Daten zu Preis- und Marktentwicklungen und ermöglichen so einen umfassenden Tarifvergleich. Aus rund 30.000 Tarifen findet Verivox das beste Angebot und hilft so Haushalten, Zeit und Geld zu sparen. Mehr als 8 Millionen Menschen haben mit Hilfe von Verivox bereits über 2 Milliarden Euro gespart.

Verivox ist ein unabhängiges Tarifvergleichsportal, unter anderem für Strom, Gas, DSL, Mobilfunk, Kredite und Kfz-Versicherungen. Mithilfe von künstlicher Intelligenz personalisiert Verivox seine Beratung für jeden Kunden und kann so den idealen Tarif vorschlagen. Die Algorithmen, die Verivox dazu benutzt, zählen zur Kategorie des maschinellen Lernens (ML).

Das Problem

Da die Algorithmen in der Vergangenheit in der Sprache R programmiert waren und auf On-Premises Servern liefen, hat sich das Data Science Team dazu entschlossen, ihren Tech-Stack zu modernisieren. Zum einen wird die Codebasis auf Python umgestellt (welches die führende Programmiersprache im Data Science ist) und zum anderen sollen die ML-Modelle zukünftig in AWS laufen.

Dieses Vorhaben sollte vom Data Science Team umgesetzt werden. Das Team hat bereits einigen Code in Python umgeschrieben und erste Erfahrungen mit einigen AWS-Tools sammeln können. Nach eingehender Recherche hat sich das Team schließlich auf eine Kombination aus Amazon SageMaker, AWS Lambda und AWS Cloud Development Kit (CDK) geeinigt und sich mit diesen Services bereits tiefer auseinandergesetzt.

Da diese Aufgabe neben Data Science viel Wissen im Bereich MLOps, Data Engineering und DevOps erfordert entschied sich Verivox Unterstützung von kreuzwerker zu holen, um Best Practices und Industrie Standards sicherzustellen.

Die Lösung

Die Zusammenarbeit von kreuzwerker und Verivox bestand daraus, gemeinsam ein zuvor ausgewähltes ML-Model nach Best Practices auf AWS in Produktion zu bringen. Dazu gehörten unter anderem getestete ETL-Pipelines sowie das Trainieren, Evaluieren, Deployen und Monitoren des ML-Models. Die Lösung sollte DevOps Best Practices folgen und sowohl CI/CD als auch Infrastructure as Code (IaC) beinhalten.

Der Code sollte einerseits als Grundgerüst für zukünftige maschinelle Lernmodelle fungieren und andererseits so gestaltet sein, dass das Projekt problemlos um weitere Modelle erweitert werden kann, ohne jedes von neuem zu beginnen.

Nach einer Analyse des Problems und des bereits existierenden Codes haben wir uns auf eine serverlose Architektur geeinigt, um möglichst viele Maintenance-Aufgaben von AWS-Services erledigen zu lassen. Es wurden mehrere kleine Teams gebildet, die anfangs unabhängig voneinander an verschiedenen Themen arbeiten konnten. Der kreuzwerker-Consultant sollte abwechselnd mit den verschiedenen Teams zusammenarbeiten, um ihnen ausreichend Zeit zu geben, eigenständig Fortschritte zu erzielen oder sich in die Problemstellungen einzuarbeiten. Zudem wurde neues Wissen in Code-Reviews, täglichen Meeting und Knowledge Sharing Session geteilt. Mit der Zeit wurde die Arbeit der Teams verzahnter und zum Ende hin sollte jedes Teammitglied das fertige Modell deployen können und ein grobes Verständnis über alle Komponenten der Lösung haben.

Das Resultat

Das ML-Modell berechnet die Wahrscheinlichkeit für Kunden einen Kredit von verschiedenen Banken zu erhalten. Das Produkt sollte ein ML-Model sein, welches per API angesprochen werden konnte und zurückgibt, wie hoch die Wahrscheinlichkeit für einen Kunden ist von der Bank angenommen zu werden.

Die Rohdaten für das Trainieren des Modells liegen in einem Snowflake Data Warehouse und sollen im Anschluss mit Amazon SageMaker vorverarbeitet werden. Mit den aufbereiteten Daten werden mehrere Modelle trainiert, evaluiert und das Beste schließlich deployed. Die Modelle müssen im Live-Betrieb kontinuierlich überwacht werden, sowohl technisch (kommen die Events richtig an? Wird die Vorhersage schnell genug berechnet?), als auch von der Güte des Modells. Sollte ein Modell später nicht die gewünschten Ergebnisse liefern, ist beispielsweise die Accuracy zu niedrig, so soll es auch die Möglichkeit geben, wieder auf ein vorheriges Modell zurückzugehen. Wegen der Reproduzierbarkeit und der Erklärbarkeit eines Models ist es notwendig, alle Datensätze und Encoder, die zu einem Modell gehören, zusammen mit dem Modell abzuspeichern. All diese Features, bis hin zum Deployment mehrerer Endpoints und deren Verwaltung, werden von SageMaker Pipeline unterstützt, welches einen von AWS speziell entwickelten CI/CD-Service für Machine Learning darstellt.

In der späteren Anwendung werden die User Events per Kong API an AWS Lambda Funktionen gesendet, welche die Events für das ML-Modell vorverarbeiten. Diese gelangen weiter an den SageMaker Endpoint und kommen dann mit der vom Modell berechneten Wahrscheinlichkeit zurück. Im letzten Schritt werden sie dann von der Lambda Funktion nachbearbeitet und wieder an Kong API weitergeleitet.

Verivox Case Graphic

Um die Lösung einfach wartbar zu gestalten, wurden überwiegend serverlose Services benutzt, welche selbständig skalieren können und lediglich Kosten verursachen, wenn sie benutzt werden.

Ein weiterer Fokus bei diesem Projekt war eine vollständige Automatisierung. So wurde eine Jenkins CI/CD Pipeline entwickelt, die verschiedene Linter und Tests ausführt, sowie via dem IaC-Framework AWS CDK schließlich deployed. Deployments wurden von Bitbucket getriggert, wobei abhängig vom Branch die Infrastruktur in verschiedene Accounts ausgerollt wurde. Final wurden beim Mergen in den Master die Testumgebungen automatisch wieder aufgeräumt.

Summary

Verivox und kreuzwerker haben die Lösung so implementiert, dass sie einfach auf weitere ML-Modelle ausweitbar ist und viele Teile des Codes, wie die CI/CD Pipeline, ohne Änderungen auch zukünftige Produkte abdecken. Da das Team von Verivox an allen Stellen selbst programmiert hat, sind sie in der Lage, ihre restlichen ML-Modelle zu modernisieren und in AWS auszurollen.

kreuzwerker enabled every single member of our team to reach their next skill level, creating impact that will long outlast the weeks they have worked with us.

  • Elisabeth Günther, Verivox

Verivox hat es mit der Hilfe von kreuzwerker geschafft, in wenigen Wochen ein ML-Modell in Produktion zu setzen, das sowohl DevOps als auch MLOps Best Practices befolgt, skalierbar ist und dessen Performance überwacht werden kann.