Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GABC2019: Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar by Paolo Kreth

GABC2019: Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar by Paolo Kreth

In der Mobiliar nehmen Use Cases im Bereich der Künstlichen Intelligenz stark zu. Diese werden oft durch Machine Learning-Verfahren gelöst. Eine Branche des Machine Learnings ist das sogenannte „Deep Learning“, welches auf Anwendung von neuronalen Netzen beruht. Deep Learning wird öfters im Rahmen von Bilderkennung und Text-Analyse angewendet. Beim Berechnen eines auf neuronalen Netzen basierenden Modells, werden hoch intensive Vektor-Transformationen durchgeführt. Diese können durch spezielle Hardware, sogenannte GPUs (Graphical GPUs), bis zu 100x beschleunigt werden. Im Normalfall hat ein Unternehmen keine auf GPU basierende Infrastruktur. Daher eignet sich eine Cloud-Lösung zur Berechnung des Modells. Im Rahmen einer Semesterarbeit für ein CAS in Big Data wurden verschiedene Cloud-Lösungen bewertet und getestet. Die Resultate werden in diesem Vortrag vorgestellt. Aus der Semesterarbeit wurden die Grundlagen für ein POC geschaffen. Auch über den aktuellsten Stand des POCs wird berichtet.

Azure Zurich User Group

April 27, 2019
Tweet

More Decks by Azure Zurich User Group

Other Decks in Technology

