Data Science beschleunigt die Welt.
Wir synchronisieren Ihr Unternehmen.
10.06.2022 | Data Engineering
OpenFaaS im Einsatz: Wir stellen unsere neue Serverless Computing-Plattform graphene vor
Michael, unser Experte für Machine- und Deep-Learning-Modelle, beschäftigt sich schon länger mit der Frage, wie man das Nutzen von Machine-Learning Modellen und ähnlichen Funktionen der Datenverarbeitung möglichst einfach gestalten kann. Seine Lösung: graphene – eine Plattform, die uns „Serverless Computing“ ermöglicht. Das heißt, ein Entwickler oder eine Entwicklerin kann Funktionen (z.B. mit Python) auf diese Plattform laden, ohne sich Gedanken darüber machen zu müssen, wie diese physisch gespeichert und ausgeführt werden. Zum Nutzen dieser Funktionen werden automatisch REST (REpresentational State Transfer)-Schnittstellen erstellt, über die man diese Funktionen ausführen kann. Wir haben Michael gefragt, was die Vorteile von graphene gegenüber unserem alten System sind, wie die Plattform überhaupt funktioniert und an welchen Stellen auch er manchmal noch vor einigen Herausforderungen steht.
Wofür kann man das neue System graphene eigentlich benutzen?
Wir verwenden dieses System intern vor allem, um Machine-Learning Modelle und andere nützliche Funktionen zur Datenverarbeitung bereitzustellen und um diese in unsere Datenverarbeitungsprozesse einzubinden. Das macht das Nutzen der Funktionen sehr einfach, für alle zugänglich und verhindert Kompatibilitätsprobleme (System-Unterschiede, verschiedene Versionen von Software-Paketen etc.). Das neue System ermöglicht es uns aber auch, Schnittstellen für Kunden bereitzustellen, wodurch wir eine nahtlose Integration von Kundendaten in unsere Systeme ermöglichen können. Auch können wir unseren Kunden so direkte Schnittstellen zu Machine-Learning Modellen bereitstellen, damit sie die Modelle direkt in ihre Systeme integrieren können.
Warum brauchten wir ein neues System und was sind die Vorteile von graphene (gegenüber dem alten System)?
Wir haben bereits ein ähnliches System (Carbon) in Verwendung, das auf den ersten Blick die gleichen Funktionen bietet. Wir können Funktionen hochladen und diese über eine REST-Schnittstelle ausführen. Die Unterschiede zwischen dem alten und dem neuen System befinden sich vor allem unter der Haube. Das neue System basiert auf der State-of-the-Art-Technologie Kubernetes, die vor allem die Ausfallsicherheit stark erhöht. Außerdem lassen sich Ressourcen deutlich einfacher und automatisch skalieren und effizienter nutzen. Das alte System Carbon verwendet ein selbst gebautes Framework, um die „Serverless Computing“ Funktionalität zu ermöglichen. Graphene nutzt dafür das weit verbreitete Framework „OpenFaaS“. Das vereinfacht die Verwendung deutlich und erhöht die Flexibilität. Wir können auf viele Funktionalitäten zurückgreifen, die intelligente Menschen bereits in OpenFaaS implementiert haben. Zum Beispiel bietet es die Möglichkeit für einen Warm-Start der Machine-Learning Modelle. Das heißt, dass die Modelle nicht für jede Anfrage neu geladen werden müssen (was viel Zeit kostet), sondern bei häufiger Ausführung schon geladen sind und deutlich schneller Ergebnisse liefern können. Das ist vor allem wichtig, wenn künftig unsere Kunden Machine-Learning Modelle direkt in ihre Anwendungen einbauen. Durch die Nutzung von weit verbreiteter State-of-the-Art-Software sind wir für künftige Entwicklungen bestens aufgestellt und es gibt meistens schon Lösungen für Probleme, die wir jetzt noch gar nicht haben.
Und wie genau funktioniert graphene?
Das Nutzen einer Funktion auf OpenFaaS ist ein einfacher API Request an eine REST-Schnittstelle. Auf dieser Abbildung wird ein Machine-Learning Modell aufgerufen, das Tiere klassifiziert.
Machine-Learning Modell zur Klassifizierung von Tieren
Auch das Erstellen einer Funktion für Entwickler ist sehr einfach und flexibel. Jede Funktion ist ein Docker-Container und bietet auch deren Flexibilität. Für alle gängigen Programmiersprachen gibt es aber auch Templates, die die Erstellung einer Funktion sehr einfach machen. So muss zum Beispiel für eine Funktion mit Python lediglich die Python-Funktion „handler()“ mit der gewünschten Funktionalität befüllt werden:
Und wie genau funktioniert graphene?
Das Nutzen einer Funktion auf OpenFaaS ist ein einfacher API Request an eine REST-Schnittstelle. Auf dieser Abbildung wird ein Machine-Learning Modell aufgerufen, das Tiere klassifiziert.
Python-Funktion „handler()“:
$ faas-cli new --lang python3 python3-fn
def handle(req):
"""handle a request to the function
Args:
req (str): request body
"""
return req
faas-cli up -f python3-fn.yml
Um noch ein wenig mehr ins Detail zu gehen: Wie funktioniert graphene „unter der Haube“?
Graphene ist ein Kubernetes Cluster, auf dem der OpenFaas PLONK-Stack installiert ist. Der Zugang zum Cluster und zu OpenFaaS läuft über einen nginx reverse-proxy, über den wir die TLS-/HTTPS-Verschlüsselung und -Authentifizierung/-Autorisierung managen können. Außerdem ermöglicht er uns in Zukunft auch, andere Anwendungen auf dem Cluster zu implementieren.
Übersicht – graphene unter der Haube
Ohne zu sehr in die detaillierte Funktionsweise von Kubernetes und OpenFaaS einzusteigen, möchte ich einmal schematisch beschreiben, wie das Hochladen und das Ausführen einer Funktion auf dem Cluster funktioniert, damit man einen Einblick in die Funktionsweise bekommt.
Funktion hochladen:
- Wenn wir eine Funktion auf graphene laden möchten, wird zunächst lokal ein Docker-Image der Funktion erstellt.
- Dieses Docker-Image wird in eine externe Docker-Registry gespeichert.
- Aus diesen Docker-Images werden Kubernetes-Pods erstellt. Pro Funktion können mehrere Pods erstellt werden. Dazu können wir eine minimale und maximale Anzahl an Pods definieren und durch die Auto-Scaling-Funktion von OpenFaaS wird die Anzahl an Pods pro Funktion dann automatisch an deren Auslastung angepasst.
Funktion verwenden:
- Wenn ein Nutzer eine Funktion über die entsprechende REST-Schnittstelle verwendet, wird diese Anfrage zunächst an den reverse-proxy geleitet, an dem die Anfrage entschlüsselt und der Nutzer authentifiziert und autorisiert wird.
- Der reverse-proxy leitet die Anfrage an das OpenFaas API Gateways und den OpenFaaS-Provider weiter, der dann einen Pod mit der entsprechenden Funktion der Anfrage ausführen und die Ergebnisse zurückgeben kann. Welcher Pod einer Funktion für eine Anfrage verwendet wird, wird automatisch gemanagt, ohne dass wir uns darum kümmern müssen.
- Die Ergebnisse der Funktion werden dann wieder zurück an den Nutzer geschickt.
Dies ist nur eine sehr grobe Übersicht über die Funktionsweise. Wer mehr über OpenFaaS erfahren möchte wird hier fündig:
Gibt es noch ein paar Baustellen, an denen Du gerade arbeitest?
Die größte Baustelle ist im Moment noch, die Authentifizierung bzw. Autorisierung mit Keycloak einzubauen. Das bietet uns eine große Flexibilität im Nutzer-Management und wir können den Zugang zu Funktionen unabhängig von ihnen vergeben. Auch bietet Keycloak die Möglichkeit, externe Single-Sign-On-Anbieter unserer Kunden wie zum Beispiel Azure Active Directory einzubinden.
Unser Fazit
Mit graphene haben wir eine sehr gut skalierbare State-Of-The-Art-Plattform, die wir flexibel einsetzen können und die mit unseren Anforderungen und Herausforderungen wachsen kann. Wir sind uns sicher, dass uns graphene noch eine ganze Weile beschäftigen wird und uns damit eine enorme Erleichterung in der Nutzung von Machine-Learning Modellen und ähnlichen Funktionen der Datenverarbeitung bringt.
Ihr Ansprechpartner:
Michael Ellers
Junior Data Science
Data-Science-News direkt in Ihr Postfach
Sobald wir einen Beitrag in unserem Blog veröffentlichen, schicken wir Ihnen gerne eine E-Mail. Und keine Sorge – wir mögen auch keinen Spam!
Auf der Datenwelle
Hier finden Sie unsere Events und Webinare für Data-Science-Enthusiasten.
Link zu: Webinare
AM 09. OKTOBER 2024
Erfolgreiche KI-Strategien
In diesem Webinar zeigen wir praxisnah, wie eine KI-Strategie in Unternehmen umgesetzt werden kann
Folge einem manuell hinzugefügten Link
VERGANGENE WEBINARE
Vom Datensammeln zum Consulting
Ein Webinar darüber, wie Hassia mit Dashboards abteilungsübergreifend den Umgang mit Daten verändert