SlideShare ist ein Scribd-Unternehmen logo
Titel der Präsentation,
Name, Abteilung,
Ort, xx. Monat 2014
1
Dr. Andreas Lattner
Group Business Intelligence, Otto Group
Aufsetzen skalierbarer Prognose- und Analysedienste
mit Palladium
2 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Agenda
1 Einleitung
2 Framework und Architektur
3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium
4 Deployment mit Docker und Mesos / Marathon
5 Zusammenfassung
3 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Historie und Motivation
Palladium basiert auf einem von der Otto Group BI bei Hermes entwickelten Kern
Anforderungen Predictive Analytics in der
Gruppe
• Machine Learning Modelle schnell vom Prototyp in
Produktion zu bringen. Beschleunigung Übergang
Datenanalyse zu Produktion
• Hohe Skalierbarkeit
• Zuverlässiger Betrieb und Ausfallsicherheit bzgl.
Hardwaredefekten
• Vermeidung von Lizenzkosten bei
Gruppenunternehmen
• Schneller Projektstart. Das Rad nicht für jedes
Predictive Analytics-Projekt neu erfinden
+
Prediction Framework für
Zeitfensterprognose
PALLADIUM
Erweiterung für
Group-weite
Anwendung
4 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Agenda
1 Einleitung
2 Framework und Architektur
3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium
4 Deployment mit Docker und Mesos / Marathon
5 Zusammenfassung
5 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Palladium: Framework für die Erzeugung, Evaluation,
Verteilung und Nutzung von Prädiktionsmodellen
Anwendungsspezifische Aspekte lassen sich flexibel über Schnittstellen integrieren
Palladium
Model 1
DB
Config
predict(X) ŷ
Palladium
Model 2
DB
Config
predict(X) ŷ
• Model Management (Python, R, Julia)
Palladium ermöglicht Erstellen, Speichern, Laden,
Verteilen & Versionieren von Modellen, Erfassung von
Metadaten
• Erstellung operativer Prognosedienste
Bereitstellung der Dienste als Web Service
• Flexibilität
Über Konfiguration und definierte Schnittstellen lassen
sich schnell neue Dienste aufsetzen
• Automatisierte Aktualisierung
Update der Daten / Modelle für Dienst in konfigurierbaren
Zyklen
• Skalierbarkeit
Einfaches Verteilen und Skalieren der Prognosedienste
über Docker-Container und Load Balancer
• Autorisierung und Logging
OAuth2-Integration und Logging für Prüfung der
Zugriffsrechte und Nutzungsstatistik
6 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Architektur
Erzeugung von Modellen
Anwendung von Modellen
Load Balancer
host/service/v1.1/predict?feat1=blue&feat2=38.0“class A”
“Service User”
Model DB
Testing Data
Train Server
model
Training Data
Server 1
Predict Node
model
Server 2 Server 3
7 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Architektur
Flexibles Einbinden von Autorisierung, Logging und Monitoring
Erzeugung von Modellen
Anwendung von Modellen
Model DB
Testing Data
Server 1 Server 2
Load Balancer
Server 3
host/service/v1.1/predict?feat1=blue&feat2=38.0
Train Server
“class A”
“Service User”
model
model
Training Data
Predict Node
OAuth2-ServerMonitoring Service
8 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Flexible Struktur via Interfaces
Integration von scikit-learn / Nutzung des Interfaces
Palladium
config
dataset
loader train
CSV Loader
DB Connection
grid search
param1: [a, b]
param2: [1.0, 2.0]
model
persister
File Persister
DB Persister
predict
service
/predict?feat1=0.1
→
{"class": "cat"}
model
Support Vector Classifier
Logistic Regression
…
dataset
loader test
CSV Loader
DB Connection
9 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Agenda
1 Einleitung
2 Framework und Architektur
3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium
4 Deployment mit Docker und Mesos / Marathon
5 Zusammenfassung
10 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Beispiel: Iris-Klassifikation
sepal length: 5.2
sepal width: 3.5
petal length: 1.5
petal width: 0.2
Iris-setosa
Iris-versicolor
Iris-virginica ?
5.2,3.5,1.5,0.2,Iris-setosa
4.3,3.0,1.1,0.1,Iris-setosa
5.6,3.0,4.5,1.5,Iris-versicolor
6.3,3.3,6.0,2.5,Iris-virginica
5.1,3.8,1.5,0.3,Iris-setosa
...
Training- & Testdaten
Palladium Predict Server
http://localhost:5000/predict?
sepal length=5.2&sepal width=3.5&
petal length=1.5&petal width=0.2
{"result":"Iris-setosa",
"status":"OK"}
11 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Konfiguration und zugehörige Klassen
'dataset_loader_train': {...},
'dataset_loader_test': {...},
'model': {...},
'grid_search': {...},
'model_persister': {...},
'predict_service': {...},
DatasetLoader
DatasetLoader
Model (→sklearn.base.BaseEstimator)
sklearn.grid_search.GridSearchCV
ModelPersister
PredictService
12 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Konfiguration
'dataset_loader_train': {...},
'dataset_loader_test': {...},
'model': {...},
'grid_search': {...},
'model_persister': {...},
'predict_service': {...},
'__factory__':
'palladium.dataset.Table',
'path': 'iris.data',
'names': [
'sepal length',
'sepal width',
'petal length',
'petal width',
'species',
],
'target_column': 'species',
'sep': ',',
'nrows': 100,
13 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Konfiguration
'dataset_loader_train': {...},
'dataset_loader_test': {...},
'model': {...},
'grid_search': {...},
'model_persister': {...},
'predict_service': {...},
'__factory__':
'palladium.dataset.Table',
'path': 'iris.data',
'names': [
'sepal length',
'sepal width',
'petal length',
'petal width',
'species',
],
'target_column': 'species',
'sep': ',',
'skiprows': 100,
14 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Konfiguration
'dataset_loader_train': {...},
'dataset_loader_test': {...},
'model': {...},
'grid_search': {...},
'model_persister': {...},
'predict_service': {...},
'__factory__':
'sklearn.tree.
DecisionTreeClassifier',
'min_samples_leaf': 1,
15 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Konfiguration
'dataset_loader_train': {...},
'dataset_loader_test': {...},
'model': {...},
'grid_search': {...},
'model_persister': {...},
'predict_service': {...},
'param_grid': {
'min_samples_leaf':
[1, 2, 3],
},
16 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Konfiguration
'dataset_loader_train': {...},
'dataset_loader_test': {...},
'model': {...},
'grid_search': {...},
'model_persister': {...},
'predict_service': {...},
'__factory__':
'palladium.persistence.File',
'path':
'iris-model-{version}.pickle',
17 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Konfiguration
'dataset_loader_train': {...},
'dataset_loader_test': {...},
'model': {...},
'grid_search': {...},
'model_persister': {...},
'predict_service': {...},
'__factory__':
'palladium.server.
PredictService',
'mapping': [
('sepal length', 'float'),
('sepal width', 'float'),
('petal length', 'float'),
('petal width', 'float'),
],
18 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Lernen und Evaluieren von Modellen
Kommando: pld-fit
• Lädt Trainingsdaten
• Lernt Modell
• Speichert Modell + Metadaten
INFO:palladium:Loading data...
INFO:palladium:Loading data done in 0.010 sec.
INFO:palladium:Fitting model...
INFO:palladium:Fitting model done in 0.001 sec.
INFO:palladium:Writing model...
INFO:palladium:Writing model done in 0.039 sec.
INFO:palladium:Wrote model with version 8.
19 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Lernen und Evaluieren von Modellen
Kommando: pld-grid-search
• Lädt Trainingsdaten
• Teilt Trainingsdaten in “Folds” (Cross Validation)
• Trainiert und evaluiert Modelle auf verschiedenen Folds
INFO:palladium:Loading data...
INFO:palladium:Loading data done in 0.004 sec.
INFO:palladium:Running grid search...
Fitting 3 folds for each of 3 candidates, totalling 9 fits
...
[Parallel(n_jobs=-1)]: Done 9 out of 9 | elapsed: 0.1s finished
INFO:palladium:Running grid search done in 0.041 sec.
INFO:palladium:
[mean: 0.93000, std: 0.03827, params: {'min_samples_leaf': 2},
mean: 0.92000, std: 0.02902, params: {'min_samples_leaf': 1},
mean: 0.92000, std: 0.02902, params: {'min_samples_leaf': 3}]
20 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Lernen und Evaluieren von Modellen
Kommando: pld-test
• Lädt Testdaten
• Wendet gelerntes Modell auf Testdaten an
• Zeigt Ergebnis (z.B. Accuracy)
INFO:palladium:Loading data...
INFO:palladium:Loading data done in 0.003 sec.
INFO:palladium:Reading model...
INFO:palladium:Reading model done in 0.000 sec.
INFO:palladium:Applying model...
INFO:palladium:Applying model done in 0.001 sec.
INFO:palladium:Score: 0.92.
21 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Anwenden von Modellen
Kommandos: pld-devserver & pld-stream
• Integriertes Script zum Testen des Web Services: pld-devserver
• Einsatz des Flask Web Servers
• Empfehlung zur Nutzung eines WSGI-Containers + Web Server,
z. B. gunicorn / nginx
• Predict Server
• Lädt Modell (via Model Persister)
• Konfiguration regelmäßiger Modell-Updates möglich
• Bereitstellung von Web Service Entry Points (“predict”, “alive”)
• Kommando für stdin/stdout-Verarbeitung von Prognoseanfragen: pld-stream
• Zeilenweise Verarbeitung, Rückgabe der Prognose an stdout
• In Kombination mit Hive zur Erstellung großer Anzahl an Prognosen eingesetzt
22 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Statusinformationen über aktuellen predict-Node
Entry Point /alive, z.B. http://localhost:5000/alive
{
"memory_usage": 68,
"palladium_version": "1.0",
"service_metadata": {
"service_name": "iris",
"service_version": "0.1"
},
"model": {
"updated": "2015-09-28T16:33:53.316178",
"metadata": {
"train_timestamp": "2015-09-28T10:16:33.226367",
"version": 2,
"score_train": 0.94,
"score_test": 0.96
}
}
}
23 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Anwendung des Modells
Entry Point /predict
GET Request:
http://localhost:5000/predict?sepal%20length=5.2&sepal%20width=3
.5&petal%20length=1.5&petal%20width=0.2
{
"result": "Iris-setosa",
"metadata": {
"error_code": 0,
"service_version": "0.1",
"status": "OK",
"service_name": "iris"
}
}
24 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Performanztest des Service-Overheads (1 CPU)
Inklusive Prognose durch Iris-Modell; Verwendung des Entwicklungs-Webservers von Flask
ab -n 1000
"http://localhost:4999/predict?sepal%20length=5.2&sepal%20width=
3.5&petal%20length=1.5&petal%20width=0.2"
Time taken for tests: 1.217 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 273000 bytes
HTML transferred: 112000 bytes
Requests per second: 821.82 [#/sec] (mean)
Time per request: 1.217 [ms] (mean)
Time per request: 1.217 [ms] (mean, across all concurrent
requests)
Transfer rate: 219.10 [Kbytes/sec] received
(Intel(R) Xeon(R) CPU E5-2667 0 @ 2.90GHz)
25 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Agenda
1 Einleitung
2 Framework und Architektur
3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium
4 Deployment mit Docker und Mesos / Marathon
5 Zusammenfassung
26 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Docker, Mesos & Marathon
• Docker ist eine Plattform für die
Erzeugung, Verteilung & Ausführung
von Applikationen
• Leichtgewichtige Umgebung
• Einfache Kombination von Komponenten
• Gesamtpaket inkl. Abhängigkeiten
• Docker Hub für Deployment
• Cluster-Framework Mesos abstrahiert
von eingesetzter Hardware und
stellt Ressourcen bereit
• Hohe Skalierbarkeit und Ausfallsicherheit
• Marathon (Mesosphere): Framework zum
Initialisieren und Überwachen von Diensten im
Cluster; Einsatz in Kombination mit Mesos
Quelle: https://www.docker.com/whatisdocker/
Quellen:
http://mesos.apache.org/
https://mesosphere.github.io/marathon/
27 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Docker Image
Deployment von Palladium-Instanzen via Docker
Palladium
Base Image
Application
specific code
Config
Server 1 Server 2
Load Balancer
Docker Image
Palladium
Base Image
Application
specific code
Config
Server 3
Service 1 Service 2
host/service/v1.0/predict?feat1=austria host/service/v1.1/predict?feat1=blue&feat2=38.0
Skript zum automatischen Erzeugen von Docker-Images für Palladium-basierte Dienste
28 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Automatisches Erzeugen von Docker-Images
Kommando: pld-dockerize
• Script pld-dockerize erzeugt Docker-Image für Prognosedienst, z.B.
pld-dockerize pld_codetalks ottogroup/palladium-base:1.0 alattner/iris-demo-
tmp:0.1
• Option, nur das Dockerfile für eine Nachbearbeitung zu erzeugen (ohne Erstellung
des Images)
29 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Deployment via Mesos / Marathon
30 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Deployment via Mesos / Marathon
31 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Deployment via Mesos / Marathon
32 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Deployment via Mesos / Marathon
33 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Deployment via Mesos / Marathon
34 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Deployment via Mesos / Marathon
35 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Deployment via Mesos / Marathon
36 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Deployment via Mesos / Marathon
37 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Deployment via Mesos / Marathon
38 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Agenda
1 Einleitung
2 Framework und Architektur
3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium
4 Deployment mit Docker und Mesos / Marathon
5 Zusammenfassung
39 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Zusammenfassung
https://github.com/ottogroup/palladium
• Unterstützung von Modellen in Python, R und Julia
• Mechanismus für automatisches Modell-Update
• Einfache Integration von Authentifizierungs-, Logging- und Monitoringlösungen
• Administration von Modellen (Aktivieren / Löschen)
• Automatisierte Generierung von Docker-Images (pld-dockerize)
• Skalierung und Überwachung z.B. mit Mesos / Marathon
• Einfache Installation über pip oder conda
• Bereitstellung des Palladium Docker Images bei Docker Hub:
https://hub.docker.com/r/ottogroup/palladium-base/
• Ausführliche Dokumentation inkl. Tutorial für Beispieldienst bei readthedocs
• Test-driven development, 100% Coverage
• Verschiedene Otto Group Services wurden mit Palladium umgesetzt
40 Skalierbare Prognose- und Analysedienste mit Palladium
Dr. Andreas Lattner
Otto Group BI
Herzlichen Dank an…
• Daniel Nouri (gemeinsame Konzeption & Entwicklung von Palladium)
• Tim Dopke (Palladium mit Docker, Mesos / Marathon)
• das Data Science-Team der Otto Group BI
• alle Entwickler der eingesetzten Pakete, u.a.
• scikit-learn
• numpy
• scipy
• pandas
• flask
• sqlalchemy
• pytest
• …
Titel der Präsentation,
Name, Abteilung,
Ort, xx. Monat 2014
41
Vielen Dank für Ihre Aufmerksamkeit!
andreas.lattner //AT ottogroup.com

Weitere ähnliche Inhalte

Andere mochten auch

Enbe project 1 presentation
Enbe project 1 presentationEnbe project 1 presentation
Enbe project 1 presentation
Crystal Chia
 
Certif méd-grales-méxico- eq6 nrc27106
Certif méd-grales-méxico- eq6 nrc27106Certif méd-grales-méxico- eq6 nrc27106
Certif méd-grales-méxico- eq6 nrc27106
Fernando Alarcón
 
Employment salary
Employment salaryEmployment salary
Employment salary
Sugantha T
 
DISC-Christian_Almodin
DISC-Christian_AlmodinDISC-Christian_Almodin
DISC-Christian_Almodin
christian almodin
 
My CV - -
My CV - -My CV - -
My CV - -
Sayed Ahmed
 
PDOS ONLINE | MODULE 2.1 | Working Overseas - Hong Kong
PDOS ONLINE | MODULE 2.1 | Working Overseas - Hong KongPDOS ONLINE | MODULE 2.1 | Working Overseas - Hong Kong
PDOS ONLINE | MODULE 2.1 | Working Overseas - Hong Kong
PDOSONLINE
 
Metodologia ageis
Metodologia ageisMetodologia ageis
Metodologia ageis
Junior Cesar
 
браво
бравобраво
браво
kolesikmixer
 

Andere mochten auch (9)

Enbe project 1 presentation
Enbe project 1 presentationEnbe project 1 presentation
Enbe project 1 presentation
 
Certif méd-grales-méxico- eq6 nrc27106
Certif méd-grales-méxico- eq6 nrc27106Certif méd-grales-méxico- eq6 nrc27106
Certif méd-grales-méxico- eq6 nrc27106
 
Employment salary
Employment salaryEmployment salary
Employment salary
 
DISC-Christian_Almodin
DISC-Christian_AlmodinDISC-Christian_Almodin
DISC-Christian_Almodin
 
My CV - -
My CV - -My CV - -
My CV - -
 
JouwToekomst2016
JouwToekomst2016JouwToekomst2016
JouwToekomst2016
 
PDOS ONLINE | MODULE 2.1 | Working Overseas - Hong Kong
PDOS ONLINE | MODULE 2.1 | Working Overseas - Hong KongPDOS ONLINE | MODULE 2.1 | Working Overseas - Hong Kong
PDOS ONLINE | MODULE 2.1 | Working Overseas - Hong Kong
 
Metodologia ageis
Metodologia ageisMetodologia ageis
Metodologia ageis
 
браво
бравобраво
браво
 

Ähnlich wie Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit Palladium - code.talks 2015

Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
QAware GmbH
 
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
OPITZ CONSULTING Deutschland
 
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
inovex GmbH
 
Webinar - Sehr empfehlenswert: wie man aus Daten durch maschinelles Lernen We...
Webinar - Sehr empfehlenswert: wie man aus Daten durch maschinelles Lernen We...Webinar - Sehr empfehlenswert: wie man aus Daten durch maschinelles Lernen We...
Webinar - Sehr empfehlenswert: wie man aus Daten durch maschinelles Lernen We...
Cloudera, Inc.
 
Data Virtualization - Supernova
Data Virtualization - SupernovaData Virtualization - Supernova
Data Virtualization - Supernova
Torsten Glunde
 
OPAL - Open Data Portal Germany
OPAL - Open Data Portal GermanyOPAL - Open Data Portal Germany
OPAL - Open Data Portal Germany
Adrian Wilke
 
Lasttest auf Zuruf CloudTest on Demand webinar presentation
Lasttest auf Zuruf CloudTest on Demand webinar presentationLasttest auf Zuruf CloudTest on Demand webinar presentation
Lasttest auf Zuruf CloudTest on Demand webinar presentation
SOASTA
 
Kennst du ein Unternehmen, dass erfolgreich die QS outtasked hat?“
Kennst du einUnternehmen, dass erfolgreichdie QS outtasked hat?“Kennst du einUnternehmen, dass erfolgreichdie QS outtasked hat?“
Kennst du ein Unternehmen, dass erfolgreich die QS outtasked hat?“
hpaustria
 
Schnell, schneller, Quarkus!!
Schnell, schneller, Quarkus!!Schnell, schneller, Quarkus!!
Schnell, schneller, Quarkus!!
gedoplan
 
8 Tipps für eine Cloud Strategie – wie Unternehmen heute die Cloud einsetzen
8 Tipps für eine Cloud Strategie – wie Unternehmen heute die Cloud einsetzen8 Tipps für eine Cloud Strategie – wie Unternehmen heute die Cloud einsetzen
8 Tipps für eine Cloud Strategie – wie Unternehmen heute die Cloud einsetzen
AWS Germany
 
BizDataX Testdatenmanagement Konzepte
BizDataX Testdatenmanagement KonzepteBizDataX Testdatenmanagement Konzepte
BizDataX Testdatenmanagement Konzepte
Dragan Kinkela
 
Performance-Analyse mit Bordmitteln
Performance-Analyse mit BordmittelnPerformance-Analyse mit Bordmitteln
Performance-Analyse mit Bordmitteln
OPITZ CONSULTING Deutschland
 
Big Data Webinar (Deutsch)
Big Data Webinar (Deutsch)Big Data Webinar (Deutsch)
Big Data Webinar (Deutsch)
AWS Germany
 
Visuelle Gestaltung und Testdatenentwicklung mit BizDataX
Visuelle Gestaltung und Testdatenentwicklung mit BizDataXVisuelle Gestaltung und Testdatenentwicklung mit BizDataX
Visuelle Gestaltung und Testdatenentwicklung mit BizDataX
Dragan Kinkela
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
QAware GmbH
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
Josef Adersberger
 
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming CoachingOpen Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
Matthias Stürmer
 
Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus
gedoplan
 
JavaFX Real-World Apps
JavaFX Real-World AppsJavaFX Real-World Apps
JavaFX Real-World Apps
Alexander Casall
 
Innovationen aus der Cloud ganz einfach nutzen
Innovationen aus der Cloud ganz einfach nutzenInnovationen aus der Cloud ganz einfach nutzen
Innovationen aus der Cloud ganz einfach nutzen
Amazon Web Services
 

Ähnlich wie Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit Palladium - code.talks 2015 (20)

Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
 
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
 
Webinar - Sehr empfehlenswert: wie man aus Daten durch maschinelles Lernen We...
Webinar - Sehr empfehlenswert: wie man aus Daten durch maschinelles Lernen We...Webinar - Sehr empfehlenswert: wie man aus Daten durch maschinelles Lernen We...
Webinar - Sehr empfehlenswert: wie man aus Daten durch maschinelles Lernen We...
 
Data Virtualization - Supernova
Data Virtualization - SupernovaData Virtualization - Supernova
Data Virtualization - Supernova
 
OPAL - Open Data Portal Germany
OPAL - Open Data Portal GermanyOPAL - Open Data Portal Germany
OPAL - Open Data Portal Germany
 
Lasttest auf Zuruf CloudTest on Demand webinar presentation
Lasttest auf Zuruf CloudTest on Demand webinar presentationLasttest auf Zuruf CloudTest on Demand webinar presentation
Lasttest auf Zuruf CloudTest on Demand webinar presentation
 
Kennst du ein Unternehmen, dass erfolgreich die QS outtasked hat?“
Kennst du einUnternehmen, dass erfolgreichdie QS outtasked hat?“Kennst du einUnternehmen, dass erfolgreichdie QS outtasked hat?“
Kennst du ein Unternehmen, dass erfolgreich die QS outtasked hat?“
 
Schnell, schneller, Quarkus!!
Schnell, schneller, Quarkus!!Schnell, schneller, Quarkus!!
Schnell, schneller, Quarkus!!
 
8 Tipps für eine Cloud Strategie – wie Unternehmen heute die Cloud einsetzen
8 Tipps für eine Cloud Strategie – wie Unternehmen heute die Cloud einsetzen8 Tipps für eine Cloud Strategie – wie Unternehmen heute die Cloud einsetzen
8 Tipps für eine Cloud Strategie – wie Unternehmen heute die Cloud einsetzen
 
BizDataX Testdatenmanagement Konzepte
BizDataX Testdatenmanagement KonzepteBizDataX Testdatenmanagement Konzepte
BizDataX Testdatenmanagement Konzepte
 
Performance-Analyse mit Bordmitteln
Performance-Analyse mit BordmittelnPerformance-Analyse mit Bordmitteln
Performance-Analyse mit Bordmitteln
 
Big Data Webinar (Deutsch)
Big Data Webinar (Deutsch)Big Data Webinar (Deutsch)
Big Data Webinar (Deutsch)
 
Visuelle Gestaltung und Testdatenentwicklung mit BizDataX
Visuelle Gestaltung und Testdatenentwicklung mit BizDataXVisuelle Gestaltung und Testdatenentwicklung mit BizDataX
Visuelle Gestaltung und Testdatenentwicklung mit BizDataX
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
 
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming CoachingOpen Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
 
Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus
 
JavaFX Real-World Apps
JavaFX Real-World AppsJavaFX Real-World Apps
JavaFX Real-World Apps
 
Innovationen aus der Cloud ganz einfach nutzen
Innovationen aus der Cloud ganz einfach nutzenInnovationen aus der Cloud ganz einfach nutzen
Innovationen aus der Cloud ganz einfach nutzen
 

Mehr von AboutYouGmbH

Tech talk 01.06.2017
Tech talk 01.06.2017Tech talk 01.06.2017
Tech talk 01.06.2017
AboutYouGmbH
 
Retention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-CommerceRetention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-Commerce
AboutYouGmbH
 
Rethinking Fashion E-Commerce
Rethinking Fashion E-CommerceRethinking Fashion E-Commerce
Rethinking Fashion E-Commerce
AboutYouGmbH
 
ABOUT YOU get on board
ABOUT YOU get on boardABOUT YOU get on board
ABOUT YOU get on board
AboutYouGmbH
 
Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015
AboutYouGmbH
 
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
AboutYouGmbH
 
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
AboutYouGmbH
 
Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015
AboutYouGmbH
 
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
AboutYouGmbH
 
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
AboutYouGmbH
 
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
AboutYouGmbH
 
Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015
AboutYouGmbH
 
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
AboutYouGmbH
 
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
AboutYouGmbH
 
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
 Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c... Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
AboutYouGmbH
 
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
 Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015 Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
AboutYouGmbH
 
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
 Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ... Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
AboutYouGmbH
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
AboutYouGmbH
 
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
 Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal... Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
AboutYouGmbH
 
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
 Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015 Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
AboutYouGmbH
 

Mehr von AboutYouGmbH (20)

Tech talk 01.06.2017
Tech talk 01.06.2017Tech talk 01.06.2017
Tech talk 01.06.2017
 
Retention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-CommerceRetention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-Commerce
 
Rethinking Fashion E-Commerce
Rethinking Fashion E-CommerceRethinking Fashion E-Commerce
Rethinking Fashion E-Commerce
 
ABOUT YOU get on board
ABOUT YOU get on boardABOUT YOU get on board
ABOUT YOU get on board
 
Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015
 
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
 
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
 
Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015
 
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
 
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
 
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
 
Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015
 
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
 
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
 
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
 Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c... Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
 
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
 Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015 Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
 
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
 Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ... Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
 
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
 Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal... Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
 
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
 Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015 Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
 

Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit Palladium - code.talks 2015

  • 1. Titel der Präsentation, Name, Abteilung, Ort, xx. Monat 2014 1 Dr. Andreas Lattner Group Business Intelligence, Otto Group Aufsetzen skalierbarer Prognose- und Analysedienste mit Palladium
  • 2. 2 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Agenda 1 Einleitung 2 Framework und Architektur 3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium 4 Deployment mit Docker und Mesos / Marathon 5 Zusammenfassung
  • 3. 3 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Historie und Motivation Palladium basiert auf einem von der Otto Group BI bei Hermes entwickelten Kern Anforderungen Predictive Analytics in der Gruppe • Machine Learning Modelle schnell vom Prototyp in Produktion zu bringen. Beschleunigung Übergang Datenanalyse zu Produktion • Hohe Skalierbarkeit • Zuverlässiger Betrieb und Ausfallsicherheit bzgl. Hardwaredefekten • Vermeidung von Lizenzkosten bei Gruppenunternehmen • Schneller Projektstart. Das Rad nicht für jedes Predictive Analytics-Projekt neu erfinden + Prediction Framework für Zeitfensterprognose PALLADIUM Erweiterung für Group-weite Anwendung
  • 4. 4 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Agenda 1 Einleitung 2 Framework und Architektur 3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium 4 Deployment mit Docker und Mesos / Marathon 5 Zusammenfassung
  • 5. 5 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Palladium: Framework für die Erzeugung, Evaluation, Verteilung und Nutzung von Prädiktionsmodellen Anwendungsspezifische Aspekte lassen sich flexibel über Schnittstellen integrieren Palladium Model 1 DB Config predict(X) ŷ Palladium Model 2 DB Config predict(X) ŷ • Model Management (Python, R, Julia) Palladium ermöglicht Erstellen, Speichern, Laden, Verteilen & Versionieren von Modellen, Erfassung von Metadaten • Erstellung operativer Prognosedienste Bereitstellung der Dienste als Web Service • Flexibilität Über Konfiguration und definierte Schnittstellen lassen sich schnell neue Dienste aufsetzen • Automatisierte Aktualisierung Update der Daten / Modelle für Dienst in konfigurierbaren Zyklen • Skalierbarkeit Einfaches Verteilen und Skalieren der Prognosedienste über Docker-Container und Load Balancer • Autorisierung und Logging OAuth2-Integration und Logging für Prüfung der Zugriffsrechte und Nutzungsstatistik
  • 6. 6 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Architektur Erzeugung von Modellen Anwendung von Modellen Load Balancer host/service/v1.1/predict?feat1=blue&feat2=38.0“class A” “Service User” Model DB Testing Data Train Server model Training Data Server 1 Predict Node model Server 2 Server 3
  • 7. 7 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Architektur Flexibles Einbinden von Autorisierung, Logging und Monitoring Erzeugung von Modellen Anwendung von Modellen Model DB Testing Data Server 1 Server 2 Load Balancer Server 3 host/service/v1.1/predict?feat1=blue&feat2=38.0 Train Server “class A” “Service User” model model Training Data Predict Node OAuth2-ServerMonitoring Service
  • 8. 8 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Flexible Struktur via Interfaces Integration von scikit-learn / Nutzung des Interfaces Palladium config dataset loader train CSV Loader DB Connection grid search param1: [a, b] param2: [1.0, 2.0] model persister File Persister DB Persister predict service /predict?feat1=0.1 → {"class": "cat"} model Support Vector Classifier Logistic Regression … dataset loader test CSV Loader DB Connection
  • 9. 9 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Agenda 1 Einleitung 2 Framework und Architektur 3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium 4 Deployment mit Docker und Mesos / Marathon 5 Zusammenfassung
  • 10. 10 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Beispiel: Iris-Klassifikation sepal length: 5.2 sepal width: 3.5 petal length: 1.5 petal width: 0.2 Iris-setosa Iris-versicolor Iris-virginica ? 5.2,3.5,1.5,0.2,Iris-setosa 4.3,3.0,1.1,0.1,Iris-setosa 5.6,3.0,4.5,1.5,Iris-versicolor 6.3,3.3,6.0,2.5,Iris-virginica 5.1,3.8,1.5,0.3,Iris-setosa ... Training- & Testdaten Palladium Predict Server http://localhost:5000/predict? sepal length=5.2&sepal width=3.5& petal length=1.5&petal width=0.2 {"result":"Iris-setosa", "status":"OK"}
  • 11. 11 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Konfiguration und zugehörige Klassen 'dataset_loader_train': {...}, 'dataset_loader_test': {...}, 'model': {...}, 'grid_search': {...}, 'model_persister': {...}, 'predict_service': {...}, DatasetLoader DatasetLoader Model (→sklearn.base.BaseEstimator) sklearn.grid_search.GridSearchCV ModelPersister PredictService
  • 12. 12 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Konfiguration 'dataset_loader_train': {...}, 'dataset_loader_test': {...}, 'model': {...}, 'grid_search': {...}, 'model_persister': {...}, 'predict_service': {...}, '__factory__': 'palladium.dataset.Table', 'path': 'iris.data', 'names': [ 'sepal length', 'sepal width', 'petal length', 'petal width', 'species', ], 'target_column': 'species', 'sep': ',', 'nrows': 100,
  • 13. 13 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Konfiguration 'dataset_loader_train': {...}, 'dataset_loader_test': {...}, 'model': {...}, 'grid_search': {...}, 'model_persister': {...}, 'predict_service': {...}, '__factory__': 'palladium.dataset.Table', 'path': 'iris.data', 'names': [ 'sepal length', 'sepal width', 'petal length', 'petal width', 'species', ], 'target_column': 'species', 'sep': ',', 'skiprows': 100,
  • 14. 14 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Konfiguration 'dataset_loader_train': {...}, 'dataset_loader_test': {...}, 'model': {...}, 'grid_search': {...}, 'model_persister': {...}, 'predict_service': {...}, '__factory__': 'sklearn.tree. DecisionTreeClassifier', 'min_samples_leaf': 1,
  • 15. 15 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Konfiguration 'dataset_loader_train': {...}, 'dataset_loader_test': {...}, 'model': {...}, 'grid_search': {...}, 'model_persister': {...}, 'predict_service': {...}, 'param_grid': { 'min_samples_leaf': [1, 2, 3], },
  • 16. 16 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Konfiguration 'dataset_loader_train': {...}, 'dataset_loader_test': {...}, 'model': {...}, 'grid_search': {...}, 'model_persister': {...}, 'predict_service': {...}, '__factory__': 'palladium.persistence.File', 'path': 'iris-model-{version}.pickle',
  • 17. 17 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Konfiguration 'dataset_loader_train': {...}, 'dataset_loader_test': {...}, 'model': {...}, 'grid_search': {...}, 'model_persister': {...}, 'predict_service': {...}, '__factory__': 'palladium.server. PredictService', 'mapping': [ ('sepal length', 'float'), ('sepal width', 'float'), ('petal length', 'float'), ('petal width', 'float'), ],
  • 18. 18 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Lernen und Evaluieren von Modellen Kommando: pld-fit • Lädt Trainingsdaten • Lernt Modell • Speichert Modell + Metadaten INFO:palladium:Loading data... INFO:palladium:Loading data done in 0.010 sec. INFO:palladium:Fitting model... INFO:palladium:Fitting model done in 0.001 sec. INFO:palladium:Writing model... INFO:palladium:Writing model done in 0.039 sec. INFO:palladium:Wrote model with version 8.
  • 19. 19 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Lernen und Evaluieren von Modellen Kommando: pld-grid-search • Lädt Trainingsdaten • Teilt Trainingsdaten in “Folds” (Cross Validation) • Trainiert und evaluiert Modelle auf verschiedenen Folds INFO:palladium:Loading data... INFO:palladium:Loading data done in 0.004 sec. INFO:palladium:Running grid search... Fitting 3 folds for each of 3 candidates, totalling 9 fits ... [Parallel(n_jobs=-1)]: Done 9 out of 9 | elapsed: 0.1s finished INFO:palladium:Running grid search done in 0.041 sec. INFO:palladium: [mean: 0.93000, std: 0.03827, params: {'min_samples_leaf': 2}, mean: 0.92000, std: 0.02902, params: {'min_samples_leaf': 1}, mean: 0.92000, std: 0.02902, params: {'min_samples_leaf': 3}]
  • 20. 20 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Lernen und Evaluieren von Modellen Kommando: pld-test • Lädt Testdaten • Wendet gelerntes Modell auf Testdaten an • Zeigt Ergebnis (z.B. Accuracy) INFO:palladium:Loading data... INFO:palladium:Loading data done in 0.003 sec. INFO:palladium:Reading model... INFO:palladium:Reading model done in 0.000 sec. INFO:palladium:Applying model... INFO:palladium:Applying model done in 0.001 sec. INFO:palladium:Score: 0.92.
  • 21. 21 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Anwenden von Modellen Kommandos: pld-devserver & pld-stream • Integriertes Script zum Testen des Web Services: pld-devserver • Einsatz des Flask Web Servers • Empfehlung zur Nutzung eines WSGI-Containers + Web Server, z. B. gunicorn / nginx • Predict Server • Lädt Modell (via Model Persister) • Konfiguration regelmäßiger Modell-Updates möglich • Bereitstellung von Web Service Entry Points (“predict”, “alive”) • Kommando für stdin/stdout-Verarbeitung von Prognoseanfragen: pld-stream • Zeilenweise Verarbeitung, Rückgabe der Prognose an stdout • In Kombination mit Hive zur Erstellung großer Anzahl an Prognosen eingesetzt
  • 22. 22 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Statusinformationen über aktuellen predict-Node Entry Point /alive, z.B. http://localhost:5000/alive { "memory_usage": 68, "palladium_version": "1.0", "service_metadata": { "service_name": "iris", "service_version": "0.1" }, "model": { "updated": "2015-09-28T16:33:53.316178", "metadata": { "train_timestamp": "2015-09-28T10:16:33.226367", "version": 2, "score_train": 0.94, "score_test": 0.96 } } }
  • 23. 23 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Anwendung des Modells Entry Point /predict GET Request: http://localhost:5000/predict?sepal%20length=5.2&sepal%20width=3 .5&petal%20length=1.5&petal%20width=0.2 { "result": "Iris-setosa", "metadata": { "error_code": 0, "service_version": "0.1", "status": "OK", "service_name": "iris" } }
  • 24. 24 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Performanztest des Service-Overheads (1 CPU) Inklusive Prognose durch Iris-Modell; Verwendung des Entwicklungs-Webservers von Flask ab -n 1000 "http://localhost:4999/predict?sepal%20length=5.2&sepal%20width= 3.5&petal%20length=1.5&petal%20width=0.2" Time taken for tests: 1.217 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 273000 bytes HTML transferred: 112000 bytes Requests per second: 821.82 [#/sec] (mean) Time per request: 1.217 [ms] (mean) Time per request: 1.217 [ms] (mean, across all concurrent requests) Transfer rate: 219.10 [Kbytes/sec] received (Intel(R) Xeon(R) CPU E5-2667 0 @ 2.90GHz)
  • 25. 25 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Agenda 1 Einleitung 2 Framework und Architektur 3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium 4 Deployment mit Docker und Mesos / Marathon 5 Zusammenfassung
  • 26. 26 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Docker, Mesos & Marathon • Docker ist eine Plattform für die Erzeugung, Verteilung & Ausführung von Applikationen • Leichtgewichtige Umgebung • Einfache Kombination von Komponenten • Gesamtpaket inkl. Abhängigkeiten • Docker Hub für Deployment • Cluster-Framework Mesos abstrahiert von eingesetzter Hardware und stellt Ressourcen bereit • Hohe Skalierbarkeit und Ausfallsicherheit • Marathon (Mesosphere): Framework zum Initialisieren und Überwachen von Diensten im Cluster; Einsatz in Kombination mit Mesos Quelle: https://www.docker.com/whatisdocker/ Quellen: http://mesos.apache.org/ https://mesosphere.github.io/marathon/
  • 27. 27 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Docker Image Deployment von Palladium-Instanzen via Docker Palladium Base Image Application specific code Config Server 1 Server 2 Load Balancer Docker Image Palladium Base Image Application specific code Config Server 3 Service 1 Service 2 host/service/v1.0/predict?feat1=austria host/service/v1.1/predict?feat1=blue&feat2=38.0 Skript zum automatischen Erzeugen von Docker-Images für Palladium-basierte Dienste
  • 28. 28 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Automatisches Erzeugen von Docker-Images Kommando: pld-dockerize • Script pld-dockerize erzeugt Docker-Image für Prognosedienst, z.B. pld-dockerize pld_codetalks ottogroup/palladium-base:1.0 alattner/iris-demo- tmp:0.1 • Option, nur das Dockerfile für eine Nachbearbeitung zu erzeugen (ohne Erstellung des Images)
  • 29. 29 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Deployment via Mesos / Marathon
  • 30. 30 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Deployment via Mesos / Marathon
  • 31. 31 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Deployment via Mesos / Marathon
  • 32. 32 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Deployment via Mesos / Marathon
  • 33. 33 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Deployment via Mesos / Marathon
  • 34. 34 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Deployment via Mesos / Marathon
  • 35. 35 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Deployment via Mesos / Marathon
  • 36. 36 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Deployment via Mesos / Marathon
  • 37. 37 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Deployment via Mesos / Marathon
  • 38. 38 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Agenda 1 Einleitung 2 Framework und Architektur 3 Beispiel: Aufsetzen eines Klassifikationsdienstes mit Palladium 4 Deployment mit Docker und Mesos / Marathon 5 Zusammenfassung
  • 39. 39 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Zusammenfassung https://github.com/ottogroup/palladium • Unterstützung von Modellen in Python, R und Julia • Mechanismus für automatisches Modell-Update • Einfache Integration von Authentifizierungs-, Logging- und Monitoringlösungen • Administration von Modellen (Aktivieren / Löschen) • Automatisierte Generierung von Docker-Images (pld-dockerize) • Skalierung und Überwachung z.B. mit Mesos / Marathon • Einfache Installation über pip oder conda • Bereitstellung des Palladium Docker Images bei Docker Hub: https://hub.docker.com/r/ottogroup/palladium-base/ • Ausführliche Dokumentation inkl. Tutorial für Beispieldienst bei readthedocs • Test-driven development, 100% Coverage • Verschiedene Otto Group Services wurden mit Palladium umgesetzt
  • 40. 40 Skalierbare Prognose- und Analysedienste mit Palladium Dr. Andreas Lattner Otto Group BI Herzlichen Dank an… • Daniel Nouri (gemeinsame Konzeption & Entwicklung von Palladium) • Tim Dopke (Palladium mit Docker, Mesos / Marathon) • das Data Science-Team der Otto Group BI • alle Entwickler der eingesetzten Pakete, u.a. • scikit-learn • numpy • scipy • pandas • flask • sqlalchemy • pytest • …
  • 41. Titel der Präsentation, Name, Abteilung, Ort, xx. Monat 2014 41 Vielen Dank für Ihre Aufmerksamkeit! andreas.lattner //AT ottogroup.com