Moderne Verfahren zur Datenanalyse dringen immer mehr in den Unternehmensalltag ein. Als Experte für das Erkennen von Strukturen in großen Datentöpfen und daraus abzuleitenden Vorhersagen spielt der Data Scientist eine bedeutende Rolle. Er leitet und begleitet die Entwicklung des Data-Science-Services von der Modellierung bis zur Bereitstellung an die Nutzer und hat es dabei typischerweise mit folgenden Herausforderungen zu tun:
Erstellung eines Modells in R oder Python inklusive einer REST API für webbasierte Aufrufe zum Modelltraining und Scoring
Im ersten Schritt, der explorativen Phase, befasst sich der Data Scientist mit dem Erstellen eines Modells mit Hilfe von Skripten. Diese trainieren das Modell mit historischen Daten und rufen Vorhersagen auf Basis neuer Datensätze ab. Die Umsetzung der Skripte erfolgt meist in Umgebungen wie R oder Python, die sich dank ihrer umfangreichen Bibliotheken aus dem Bereich der Statistik und des Machine Learning sowie einer sehr aktiven Entwickler-Community zum Quasi-Standard erhoben haben.
Für die Modell-Findung arbeitet der Data Scientist gerne in einer „Sandkasten-Umgebung“. Das kann eine virtuelle Maschine, ein lokaler Rechner oder auch ein Cloud-gehostetes „Notebook“ mit browserbasierter Entwicklungsumgebung sein. Das fertige Modell sollte über eine webbasierte Schnittstelle (REST-API) für andere Services ansprechbar sein. Hierfür haben sich die Bibliotheken Flask (Python) und Plumber (R) bewährt.
Definition der Code-Abhängigkeiten und Aufbau eines Images über Dockerfiles sowie Start der Container auf einem Cloud- oder On-Premise-Server
Ist ein Vorhersagemodell mit hoher Güte entstanden, gilt es dieses dem Nutzer zur Verfügung zu stellen. Wir sprechen vom Deployment des Data-Science-Services. Für diesen Zweck hat sich in den letzten Jahren die Docker-Container-Technologie als extrem flexibles und einfach handhabbares Werkzeug erwiesen. Denn Docker-Container lassen sich durch eine simple Konfigurationsdatei (das Dockerfile) in Minutenschnelle bauen und auf einem beliebigen System zur Ausführung bringen. Es gilt das große Docker-Versprechen: Wenn ein Container im Sandkasten läuft, lässt er sich auf jeder anderen Infrastruktur gleichermaßen betreiben.
Ein Container ist dabei ein gekapselter Prozess in dem sowohl der auszuführende Code, als auch alle dafür benötigten Abhängigkeiten (Laufzeitumgebung, Bibliotheken) untergebracht sind. Die Hardware-Ressourcen wie CPU und RAM werden dem Container vom Docker-Daemon, der auf dem Host-Betriebssystem läuft, zugewiesen. Container lassen sich so als ressourcenschonendere Variante einer dedizierten virtuellen Maschine sehen, da im Gegensatz zur VM nicht für jeden gekapselten Prozess ein eigenes Betriebssystem ausgeführt werden muss.
Fragestellungen rund um GUI, Sicherheit, Betrieb bedenken und lösen
Wer den Deployment-Prozess für einen Data-Science-Service einmal durchlaufen hat, wird feststellen, dass neben der reinen Data Science auch noch folgende Fragestellungen bedacht werden müssen:
- Wie kann ein technisch weniger versierter Nutzer die Modellvorhersage abrufen? Welche GUI braucht er?
- Wie kann der Zugriff auf das Modell nur berechtigten Personen erlaubt werden? Welche Sicherheitsthemen sind zu beachten?
- Wie ist der fortdauernde Betrieb und die Nachvollziehbarkeit im Fehlerfall gewährleistet? Wie ist ein stabiler Betrieb und Governance möglich?
Da diese übergeordneten Fragestellungen bei jedem Deployment auftauchen, bietet es sich an, diese in standardisierter Form zu adressieren. Aus dieser Überlegung heraus ist bei QUNIS im Rahmen eines Forschungsprojektes das AHUB Deployment Framework entstanden.
Schnelle und stabile Bereitstellung mit Docker-basiertem Deployment-Framework
AHUB ist Docker-basiert und bietet eine orchestrierte Container-Landschaft aus standardisierten Modulen, die sich den obigen Fragestellungen annehmen. Mithilfe des Frameworks lassen sich beliebig viele analytische Teil-Applikationen mit minimalem Aufwand von der Sandbox-Umgebung in ein professionelles, produktives Setup und schlussendlich in einen stabilen Betrieb überführen.
Das ganze Framework ist als Open-Source-Projekt konzipiert. Der Quellcode und eine Demo-Applikation stehen über GitHub für jedermann zur Verfügung. Eine wirkliche Wohltat für jeden Data Scientisten. DIREKT ZU AHUB AUF GITHUB