Transcript

  1. Agenda 1. Ausgangslage (Use Case, Prototyp) 2. Entscheidungskriterien und Zielgruppen

    3. Anforderungen pro Zielgruppe 4. Ein praktisches Beispiel: MNIST 5. Do-it-yourself: Anaconda Distribution auf Ubuntu VM 6. Azure Cloud Deep Learning VM Azure ML Engine Azure Batch AI Azure Databricks 7. AWS Sedgemaker 8. Rückblick und Ausblick 9. To POC or not to POC 10.Azure ML Service 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 2
  2. Wer bin ich? Vergleich und Evaluation einer Cloud-Infrastruktur für Deep

    Learning @Mobiliar • * 1968 in Genua /Italien • Mehrere Jahre Freelancer Oracle-DBA & -Entwickler • Masterabschluss in Informatik an der Università degli Studi di Genova • Principal Instructor - Oracle University Schweiz • Seit 2010 bei der Mobiliar • Oracle Technical Lead & Project Manager • 2012: Aufbau eines Performance Warehouse • 2015: Teamleiter Data Management • 2018: Fokus auf Architektur und Open Source DBs • Mitglied der Swiss Oracle User Group • Work-Life-Balance: Familie, Jazzmusik, Fussball im Mobiliar Firmenteam 29.04.2019 3
  3. Use Case Deep Learning @Mobiliar 29.04.2019 Vergleich und Evaluation einer

    Cloud-Infrastruktur für Deep Learning @Mobiliar 5
  4. Was ist Deep Learning ? • Teil des Machine Learnings,

    charakterisiert durch Anwendung neuronaler Netze und grossen Datenmengen. • Inspiriert vom menschlichen Gehirn. • Ziel ist es, Prognosen oder Entscheidungen zu treffen. • Neuronale Netze bestehen aus künstlichen Neuronen:  Eingangs- und Ausgangsneuronen  Verschiedene Schichten von Zwischenneuronen  Rechenintensive Vektor-Transformationen • Anwendungsbereiche im Bereich von Bild-, Sequenz- und Spracherkennung. 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 6
  5. Spezielle Hardware Anforderungen für Deep Learning 29.04.2019 Vergleich und Evaluation

    einer Cloud-Infrastruktur für Deep Learning @Mobiliar • Hunderte von sehr einfachen Cores • Tausende gleichzeitiger Hardware Threads • Maximierung des Floating Point Throughput • Optimiert für Vektor-Operationen • Mobiliar betreibt zur Zeit keine GPU-Infrastruktur on premise 7
  6. Ein erster Prototyp in der Google Cloud 29.04.2019 Vergleich und

    Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar Daten Store, Preprocess, Explore Model Erstellung des Modells Serving Deployment des Modells WAS ? WIE ? WO ? WIE ? (Modell Entwickeln) WO ? (Modell Trainieren) Von Google entwickeltes Framework für maschinelles Lernen und künstliche Intelligenz – «Backend» In Python geschriebene Open Source Bibliothek, Interface für Backends, wie z.B. Tensorflow Compute Engine (VM), Anaconda, Cuda selbst installiert und betrieben ML Engine: PaaS, verteiltes Trainieren über Jobs, nicht 100% Keras integriert 8
  7. Offene Fragen nach dem Pilot – Thema der Semesterarbeit 1.

    Gibt es noch bessere Lösungen auf dem Markt, um Deep Learning Aufgaben umzusetzen ? 2. Welches sind die Anforderungen an eine Deep Learning Plattform ? 3. Wie integrieren wir diese in die Mobiliar IT-Landschaft ? 4. Wer muss beigezogen werden, um eine Entscheidung treffen zu können ? 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 9
  8. 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar

    Frage4: Wer muss beigezogen werden, um eine Entscheidung treffen zu können? Frage 1 10
  9. 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar

    Frage 2: Welches sind die Anforderungen an eine Deep Learning Plattform? Frage 3: Wie integrieren wir uns in der Mobiliar IT-Landschaft? 13
  10. Evaluationskriterien Data Scientists und Cloud Brokerage # Kriterium Data Scientist

    # Kriterium Cloud Brokerage D1 Geringer Administrations Aufwand Wieviel Zeit muss ich im Betrieb der Lösung verbringen ? Installation von Libraries, Installation von OS Packages, Upgrades, Compatibility der verschiedenen Komponenten. C1 Saas vor PaaS vor IaaS VMs sind IaaS. Man möchte die Verwaltung von VMs seitens Mobiliar vermeiden. Die Nutzung von VMs innerhalb eines Services wird eher neutral angesehen. D2 Flexibilität der Lösung Kann ich die unterliegende Hardware austauschen? Data Exploration mit normale CPUs , Modell Training mit GPUs C2 Kein Zugriff über SSH Das SSH Protokoll wird für den Zugriff auf Cloud Dienste nicht bevorzugt. SSH ist ein Protokoll, welches einen administrativen Zugang zur Ressource liefern soll, und kein End User Protokoll. SSH kann leicht für einen Missbrauch verwendet werden. D3 Performance Welche Familien von GPUs stehen zur Verfügung? Sind Konfigurationsanpassungen notwendig? C3 Public vor Hybrid vor Private Cloud D4 Skalierung Erfolgt die Skalierung auf mehrere GPUs Out of The Box? C4 Eine positive Risiko Analyse des zu beziehenden Service Wird von der Cloud Architektur getrieben. D5 Technologien Kann ich weiterhin mit den heutigen Werkzeugen arbeiten (Keras, Tensorflow, Python, Jupyter, usw) ?. C5 Preferred Cloud Provider sind vorzuziehen, andernfalls zu begründen. Es besteht eine Roadmap zur Anbindung der verschiedenen Cloud-Anbieter an der Mobiliar IT-Landschaft. Die Nutzung eines Services hängt von dem Stand der Anbindung ab. D6 API Wie interagiere ich mit der Lösung, kann ich einfach mein Modell zu einem Web Service deployen? D7 Built-in-Algorithmen Wie weit kann ich eingebaute Modelle und Algorithmen personalisieren? D8 Wiederverwendbarkeit Kann ich das Modell als Private oder Public Service deployen? Kann man das Modell exportieren und lokal benutzen? 14
  11. Weitere Kriterien: Zeitplan und Zusammenarbeit 29.04.2019 Vergleich und Evaluation einer

    Cloud-Infrastruktur für Deep Learning @Mobiliar Zum heutigen Zeitpunkt ist noch kein Cloud Anbieter direkt an die Mobiliar IT-Landschaft angebunden. Es bestehen aber gute Chancen, dass per Ende Jahr Services aus der Azure Cloud den Endbenutzern zur Verfügung stehen werden. Kommerzielle und technische Unterstützung sind für den Kunden (Die Mobiliar) von Vorteil. Mit Microsoft, AWS und Oracle gute Zusammenarbeit, Kontakte mit Google extrem mühsam. 15
  12. Auswirkung auf die Semesterarbeit: Fokus auf Azure 29.04.2019 Vergleich und

    Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar Wir konzentrieren uns auf Azure und werden: • die Services der Azure Cloud tiefer betrachten, da eine kurzfristige Wiederverwendung der Erkenntnisse wahrscheinlicher ist. • andere Services nicht in der gleichen Tiefe betrachten, sondern eher zum Vergleich mit der Azure Cloud nutzen. 16
  13. Erfahrungssammlung by Example - MNIST 29.04.2019 Vergleich und Evaluation einer

    Cloud-Infrastruktur für Deep Learning @Mobiliar http://yann.lecun.com/exdb/publis/pdf/simard-98.pdf 17
  14. MNIST - Deep Learning Convulational Network in Python 29.04.2019 Vergleich

    und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar https://elitedatascience.com/keras-tutorial-deep-learning-in-python 18
  15. Ubuntu VM mit Anaconda Distribution und (Theano Backend) >>> model.fit(X_train,

    Y_train, ... batch_size=32, nb_epoch=10, verbose=1) __main__:2: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`. Epoch 1/10 60000/60000 [==============================] - 847s 14ms/step - loss: 0.2337 - acc: 0.9286 Epoch 2/10 60000/60000 [==============================] - 849s 14ms/step - loss: 0.0907 - acc: 0.9741 Epoch 3/10 60000/60000 [==============================] - 841s 14ms/step - loss: 0.0684 - acc: 0.9803 Epoch 4/10 60000/60000 [==============================] - 840s 14ms/step - loss: 0.0547 - acc: 0.9839 Epoch 5/10 60000/60000 [==============================] - 847s 14ms/step - loss: 0.0470 - acc: 0.9863 Epoch 6/10 60000/60000 [==============================] - 838s 14ms/step - loss: 0.0418 - acc: 0.9874 Epoch 7/10 60000/60000 [==============================] - 835s 14ms/step - loss: 0.0383 - acc: 0.9887 Epoch 8/10 60000/60000 [==============================] - 837s 14ms/step - loss: 0.0326 - acc: 0.9902 Epoch 9/10 60000/60000 [==============================] - 825s 14ms/step - loss: 0.0330 - acc: 0.9898 Epoch 10/10 60000/60000 [=============================] - 821s 14ms/step - loss: 0.0295 - acc: 0.9912 <keras.callbacks.History object at 0x7f5698494748> 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar Troubleshooting VM Konfiguration D2s_v3 2 VCPUs 8 GB RAM 3’200 Max IOPS 16Gb Local Disk CHF/Monat 87.86 19
  16. Bewertung «Do It Yourself VM» mit Anaconda Distribution 29.04.2019 Vergleich

    und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar Kriterium Data Scientist Kriterium Architektur D1 Geringer Administration-Aufwand C1 Saas vor PaaS vor IaaS D2 Flexibilität der Lösung C2 Kein Zugriff über SSH D3 Performance C3 Public vor Hybrid vor Private Cloud D4 Skalierung C4 Eine positive Risiko Analyse des zu beziehenden Services D5 Technologien C5 Preferred Cloud Provider sind vorzuziehen, andernfalls zu begründen. D6 API D7 Built-in-Algorithmen D8 Modell wiederverwendbar X X X X X X X ✔ ✔ ✔ ✔ ✔ X 20 • die VM muss selber betrieben werden • das Konfigurationsmanagement ist nicht aufwändig • entspricht nicht der IT-Strategie (IaaS) • Performance ungenügend
  17. 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar

    Frage 1: Gibt es noch bessere Lösungen auf dem Markt? 21
  18. 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar

    Azure Cloud • Deep Learning VM • ML Studio • Batch AI • Azure Databricks 22
  19. MNIST auf Azure Deep Learning VM – 1 GPU >>>

    model.fit(X_train, Y_train, ... batch_size=32, nb_epoch=10, verbose=1) /anaconda/envs/py35/lib/python3.5/site-packages/keras/models.py:942: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`. warnings.warn('The `nb_epoch` argument in `fit` ' Epoch 1/10 60000/60000 [==============================] - 14s 241us/step - loss: 0.2600 - acc: 0.9212 Epoch 2/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.1069 - acc: 0.9687 Epoch 3/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.0810 - acc: 0.9766 Epoch 4/10 60000/60000 [==============================] - 13s 212us/step - loss: 0.0661 - acc: 0.9795 Epoch 5/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.0591 - acc: 0.9825 Epoch 6/10 60000/60000 [==============================] - 13s 214us/step - loss: 0.0494 - acc: 0.9848 Epoch 7/10 60000/60000 [==============================] - 13s 214us/step - loss: 0.0455 - acc: 0.9858 Epoch 8/10 60000/60000 [==============================] - 13s 214us/step - loss: 0.0406 - acc: 0.9876 Epoch 9/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.0384 - acc: 0.9880 Epoch 10/10 60000/60000 [=============================] - 13s 213us/step - loss: 0.0346 - acc: 0.9887 <keras.callbacks.History object at 0x7f324fd37ef0> • 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar VM Type #VCPUs GB RAM Max. IOPS Local Disk GPUs CHF/MON NC6 6 56 20’000 380 GB 1xK80 853.71 24
  20. MNIST auf Azure Deep Learning VM – 2 GPUs >>>

    model.fit(X_train, Y_train, ... batch_size=32, nb_epoch=10, verbose=1) /anaconda/envs/py35/lib/python3.5/site-packages/keras/models.py:942: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`. warnings.warn('The `nb_epoch` argument in `fit` ' Epoch 1/10 60000/60000 [==============================] - 14s 241us/step - loss: 0.2600 - acc: 0.9212 Epoch 2/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.1069 - acc: 0.9687 Epoch 3/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.0810 - acc: 0.9766 Epoch 4/10 60000/60000 [==============================] - 13s 212us/step - loss: 0.0661 - acc: 0.9795 Epoch 5/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.0591 - acc: 0.9825 Epoch 6/10 60000/60000 [==============================] - 13s 214us/step - loss: 0.0494 - acc: 0.9848 Epoch 7/10 60000/60000 [==============================] - 13s 214us/step - loss: 0.0455 - acc: 0.9858 Epoch 8/10 60000/60000 [==============================] - 13s 214us/step - loss: 0.0406 - acc: 0.9876 Epoch 9/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.0384 - acc: 0.9880 Epoch 10/10 60000/60000 [=============================] - 13s 213us/step - loss: 0.0346 - acc: 0.9887 <keras.callbacks.History object at 0x7f324fd37ef0> • 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar Vm Typ #VCPUs GB RAM Max.IOPS Local Disk GPUs CHF/MON NC12 12 224 40’000 680 GB 2xK80 1’708.15 Sun Aug 19 09:56:08 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 390.46 Driver Version: 390.46 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla K80 On | 00003488:00:00.0 Off | 0 | | N/A 76C P0 109W / 149W | 10973MiB / 11441MiB | 61% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla K80 On | 000052F9:00:00.0 Off | 0 | | N/A 47C P0 70W / 149W | 10895MiB / 11441MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 13404 C python 409MiB | | 0 24168 C python 10542MiB | | 1 13404 C python 409MiB | | 1 24168 C python 10464MiB | +-----------------------------------------------------------------------------+ 26
  21. Parallelisieren auf mehrere GPUs – nicht so trivial • https://docs.microsoft.com/en-us/cognitive-toolkit/using-cntk-multigpu-support-with-

    keras • https://docs.microsoft.com/en-us/cognitive-toolkit/multiple-gpus-and-machines • https://blogs.technet.microsoft.com/machinelearning/2018/06/20/how-to-do- distributed-deep-learning-for-object-detection-using-horovod-on-azure/ • https://github.com/avolkov1/keras_experiments/blob/master/examples/mnist/mnist_tf record_mgpu.py • https://www.pyimagesearch.com/2017/10/30/how-to-multi-gpu-training-with-keras- python-and-deep-learning/ • https://blogs.msdn.microsoft.com/uk_faculty_connection/2017/03/27/azure-gpu- tensorflow-step-by-step-setup/ • https://docs.microsoft.com/en-us/azure/machine-learning/desktop-workbench/how- to-use-gpu • https://stackoverflow.com/questions/51699514/does-multi-gpu-model-support- sequential • https://keras.io/utils/#multi_gpu_model • https://machinelearningmastery.com/keras-functional-api-deep-learning 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar Quelle: https://stackoverflow.com/questions/51699514/does-multi-gpu-model-support-sequential 27
  22. Sequential Model skaliert nicht auf mehrere GPUs: Lösung Multi_GPU_Model 29.04.2019

    Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 28 Quelle: https://keras.io/utils/#multi_gpu_model parallel_model= multi_gpu_model(model, gpus =2) parallel_model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) parallel_model.fit(X_train, Y_train, batch_size=32, nb_epoch=10, verbose=1)
  23. MNIST auf Azure Deep Learning VM – 2 GPUs >>>

    model.fit(X_train, Y_train, ... batch_size=32, nb_epoch=10, verbose=1) /anaconda/envs/py35/lib/python3.5/site-packages/keras/models.py:942: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`. warnings.warn('The `nb_epoch` argument in `fit` ' Epoch 1/10 60000/60000 [==============================] - 14s 241us/step - loss: 0.2600 - acc: 0.9212 Epoch 2/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.1069 - acc: 0.9687 Epoch 3/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.0810 - acc: 0.9766 Epoch 4/10 60000/60000 [==============================] - 13s 212us/step - loss: 0.0661 - acc: 0.9795 Epoch 5/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.0591 - acc: 0.9825 Epoch 6/10 60000/60000 [==============================] - 13s 214us/step - loss: 0.0494 - acc: 0.9848 Epoch 7/10 60000/60000 [==============================] - 13s 214us/step - loss: 0.0455 - acc: 0.9858 Epoch 8/10 60000/60000 [==============================] - 13s 214us/step - loss: 0.0406 - acc: 0.9876 Epoch 9/10 60000/60000 [==============================] - 13s 213us/step - loss: 0.0384 - acc: 0.9880 Epoch 10/10 60000/60000 [=============================] - 13s 213us/step - loss: 0.0346 - acc: 0.9887 <keras.callbacks.History object at 0x7f324fd37ef0> • 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar Vm Typ #VCPUs GB RAM Max.IOPS Local Disk GPUs CHF/MON NC12 12 224 40’000 680 GB 2xK80 1’708.15 Sun Aug 19 10:01:04 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 390.46 Driver Version: 390.46 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla K80 On | 00003488:00:00.0 Off | 0 | | N/A 74C P0 84W / 149W | 10973MiB / 11441MiB | 53% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla K80 On | 000052F9:00:00.0 Off | 0 | | N/A 49C P0 77W / 149W | 10973MiB / 11441MiB | 42% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 13404 C python 409MiB | | 0 24878 C python 10542MiB | | 1 13404 C python 409MiB | | 1 24878 C python 10542MiB | +-----------------------------------------------------------------------------+ 29
  24. Bewertung der Azure Deep Learning VM 29.04.2019 Vergleich und Evaluation

    einer Cloud-Infrastruktur für Deep Learning @Mobiliar https://www.bigdata-insider.de/was-ist-deep-learning-a-603129/ Kriterium Data Scienstit Kriterium Architektur D1 Geringer Administrations Aufwand C1 Saas vor PaaS vor IaaS D2 Flexibilität der Lösung C2 Kein Zugriff über SSH D3 Performance C3 Public vor Hybrid vor Private Cloud D4 Skalierung C4 Eine positive Risiko Analyse des zu beziehenden Service D5 Technologien C5 Preferred Cloud Provider sind vorzuziehen, andernfalls zu begründen. D6 API D7 Built in Algorithmen D8 Modell wiederverwendbar X X X X X X X ✔ ✔ ✔ ✔ ✔ ✔ • Konfigurationsaufwand • die VM muss selber betrieben werden • das Konfigurationsmanagement ist nicht trivial • entspricht nicht der IT- Strategie 30
  25. Microsoft ML Studio – Maschine Learning per Drag&Drop 29.04.2019 Vergleich

    und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 32
  26. Einfaches Deployment eines Web Services 29.04.2019 Vergleich und Evaluation einer

    Cloud-Infrastruktur für Deep Learning @Mobiliar 33
  27. Bewertung der Azure ML Studio 29.04.2019 Vergleich und Evaluation einer

    Cloud-Infrastruktur für Deep Learning @Mobiliar Kriterium Data Scientist Kriterium Architektur D1 Geringer Administrations-Aufwand C1 Saas vor PaaS vor IaaS D2 Flexibilität der Lösung C2 Kein Zugriff über SSH D3 Performance C3 Public vor Hybrid vor Private Cloud D4 Skalierung C4 Eine positive Risiko-Analyse des zu beziehenden Services D5 Technologien C5 Preferred Cloud Provider sind vorzuziehen, andernfalls zu begründen. D6 API D7 Built-in-Algorithmen D8 Modell wiederverwendbar X X X X ✔ ✔ ✔ ✔ ✔ • Black Box • Modell nicht wiederverwendbar • Einfach, einen Web Service aufzusetzen • Entspricht der IT- Strategie • Nicht für einen Data Scientist brauchbar X ✔ ✔ ✔ 36
  28. Azure Batch AI Schritte 1. Storage Groups erstellen 29.04.2019 Vergleich

    und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar > az storage account create --name seqmnisttstorageaccount --location eastus --resource-group SequentialMnistGroup > az storage share create --account-name seqmnisttstorageaccount --name seqmnisttstorageshare > az storage directory create --share-name seqmnisttstorageshare --name seqmnistdir --account-name seqmnisttstorageaccount > az storage file upload --share-name seqmnisttstorageshare --source sequential_mnist.py --path seqmnistdir --account-name seqmnisttstorageaccount 39
  29. Azure Batch AI Schritte 2. Workspace erstellen 29.04.2019 Vergleich und

    Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar  az batchai workspace create -g SequentialMnistGroup -n Seqmnistworkspace 40
  30. Azure Batch AI Schritte 3. Cluster erstellen: nc12 GPU VM

    29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar > az batchai cluster create -g SequentialMnistGroup -w Seqmnistworkspace -n seqmnistcluster --storage-account-name seqmnisttstorageaccount --name nc12mnist --image UbuntuDSVM --vm-size Standard_NC12 --min 1 --max 2 --afs-name seqmnisttstorageshare --afs-mount-path external --user-name krethp -- password XXXXXX 41
  31. Azure Batch AI Schritte 4. Experiment erstellen 29.04.2019 Vergleich und

    Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar > az batchai experiment create --name seqmnistexperiment -g SequentialMnistGroup -w Seqmnistworkspace 42
  32. Azure Batch AI Schritte 5. Job Konfiguration - CNTK Backend

    PS Azure:\> cat jobseq.json { "$schema": "https://raw.githubusercontent.com/Azure/BatchAI/master/schemas/2017-09-01- preview/job.json", "properties": { "nodeCount": 1, "customToolkitSettings": { "commandLine": "KERAS_BACKEND=cntk python $AZ_BATCHAI_INPUT_SCRIPT/sequential_mnist.py" }, "stdOutErrPathPrefix": "$AZ_BATCHAI_MOUNT_ROOT/external", "inputDirectories": [{ "id": "SCRIPT", "path": "$AZ_BATCHAI_MOUNT_ROOT/external/seqmnistdir" }] } } 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 43
  33. Azure Batch AI Schritte 5. Job mit Tensorflow Backend, 1

    Knoten 2 Parallel Workers { "$schema": "https://raw.githubusercontent.com/Azure/BatchAI/master/schemas/2018-05-01/job.json", "properties": { "nodeCount": 1, "tensorFlowSettings": { "pythonScriptFilePath": "$AZ_BATCHAI_JOB_MOUNT_ROOT/scripts/cntk/sequential_mnist.py" }, "stdOutErrPathPrefix": "$AZ_BATCHAI_JOB_MOUNT_ROOT/logs", "mountVolumes": { "azureFileShares": [ { "azureFileUrl": "https://<AZURE_BATCHAI_STORAGE_ACCOUNT>.file.core.windows.net/logs", "relativeMountPath": "logs" }, { "azureFileUrl": "https://<AZURE_BATCHAI_STORAGE_ACCOUNT>.file.core.windows.net/scripts", "relativeMountPath": "scripts" } ] }, "jobPreparation": { "commandLine": "pip install keras" }, "containerSettings": { "imageSourceRegistry": { "image": "tensorflow/tensorflow:1.8.0-gpu" } } } } 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar "nodeCount": 1, "tensorFlowSettings": { "commandLine": "pip install keras" }, "containerSettings": { "imageSourceRegistry": { "image": "tensorflow/tensorflow:1.8.0-gpu" 44
  34. Azure Batch AI Schritte 6. Job ausführen 29.04.2019 Vergleich und

    Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar > az batchai job create -g SequentialMnistGroup -w Seqmnistworkspace --experiment seqmnistexperiment --name seqmnistjobok --cluster nc12mnist -- config jobseq.json 45
  35. Azure Batch AI Schritte Job mit Tensorflow Backend - Logs

    29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 2018-09-03 13:54:41.267867: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1435] Adding visible gpu devices: 0, 1 2018-09-03 13:54:41.757443: I tensorflow/core/common_runtime/gpu/gpu_device.cc:923] Device interconnect StreamExecutor with strength 1 edge matrix: 2018-09-03 13:54:41.757507: I tensorflow/core/common_runtime/gpu/gpu_device.cc:929] 0 1 2018-09-03 13:54:41.757517: I tensorflow/core/common_runtime/gpu/gpu_device.cc:942] 0: N N 2018-09-03 13:54:41.757522: I tensorflow/core/common_runtime/gpu/gpu_device.cc:942] 1: N N 2018-09-03 13:54:41.757959: I tensorflow/core/common_runime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 10763 MB memory) -> physical GPU (device: 0, name: Tesla K80, pci bus id: 14c6:00:00.0, compute capability: 3.7) 2018-09-03 13:54:41.859623: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:1 with 10763 MB memory) -> physical GPU (device: 1, name: Tesla K80, pci bus id: ffc5:00:00.0, compute capability: 3.7) http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64 Successfully installed keras-2.2.2 keras-applications-1.0.4 keras-preprocessing-1.0.2 pyyaml-3.13 46
  36. Azure Batch AI Schritte Job auf einen Cluster - 2

    Knoten, 2 Worker pro Knoten "properties": { "nodeCount": 2, "tensorFlowSettings": { "parameterServerCount": 1, "workerCount": 2, 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 47
  37. Und: Alles wurde auf dem Mobiliar Laptop ausgeführt !!! Azure

    CLI 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 48
  38. Nur für Command Line Freaks: Aufruf aus Jupyter 29.04.2019 Vergleich

    und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 49
  39. Bewertung von Azure Batch AI 29.04.2019 Vergleich und Evaluation einer

    Cloud-Infrastruktur für Deep Learning @Mobiliar X X ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ 50 Kriterium Data Scienstit Kriterium Architektur D1 Geringer Administrations Aufwand C1 Saas vor PaaS vor IaaS D2 Flexibilität der Lösung C2 Kein Zugriff über SSH D3 Performance C3 Public vor Hybrid vor Private Cloud D4 Skalierung C4 Eine positive Risiko Analyse des zu beziehenden Service D5 Technologien C5 Preferred Cloud Provider sind vorzuziehen, andernfalls zu begründen. D6 API D7 Built in Algorithmen D8 Modell wiederverwendbar • Ideal, um ein Modell in der Cloud zu trainieren • Empfehlung – POC
  40. Azure Databricks 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep

    Learning @Mobiliar • Apache Spark based Collaborative Plattform • Notebooks: Python, SQL, Scala, R • Man kann Sprachen mischen • Spark SQL und Dataframes • Big Data Infrastructure • Streaming: Kafka • Cluster Deployment • Auto Scale und Auto Termination 52
  41. Job erstellen – Analog Azure Batch AI 29.04.2019 Vergleich und

    Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 56
  42. Bewertung von Amazon Sagemaker 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur

    für Deep Learning @Mobiliar https://www.bigdata-insider.de/was-ist-deep-learning-a-603129/ Kriterium Data Scientist Kriterium Architektur D1 Geringer Administrations-Aufwand C1 Saas vor PaaS vor IaaS D2 Flexibilität der Lösung C2 Kein Zugriff über SSH D3 Performance C3 Public vor Hybrid vor Private Cloud D4 Skalierung C4 Eine positive Risiko Analyse des zu beziehenden Services D5 Technologien C5 Preferred Cloud Provider sind vorzuziehen, andernfalls zu begründen D6 API D7 Built-in-Algorithmen D8 Modell wiederverwendbar X ✔ ✔ ✔ ✔ ✔ • Noch nicht preferred Cloud Provider (auf dem Weg) • Immersion Day Angebot annehmen • Einfaches Provisionieren eines Web Services ✔ ✔ ✔ ✔ ✔ ✔ X 58
  43. Vergleich der verschiedenen Lösungen Lösung Release Date Kriterien DS Kriterien

    CB Haupt-Vorteile Haupt-Nachteile Ausblick Do it Yourself VM (Azure, AWS, Google) n. a. 2/8 3/5 Fully Customized Hoher Admin-Aufwand IaaS Wird nicht weiterverfolgt Azure Deep Learning VM 11.10.2017 3/8 3/5 Integration der GPU Drivers Hoher Admin-Aufwand IaaS Wird nicht weiterverfolgt Azure ML Studio 2015 3/8 5/5 Black Box Nicht für Data Scientists brauchbar Wird nicht weiterverfolgt Batch AI 10.09.2017 6/8 5/5 Flexibles Training in der Cloud PaaS Integration mit eigenen Docker Images möglich Kein SSH Kein Web Service API (?) POC AWS Sagemaker 29.11.2017 7/8 4/5 Flexibles Training in der Cloud PaaS Integration mit eigenen Docker Images möglich Kein SSH Web Service API Noch nicht Preferred Cloud Provider Immersion Day Google ML Engine 08.03.2017 6/8 2/5 PaaS Tensorflow wurde von Google entwickelt Zugriff über SSH Keine Risiko-Analyse Kein Preferred Cloud Provider Technologische Integration mit Keras suboptimal Wird nicht weiterverfolgt 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 59
  44. Wie weiter? 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep

    Learning @Mobiliar 60 Ausblick • Es wird ein POC mit Azure Batch AI stattfinden. • Eine weitere Vertiefung des Databricks Services wird empfohlen. Der Teilnehmerkreis wird hierzu erweitert (Data Analytics Team, Architektur, IT Infrastructure Services). • Ein Immersion Day mit AWS Sagemaker wird organisiert. • Weitere Cloud-Anbieter werden Ihre Produkte vorstellen (Oracle, vielleicht Google). Rückblick • Es wurde ein gemeinsames Verständnis erreicht zwischen Mobiliar IT und Data Scientists in Bezug auf die Integration von Cloud-Lösungen in die Mobiliar IT-Landschaft. • Anhand eines praktischen Beispiels (MNIST) haben wir die Arbeitsweise eines Data Scientists verstanden – und dadurch auch seine Bedürfnisse. • Verschiedene Lösungen wurden evaluiert. • Die Wahl der Lösung wird stark von der Anbindung in der Mobiliar IT-Landschaft beeinflusst. • Technologie ändert sich rasant. Mit den Evaluationskriterien kann man eine gleichartige Bewertung auch für neue Services durchführen.
  45. Alles bereit für den POC…. 29.04.2019 Vergleich und Evaluation einer

    Cloud-Infrastruktur für Deep Learning @Mobiliar 61
  46. What happened to Azure Batch AI ? 29.04.2019 Vergleich und

    Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar • Service released September 2017 • 30 März 2019 eingestellt • The service will shut down soon with no further notice • Vorschlag: benutzen Sie Azure ML Service • Ist das was für uns? 62
  47. What is Azure Machine Learning ? 29.04.2019 Vergleich und Evaluation

    einer Cloud-Infrastruktur für Deep Learning @Mobiliar https://docs.microsoft.com/en-us/azure/machine-learning/service/concept-azure-machine-learning-architecture • Cloud Base Environment to prepare, train, test, deploy, manage, and track machine learning models. • Supports Open Source Technologies like Python Packages • Train through Jupyter Notebooks • Start training on local machine and scale out to the cloud • Implementation through Docker Containers 64
  48. Workflow • Develop machine learning training scripts in Python. •

    Create and configure a compute target. • Submit the scripts to the configured compute target to run in that environment. During training, the scripts can read from or write to datastore. And the records of execution are saved as runs in the workspace and grouped under experiments. • Query the experiment for logged metrics from the current and past runs. If the metrics don't indicate a desired outcome, loop back to step 1 and iterate on your scripts. • After a satisfactory run is found, register the persisted model in the model registry. • Develop a scoring script. • Create an image and register it in the image registry. • Deploy the image as a web service in Azure. 29.04.2019 Vergleich und Evaluation einer Cloud-Infrastruktur für Deep Learning @Mobiliar 65
  49. Unterstützen Sie uns und steigen Sie bei uns ein. Wir

    suchen • Scrum Master • Software Developper • System Engineer • Epic Owner • Product Owner • Business Analyst • Data Scientist …und viele mehr! Wir suchen Sie! 29.04.2019 Präsentationstitel 69