Cloud-Storage, Entwicklungsprozesse, Auslieferung

Deployment von Machine Learning in die Cloud

| Autor / Redakteur: Benjamin Aunkofer* / Dr. Jürgen Ehneß

Big-Data-Anwendungen werden bevorzugt in der Cloud gespeichert.
Big-Data-Anwendungen werden bevorzugt in der Cloud gespeichert. (Bild: © Maksim Kabakou - stock.adobe.com)

Während vor wenigen Jahren Data Science in Unternehmen vor allem noch experimental war, müssen heute Entwicklungszeiten verkürzt und Vorhersagemodelle viel schneller produktiv gebracht werden. Cloud-Services wie von Google, Amazon und Microsoft helfen dabei.

Viele Unternehmen starten gerade ihre ersten Data-Science-Projekte mit Fokus auf die Automatisierung von operativen Prozessen. Händler und eCommerce-Unternehmen versuchen sich an Forecasts für Umsätze oder Retouren, Finanzdienstleister wenden Machine Learning vor allem zum Scoring, zur Betrugserkennung oder zur Transaktionsoptimierung an, die materielle Industrie legt ihren Schwerpunkt auf die Bestellintervalloptimierung im Einkauf, die Prozessoptimierung in Produktion und Logistik sowie die prädiktive Maschinenwartung und damit verbundene neue Dienste für Kunden.

Alle diese Projekte starten als Prototyp, gelegentlich direkt in den Fachbereichen, oftmals aber in einer eigenen Stabstelle, vielleicht als „Data Lab“ oder „Innovation Lab“ bezeichnet. In solchen Labs herrscht weitgehende Freiheit über die eingesetzte Technologie – doch schnell müssen die Prototypen in stabile Prozesse der produktiven Bereitstellung überführt werden.

Data Scientists, Data Engineers und DevOps sprechen dabei von „Deployment der Modelle“, die in ein produktives Business-Intelligence-System (BI) oder in andere vernetzte IT-Systeme integriert werden müssen.

Machine Learning besteht überwiegend aus zu trainierenden Algorithmen, die sehr viele Daten benötigen, um Muster aus ihnen herauszuarbeiten und in ein Modell einzuarbeiten.

Die Herausforderung bei Big-Data-Analysen besteht darin, große Datenmengen möglichst schnell und kostengünstig zu analysieren. Was dabei große Datenmengen sind, ist abhängig von der Analyseform und der eingesetzten Hardware. Bereits hunderte von Gigabyte können selbst aktuelle Hardware bei einer Graphenanalyse oder dem Training von multivariaten Regressionsanalysen vor echte Herausforderungen stellen. Dabei wächst das Datenvolumen exponentiell und erfordert eine hohe Skalierbarkeit des Speichers.

Dies mit On-Premises-Infrastruktur für die Entwicklung von Prototypen umzusetzen, ist sehr teuer. Zudem müssen Nutzer an verschiedenen Standorten auf dieselben Datensätze zugreifen können. Deshalb betreiben Unternehmen Big-Data-Anwendungen gerne in der Cloud. Dabei stehen sie zum Beispiel vor folgenden Fragen: Wie bringe ich Daten schnell in die Cloud? Wie kann ich gruppenübergreifende Kollaboration ermöglichen, ohne die Sicherheit zu gefährden? Wie groß muss ich meine Cloud-Instanzen wählen? Habe ich genug Rechenleistung, um Rechensequenzen für komplexe Algorithmen parallel laufen zu lassen?

Cloud-Storage und Cloud-Volume-Services

In Cloud-Volumes-Services, wie sie etwa Netapp für Amazon Webservices (AWS), Microsoft Azure oder auch für die Google Cloud Platform (GCP) anbietet, können Administratoren schnell und einfach Speicher-Volumes in der Cloud anlegen und jederzeit zwischen drei Performance-Levels nach Bedarf skalieren. Das höchste Level bietet Rechenleistung von bis zu 8.000 IOPS und ist damit derzeit der schnellste verfügbare Speicher für Analytics-Projekte. Mehrere Nutzer können gleichzeitig auf denselben Datensatz zugreifen, wobei integrierte Verschlüsselung für Sicherheit sorgt. Außerdem ermöglicht es die Snapshot-Funktion, Datenbankzustände zu klonen. Solche Klone sind ideal, um Neuerungen oder Datenanreicherung zu testen, ohne das aktive File-System zu beeinträchtigen. Cloud-Volumes-Service unterstützt mehrere, parallele Klone derselben Quelle.

Ein möglicher Werdegang eines Machine-Learning-Modells über Microsoft Azure ins Deployment. Im unteren Bereich entwickelt ein Data Scientist in Python ML-Modelle, führt diese in der Cloud über den Azure ML Service aus. Veröffentlicht werden die Modelle (Experimente) mit wenigen Klicks oder Codezeilen als Web-Services.
Ein möglicher Werdegang eines Machine-Learning-Modells über Microsoft Azure ins Deployment. Im unteren Bereich entwickelt ein Data Scientist in Python ML-Modelle, führt diese in der Cloud über den Azure ML Service aus. Veröffentlicht werden die Modelle (Experimente) mit wenigen Klicks oder Codezeilen als Web-Services. (Bild: Benjamin Aunkofer)

Für Data Mining oder auch für das Trainieren von Modellen der prädiktiven Analyse werden außerdem zentrale Data Lakes benötigt. Dafür müssen Daten aus verschiedenen Quellen zusammengeführt werden. Diese Daten zu kopieren und zu synchronisieren, kann aufwändig sein. Derartige Cloud-Storages in Kopplung mit solchen Diensten vereinfachen die Generierung von Data Lakes/Data Pools dank integrierter Zusammenführungs- und Synchronisierungsfunktionen.

(Netapp zusammen mit AWS, mit Azure oder mit GCP sind etablierte Kombinationen. Im weiteren Verlauf dieses Artikels bleiben wir nun aber beispielhaft bei Microsoft Azure.)

Rechenpower in die Cloud verlagern

So viel zum Thema Data Lake und damit verbundener Datenspeicher, nun zum Prozess des Machine Learnings und zur dafür notwendigen Rechenpower.

Wer schon mal versucht hat, viele n:n-Beziehungen zu analysieren und kürzeste Wege zu identifizieren oder optimale Gewichtungen in künstlichen neuronalen Netzen zu berechnen, der weiß, dass lokale Computer schnell an ihre Grenzen stoßen.

Für diese Zwecke lagern wir nicht nur die Daten, sondern auch den Prozess der Entwicklung in die Cloud aus. Dies ermöglicht uns beispielsweise der Azure Machine Learning Service, ein vollständig verwalteter Cloud-Dienst, der zum Trainieren, Bereitstellen und Verwalten von Machine-Learning-Modellen verwendet werden kann. Dabei kann der Data Scientist sogar lokal in seiner Entwicklungsumgebung (zum Beispiel Jupyter Notebook oder Visual Studio) arbeiten, sich jedoch mit der Cloud verbinden und den Code im Cloud-Service ausführen.

Der Azure Machine Learning Service und die Alternativen von Amazon und Google verlagern das komplette Training also in die Cloud. Die Modellgenerierung – gemeint ist damit das Training des maschinellen Lerners – wird dadurch erst ermöglicht oder zumindest beschleunigt und die Entwicklungszeit somit verkürzt.

Deployment in der Cloud

Die Trainingsdaten sind im Cloud-Speicher, und nach vielen Iterationen haben Ihre Data Scientists gute Prädiktionsmodelle erstellt, die nun produktiv genutzt werden sollen? Dann ist der nächste logische Schritt das Deployment, also die Auslieferung des Modells in ein Produktivsystem.

Produktivsysteme können dabei beispielsweise BI-, ERP-, CRM- oder auch Online-Shop-Systeme sein. Da stellt sich oftmals die Frage, wo genau und in welcher Form der Algorithmus eingebettet werden soll. Klassischerweise werden Python-Pakete als Pickle Binary File gespeichert und dieses dann via REST API (Representational State Transfer) öffentlich gemacht.

Cloud-Services wie der zuvor genannte ML Service von MS Azure ermöglichen auch das Deployment von sogenannten Experimenten – das sind die trainierten Modelle – über Web-Services. Diese Web-Services kapseln die Prädiktionsalgorithmen als Container und bringen sie online abrufbar.

Hierbei ist zu beachten, dass Prädiktionen in der Regel (da abhängig von den ML-Algorithmen) wesentlich weniger rechenintensiv sind als die vorherigen Training- und Validierungs-Sessions. Der produktive Lauf ist folglich nicht so speicher- und rechenintensiv und idealerweise deutlich günstiger.

Nun können jegliche IT-Systeme, beispielsweise das Data Warehouse eines BI-Systems, den Web-Service nutzen, indem Datenreihen (x-Variablen) übersendet und Prädiktionen (y-Variablen) abgefragt werden.

Übrigens zeigt sich bei Betrachtung dieser Services, dass Python eine empfehlenswerte Programmiersprache für Data Science ist, denn anders als R oder (seltener) Scala wird Python von nahezu allen Cloud-Services unterstützt. Wer Machine Learning schnell und unkompliziert produktiv bringen möchte, setzt bestenfalls schon direkt mit der anfänglichen Entwicklung auf Python.

Benjamin Aunkofer, Data Scientist, Interim Head of Business Intelligence.
Benjamin Aunkofer, Data Scientist, Interim Head of Business Intelligence. (Bild: Benjamin Aunkofer)

*Der Autor: Benjamin Aunkofer ist erfahrener Data Scientist, Interim Head of Business Intelligence und hat bereits mehrere Process-Mining-Projekte in der Finanzwelt, im Handel und in der Industrie zum Erfolg geführt. Herr Aunkofer führt mehrere Teams für BI, Data Science und Process Mining im Namen der Datanomiq GmbH, die im Jahr 2015 gegründet wurde und ein Anbieter für Applied Data Science ist. Ferner ist er als Dozent für Unternehmen und Hochschulen tätig.

Kommentare werden geladen....

Kommentar zu diesem Artikel abgeben

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 46025657 / Deployment)