Hohe Wellen, Tapas und Bücher

Dieses Jahr ist Andalusien eine Reise wert. Ich freue mich über die wellenreiche Atlantikküste, lange und mit Dünen gesäumte Sandstrände und auf einen guter Café in einer schattigen Strandbar. Diese ist dann hoffentlich wie geschaffen für meine diesjährige Urlaubsleseliste. Auch dieses Jahr werde ich nicht alle Bücher in den 2 Wochen komplett durcharbeiten können; zumindest nicht wenn ich zwischendurch noch schwimmen, etwas laufen, bummeln und ausschlafen möchte.
Um so richtig in den Urlaub eintauchen zu können, werde ich bestimmt mit Rendezvous mit einem Oktopus anfangen. Wellen, der große Ozean und diese fazinierenden Tiere. Nach soviel Entspannung habe ich bestimmt wieder Lust mich mit den Themen zu beschäftigen, die mich vermutlich den Rest von diesem und die kommenden Jahre beschäftigen werden. Dazu passt dann auch Prediction Machines, welches bei Amazon aktueller Bestseller im Bereich Wirtschaftsliteratur ist. Immer wenn ich solche Bücher lese, bekomme ich Lust die dort vorgestellten Technologien selber zu realisieren. Auf meiner Leseliste steht dazu das deutsche Einsteigerbuch zum Thema Elasticsearch von Florian Hopf und Kafka: The Definitive Guide.
Dabei werde ich vermutlich schnell festestellen, dass ich beim Studium eines Romans deutlich besser entspannen kann, was ja Sinn und Zweck eines Urlaubs sein sollte. Hoffentlich werde ich mich zwischen  Null K von Don DeLillo  und
Accelerando von Charles Stress entscheiden können.
Wenn ich ganz beseelt von der Schönheit der spanischen Atlantikküste bin, kann ich vielleicht auch das Geschwurbel von Richard David Precht ertragen und greife dann alternativ zu Jäger, Hirten, Kritiker: Eine Utopie für die digitale Gesellschaft. Auf jeden Fall freue ich mich auf meinen bevorstehenden Sommerurlaub!

There are 35 days remaining

Nach 544 Tagen kann auch ich abschließend sagen: Mein Konzern-Intermezzo war eine äußerst lehrreiche Zeit. Lehrreich zu sehen, wie schwer es für ein ein mittelständiges Unternehmen ist, neue digitale Strukturen aufzubauen und mit in die eigenen DNA aufzunehmen. Vor allen Dingen wenn die Spielräume dafür eng sind. Und doch geht es am Ende des Tages immer um die Motivation von Mitarbeitern, welche gemeinsam an einem Strang ziehen um ein Unternehmen voranzubringen. So hat mich dann auch folgendes Mission Statement mehr als angesprochen, in dem ich mich zu 100% wiederfinde:

Ich bin ein Nerd. Ich nutze jede Chance, die Dinge neu zu denken. Ich bin begeistert, fast ein bisschen besessen, vom Tempo des technischen Wandels. Sein ungewisser Pfad, seine Offenheit mag für Manchen bedrohlich wirken – nicht für mich. Ich bin ein Entdecker. Entdecker in allen Bereichen: Strategie, Design, Development. Mein Ziel sind Produkte, die die Menschen erreichen. Den Weg dorthin gehen ich mit Leidenschaft, mit Empathie und Freude an Herausforderungen. Ich glaube: Wenn man alleine schon gut ist, wird man noch besser im Team. Hierarchien mag ich am liebsten flach. Keine Alpha-Männchen, keine B-Ware.

Ich freue mich ab dem 1. August Teil des Data Teams der SinnerSchrader zu sein.

EMR und Jupyter Notebooks auf dem iPad

Elastic Map Reduce ist eine sehr effektive Art, Spark-Cluster ad hoc und On-Demand zu betreiben. Mit etwas Hilfe des AWS SDKs für Python, SSHTunnel und Juno ist die Nutzung sogar mit dem iPad möglich. Doch der Reihe nach. Wie in meinem Blogeintrag über Amazon Rekognition beschrieben, lässt sich das AWS SDK für Python mit Namen boto3 auch mit Hilfe von Pythonista ausführen. Damit lässt sich auf die Eleastic Map Reduce API zugreifen welche wiederum benötigt wird um vollautomatische, parametrisierte Hadoop und Spark-Cluster beliebiger Größe zu starten.

Über Bootstrap-Actions lassen sich mit Hilfe einfacher Bash-Scripte, lassen sich auf den zu startenden Workern und dem Master des Clusters,  noch zusätzliche Software installieren. Das Script selber kann man einfach innerhalb eines entsprechenden S3-Buckets ablegen. Die Entwicklung eines solchen Scripts ist zeitaufwendig, da der kleinste Fehler zu einem Abbruch der Cluster-Initialisierung führen kann (welche mitunter mehrere Minuten in Anspruch nehmen kann). Ich habe ein etwas aufwändigeres Bootstrap-Script auf GitHub abgelegt, welches sich an dem Script von Nicola anlehnt. Es installiert auf dem Master mit Miniconda den Packetmanager von Anaconda. Damit werden dann im nächsten Schritt Python-Pakete wie matplotlib, plotly, scikit-learn und Jupyter Notebook installiert. Damit die Notebooks nach Beendigung des Clusters nicht weg sind, wird s3fs-fuse genutzt um diese in S3 zu schreiben. Das Bootstrap-Script hängt das entsprechende Bucket so in das Dateisystem des Masters ein, dass dieser ganz normal darauf zugreifen kann. 

Die Initalisierung des Clusters dauert gern um die 15 Minuten. Schuld daran ist zum großen Teil die Installation der Software auf dem Master. Ein EMR-Cluster lässt sich in zwei Modi betreiben: Entweder mann startet eine Analyse-Pipeline oder man startet das Cluster einfach um damit iterativ zu arbeiten. Pipelines, welche im EMR-Kontext „job flows“ heißen, werden dazu genutzt in regelmäßigen Abständen, ein oderer mehrere MapReduce-, Hive-, Impala-, Presto- oder Spark-Jobs auszuführen. Um mit Jupyter Notebooks zu arbeiten zu können, wird nur ein Job-Flow-Element benötigt. Dieses wartet nach seinem Start einfach, statt das Cluster nach getaner Arbeit wieder zu terminieren. Diese Eigenschaft von EMR machen wir uns zu nutze.

Um nach dem Start des Jupyter Dienstes auf die Notebooks zugreifen zu können, muss den Master ein entsprechender SSH-Tunnel auf das etabliert werden. Auf dem Mac oder Linux würde man dies über die Kommanzozeile mit
ssh -N -L localhost:8889:localhost:8889 hadoop@ec2-XX-XXX-XX-XXX.eu-west-1.compute.amazonaws.com -i ~/.ssh/key.pem
bewerkstelligen um auf dem lokalen Port 8889 einen Verbindung zum entfernten Port 8889 (2. Parameter) aufzubauen. Auf dem iPad funktioniert das nicht so ohne weiteres. Hier kommt die App SSH Tunnel ins Spiel, welche sowohl einen direktes als auch ein dynamisches Portforwarding unterstützt. Diese App ist leider nicht kostenlos aber jeden Eurocent wert, wenn man viel mit Cloud-Anwendungen in geschützten Umgebungen arbeitet. In den Verbindungseinstellungen lassen sich die nötigen Parameter einstellen und auch der private Schlüssel für den SSH-Zugriff kann via Zwischenablage genutzt werden. Als Standardnutzer wird hadoop von EMR genutzt. Sind alle Parameter konfiguriert, kann die Verbindung aufgebaut werden. SSH Tunnel hält die Verbindung auch nach Wechsel in eine andere App offen.

Im Bootstrap-Script habe ich Port 8889 für Jupyter Notebook konfiguriert und ein Passwort für die Anmeldung vergeben. Steht der Tunnel, kann ich über den Jupyter Notebook Client Juno auf den Master zugreifen und mich einloggen. Praktisch dabei: Juno zeigt schon bei der Verbindungskonfiguration an, ob der entfernte Host erreichbar ist.

Da ich ein Passwort für den Jupyter Notebook-Login gewählt habe, muss ich dieses auch in Juno eingeben.

Danach steht die Nutzung von Jupyter Notebooks auf EMR mit Speicherung im S3 nichts mehr im Wege.

Nach erfolgreicher Arbeit kann das Cluster mit Hilfe von boto3 auch wieder runtergefahren werden. Dazu speichert man seine Notebooks und wechselt wieder nach Pythonista um das entsprechende Stop-Script zu starten. Dieses nutzt die terminate_job_flow() um alle aktiven Cluster anzuzeigen und alle zu terminieren.

Quellen:

  • https://aws.amazon.com/de/blogs/big-data/running-jupyter-notebook-and-jupyterhub-on-amazon-emr/
  • https://bytes.babbel.com/en/articles/2017-07-04-spark-with-jupyter-inside-vpc.html
  • http://blog.yantrajaal.com/2017/04/emr-cluster.html

Nach Go kommt der Turing Test

Am Dienstagabend, zu besten europäische Sendezeit, zeigte Sundar Pichai, seines Zeichens CEO bei Google, in einer kleinen Demo die Zukunft digitaler Assistenten: Der Assistent ruft dabei bei einem Friseur an um einen Termin für seinen Nutzer abzustimmen. Egal ob dieser Anruf echt war, was Mr. Pichai beschwor, oder nicht. Es zeigt in eine ganz klare Richtung dessen Tragweite wir aktuell noch gar nicht abschätzen können: Google hat mit dieser kleinen Demo den Turing-Test bestanden. Vor fast 70 Jahren formulierte der britische Mathematiker Alan Turing ein Testszenario in dem ein menschlicher Fragesteller innerhalb eines Dialogs herausfinden sollte, ob der Gegenüber ein Mensch oder eine Maschine ist. Sollte der menschliche Proband nicht merken, dass es sich bei seinem Gegenüber um eine Maschine handelt, wäre der Beweis erbracht, dass die Maschine als intelligent anzusehen wäre. Auch wenn es zu dem Test uns seinen Randbedingungen noch einiges zu sagen gäbe, würde ich gern wieder zu der kleinen Demo von Google zurück kommen, denn was war passiert: Ein Computerprogramm ruft einen Friseur an und verabredet glaubwürdig, ohne das sein menschliches Gegenüber es merkt, einen Termin. Der Friseur zweifelt am anderen Ende des Telefons keine Sekunde, dass es sich hierbei um eine normale Terminvereinbarung handelt. Noch besser sieht man dies im zweiten Anruf, bei der mehr Interaktion gefordert ist, da der bevorzugte Termin nicht passt. Hier „entscheidet“ Googles Assistent im Rahmen seiner Vorgaben. Auch hier merkt der menschliche Akteur am anderen Ende der Leitung nichts. Doch was bedeutet es, wenn wir demnächst nicht mehr unterscheiden können, ob wir mit einer Maschine oder einem Menschen reden? Auch wenn man nur ein paar Anwendungsfälle im Kopf durchgeht wird man feststellen: Dadurch wird sich einiges ändern. Wer vor kurzem noch Siri, Cortana und Alexa als Spielerei abgetan hat, wird sich wundern wie schnell die Entwicklung voranschreiten wird. Auch Lee Sedol war sich vor dem ersten Spiel gegen AlphaGo sehr sicher, dass er das Programm schlagen wird. Zumal es vorher ja nur einen Europameister im Go besiegt hatte. Hier sollte man sich einfach klar machen: Sobald etwas mit derartigem wirtschaftlichem und gesellschaftlichen Potential funktioniert, wird es mit Hilfe aktueller Computertechnik skalliert werden.

PS.: Für das lange Wochenende sei die Dokumentation über AlphaGo auf Netflix empfohlen

Mit Amazon Rekognition Objekte auf Fotos erkennen

Seit November letzten Jahres bietet Amazon mit Rekognition einen Service an, welcher Objekte auf Bildern und Merkmale innerhalb von Gesichtern erkennen und benennen kann. Es gibt einen Weg, wie sich dieser Dienst auch direkt von einem iOS-Gerät ansprechen läßt. Vorausgesetzt man hat Pythonista installiert. Für die Nutzung der AWS-Dienste von Python aus wird das boto3 SDK genutzen. Für die Installation in Pythonista wird pip benötigt, welches in abgespeckter Form mit der StaSh-Shell mitkommt. Die Installation innerhalb von Pythonista ist zum Glück mit einem Einzeiler zu bewerkstelligen.

Danach öffnet sich nach der Ausführung von launch_stash.py, die StaSh-Shell und man kann mit pip install boto3 die nötigen Pakete installieren. Vor der Nutzung sollte Pythonsista einmal neu gestartet werden. Sollte man auf Fehler bei der Installation laufen, kann dies damit zu tun haben, dass pip vor kurzem komplett auf https umgestellt hat. Hier ist pip.py ggf. noch nicht auf dem neusten Stand und man muss dies selber nachholen.

Das Script für die Bilderkennung ist denkbar einfach: Ein Bild wird über das iOS-Clipboard in einen geeigneten S3-Bucket abgelegt und Rekognistion holt sich dieses Bild und macht darauf die entsprechende Objekterkennung.
Die Eigentliche Arbeit wird von der AWS Rekognition API gemacht. Der Funktionsaufruf detect_labels() mit dem Objektnamen des Bildes liefert, eine maximale Anzahl Labels für ein bestimmtes Konfidenzniveau zurück.
Mit Hilfe von Apples Workflow-App lässt sich dieser Prozess auch schön automatisieren und über die Oberfläche zugänglich machen. Dazu baut man sich aus einem Photo-Selektor und weiteren Actions (siehe Abbildung 4) einen einfachen Workflow zusammen, welcher das Skript ausführt und das Ergebnis der Objekt-Detektion ausgibt.
Das Ergebnis der Bildanalyse inkl. dem Eingabebild findet sich anbei.
 
Auf Grundlage von boto3 lassen sich in Pythonista auf iOS noch weitere, lustige Dinge tun, welche ich in einer der nächsten Blogeinträge beschreiben werde. Viel Spaß beim Experimentieren.

Machine Learning mit Notebooks und dem iPad Pro

Das iPad und vor allen Dingen das iPad Pro inkl. einer Tastatur machen schon einen richtig kleinen Rechner. Dank einer großen Auswahl qualitativ hochwertiger Apps lassen sich damit auch so mache Anwendungsfälle bearbeiten, bei denen man nicht zuerst an einen Tablet-Computer denkt. Die Rede ist von Machine Learning Anwendungen. In hatte an gleicher Stelle bereits einen Überblick über die verschiedenen Optionen und Möglichkeiten des iPads berichtet, wenn es um das Zusammenspiel mit Cloud-Anwendungen geht. 

Besonders einfach lässt sich explorativ mit Daten über Jupyter Notebooks arbeiten. Liegen die Daten eh schon in S3, bietet sich der Betrieb eines Jupyter Servers in Amazons Web Service an. Seit November letzten Jahres bietet AWS mit SageMaker einen noch einfacherern Zugang zu gemanageten Jupyter Notebooks inkl. einer kompletten Modelltrainings- und Deployment-Pipeline an. Starten lassen sich die Jupyter Notebooks ganz einfach mit einem gültigen AWS Account und über die Management Konsole von SageMaker.

Für den Zugriff wird lediglich eine entsprechende Nutzerrolle benötigt, welche auch auf den eigenen S3-Bucket Zugriff haben sollte. Darüber hinaus lässt sich die geünschte EC2-Instanz auswählen. Beim kleinsten Modell gewährt Amazon großzügigen Startrabatt. In den ersten 2 Monaten nach der Aktivierung des Dienstes können 250h der t2.medium-Instanz (2 vCPUs, 4GB RAM) kostenlos genutzt werden. Danach rechnet AWS minutengenau mit 0,05 USD oder 0,041 EUR die Stunde ab. Wer größere Instanzen benötigt bekommt auch GPU-basierte Instanz-Typen wie eine p3.16xlarge für stolze 37,016 USD oder 30 EUR die Stunde. Dann aber auch mit 8 Tesla V100 GPUs, 128GB GPU RAM, 64GB vCPUs und satten 488GB RAM. 

Nach dem Start des Servers findet man sich mit Hilfe von „open“ im gewohnten Jupyter Notebook Web UI wieder. Noch schicker, komfortabler und schneller lässt sich mit dem iPad Jupyter-Client Juno (im AppStore für 16,99 €) auf den so gestartetem Server zugreifen.

Und das ist noch nicht das Ende. Wie sich mit SageMaker Modelle und Dienste deployen lassen, soll Thema einer der nächsten Blog-Beiträge werden.

Impala vs. Hive mit LLAP

Im letzen Jahr durfte ich mich beruflich mit der Geschwindigkeitsmessung von Big Data Datenbanksystemen beschäftigen. Ziel war es herauszufinden, welcher der beiden konkurrierenden Ansätze von Hive und Impala besser mit einer Datenabfrage über Tableau zurecht kommt. Ein einfacher Benchmark à la TPC-DS wäre dabei nicht zielführend gewesen. Die dabei erzeugten Datensätze hätten nichts mit den Daten zu tun gehabt, welche im wahren Leben  zur Analyse anstanden. Wie genau wir bei diesem Benchmark auf echten Daten vorgegangen sind und welche Rolle JMeter dabei gespielt hat, erfahrt Ihr in der aktuellen iX oder unter online.

eBooks meine Liebe

Heute ist es soweit: Mein Praxiseinstieg Deep Learning aus dem O’Reilly Verlag ist ab sofort als eBook erhältlich. Im praktischen Kombiformat mit PDF, ePub und im Kindle Mobi-Format, sowohl ohne DRM direkt vom Verlag als auch mit DRM in den bekannten Internetgeschäften (Weltbild, Thalia, Amazon, Hugendubel). Die Produktion als eBook war mir ein wichtiges, persönliches Anliegen, da ich selber ein großer Anhänger elektronischer Bücher und Magazine bin. Angefangen hat es bei mir mit einem digitalen Abo der Zeit nach dem Studium. Dem Early Adoptor war geschuldet, dass man das erste eBook-Lesegerät noch von Amazon aus den USA importieren musste und die einzelnen Dateien umständlich über USB synchronisiert wurden (Kindle 2. Generation).

Als der amerikanische O’Reilly Verlag damit begann, immer mehr Bücher als eBooks zu verkaufen, fiel mir die Entscheidung gegen meine Billy-Regale und für einen neuen Kindle nicht schwer. Darüber hinaus kamen auch immer mehr Magazine wie die c’t, die iX, das Linux-Magazin, die Wired und sogar der Spiegel in der praktischen digitalen Ausgabe und liessen sich vor allen Dingen auf dem neuen iPad besonders praktisch lesen.

Mittlerweile lese ich kaum noch analog und freue mich immer wieder über die Platzersparnis meiner kompletten Bibliothek und mehrerer Jahrgänge, c’t, iX und DIE ZEIT die ich immer dabei haben kann.

Jetzt hat es auch mein eigenes Werk auf diese Platformen geschafft und ich bin gespannt ob die digitalen Leser von den Möglichkeiten der einfachen Suche, der direkten Verlinkung, der vergrößerten Ansicht von Abbildungen sowie der Möglichkeit von Querverweise regen gebrauch machen werden. Dazu kommt auch noch eine 20% Ersparnis gegenüber der Papierversion.

Viel Spaß mit den eBook-Formaten von Praxiseinstieg Deep Learning.

Schmuddelwetter, Strand, Bücher und der 34c3

Auch dieses Jahr zieht es mich über Weihnachten und Silvester ans Meer. Ganze 10 Tage Zeit sich um guten Essen, die Natur mit viel frischer Luft und einer Menge digitalen Inhalten zu kümmern. Folgende Werke stehen dieses Jahr ganz oben auf meiner Liste:

Los geht es mit einem Buch über DAS Retrogame schlechthin. Die Rede ist von NetHack. Geschrieben hat es bereits 2015 der amerikanische Autor David L. Craddock mit dem Titel  Dungeon Hacks: How NetHack, Angband, and Other Roguelikes Changed the Course of Video Games. Ähnlich wie Strangers Things von Netflix holt es auf 246 Seiten die 80er Jahre des letzten Jahrhunderts aus der Sicht eines Nerds zurück. Genau das richtige für das erste Runterkommen…

Über die Feiertage darf es natürlich auch etwas schwerere Kost sein. Hier habe ich schon seit einigen Monaten Das metrische Wir: Über die Quantifizierung des Sozialen aus dem Suhrkamp Verlag, von Steffen Mau auf meiner Liste. Das Thema Soziometrie muss jeden interessieren, der viel mit Daten zu tun hat. Sei es im Rahmen von eCommerce, CRM oder Online Marketing. Hier werde ich sicherlich dann auch etwas Zeit finden mich intensiver mit dem Thema Social Scoring zu beschäftigen, mit dessen Hilfe die Chinesische Regierung ihre Bürger „erziehen“ möchte.

Richtung Neujahr geht es auch wieder in Richtung Arbeit. Zur richtigen Einstimmung auf die technischen Herausforderungen 2018 werde ich Terraform: Up & Running von Yevgeniy Brikman zuende lesen. Dieses Tool bietet ein interessantes Abstraktionslevel beim Thema Infrastructure-as-Code und ist darüber hinaus Cloud-agnostisch.

Zwischen den Jahren findet, wie auch in den letzten  34 Jahren, der Chaos Computer Congress (CCC) statt. Dieses Mal in Leipzig. Die App erlaubt mir auch am Strand oder in er gemütlichen Teestube den Vorträgen auf dem 34C3 zu lauschen. Bei der Durchsicht des diesjährigen Fahrplans fand ich folgende Vorträge interessant: Zum Buch von Steffen Mau paßt der Vortrag ‚Gamified Control?‘ von Katika Kühnreich am 1. Tag. Etwas unterhaltsamer wird sicherlich der Vortrag Unleash your smart-home devices: Vacuum Cleaning Robot Hacking von Daniel Wegemer. Das Thema DSGVO und ePrivacy wird nächstes Jahr so ziemlich jeden ITler in der EU beschäftigen. Ein interessanter Vortrag zu dem Thema scheint die Lobby-Schlacht um die ePrivacy-Verordnung von Ingo Dachwitz zu werden. Die Digitale Fotografie hat in den letzten Jahren die Nutzung analogen Filmmaterials für Privatpersonen nahezu vollständig verdrängt. Zu praktisch ist es die Bilder gleich zu sehen, zu verändern und zu teilen ohne sie erst teuer entwickeln zu müssen. Doch muss die Digitalisierung nicht bei den Urlaubsfotos halt machen. Jean Runtoul wird in seinem Vortrag über Low Cost Non-Invasive Biomedical Imaging einen Blick auf die Möglichkeiten biomedizinischer, digitaler Bildverarbeitung bieten. Leider ist es nicht so leicht die eigenen Daten aus Geräten von FitBit zu bekommen. Wie es doch geht zeigt Daniel Wegener mit Doping your Fitbit. Mein Retro-Herz wird spätestes beim Vortrag von Harald Welte über BBSs and early Internet access in the 1990ies schlagen. Etwas ernster wird es dann sicherlich bei Hendrik Heuers Beeinflussung durch Künstliche Intelligenz gehenDeep Learning Blindspots von Katharine Jarmul interessiert mich schon von Berufswegen her. Interessant fand ich auch die Ankündigung von A hacker’s guide to Climate Change – What do we know and how do we know it? von seyru, Sven Wilner und Robert Gieseke. Auch über das Thema Cryptowährungen werde ich etwas recherchieren. Passend dazu werde ich mich dann noch cryptocurrencies, smart contracts, etc.: revolutionary tech? von Zooko ansehen.

Und dann geht es vermutlich auch schon wieder ab nach Hause und in ein hoffentlich gesundes und erfolgreiches Jahr 2018!

Deep Learning mit dem iPad (und der Cloud)

Viele Entwickler versuchen ihre Arbeitsprozess ihres Mac Book Pros auf iPads umzustellen (siehe Quellen). Die Gründe dafür sind:

  • Mac Book Pros sind nicht immer so portable wie man es gern hätte (Gewicht)
  • Die Akkulaufzeit der Mac Book Pros ist im Vergleich zum iPad gefühlt nur halb so gut
  • Selbst ein iPad Pro kostet nahezu die Hälfte eines Mac Book Pros  (1000 EUR vs. 2000 EUR)
  • iPads gibt es mit eingebautem LTE für noch freieres Arbeiten jenseits des Firmen-WLANs
  • Das iPad wird auch im Dauerbetrieb nicht heiß und benötigt daher keinen Lüfter
  • Seit iOS 11 und der Möglichkeit des Multitasking können mehr als eine Anwendung gleichzeitig genutzt werden

Daneben arbeiten immer mehr Entwickler und Data Scientists in virtualisierten Umgebungen auf Servern in der Cloud oder innerhalb von Docker Containern. Diese Arbeitsweise ähnelt dabei stark der Terminalbenutzung aus den 70er Jahren des letzten Jahrhunderts. Das iPad dient als Fenster zu den Anwendungen, die auf einem Server VM oder einem Docker Image beherbergt sind. Der große Unterschied liegt jedoch in der Verfügbarkeit mächtiger Werkzeuge auf iOS-Seite und der Verfügbarkeit vorkonfektionierter Maschinen mit alle nötigen Entwicklungstools.

Deep Learning auf dem Server

Amazon Web Service, Google Cloud und auch Microsoft Azure bieten die Möglichkeit einfache, vorkonfektionierte Images zu starten. Im Folgenden möchte ich mich auf die Nutzung der Amazon Cloud beschränken. Für andere Anbieter oder gar einfach Hoster gilt ein ähnliches Vorgehen. Amazon bietet mit dem AWS Deep Learning AMI (DLAMI) eine Sammlung der beliebtesten Werkzeuge für diesen Bereich. Enthalten sind neben Microsofts CNTK, Apaches MXNext, Facebooks Caffe2, Keras, PyTorch, Theano und TensorFlow und die Möglichkeit zu Nutzung von Jupyter Notebooks. Das gut daran ist nicht nur, dass man sich die Installation der entsprechenden Softwarepakete spart und Amazon versucht diese auf einem aktuellen Stand zu halten. DKAMI beinhaltet darüber hinaus auch alle nötigen Treiber und Pakete für die Nutzung von NVIDIAs GPUs innerhalb entsprechender Instanzen. Preise für die Nutzung einer DLAMI Instanz in der Region EU (Ireland) finden sich hier.

DLAMI starten

Um mit dem Amazon Web Service zu arbeiten setzt es entweder einen Webzugang zur Amazon Console oder der Nutzung der AWS-CLI voraus. Die iOS-App AWS Console ermöglicht das Management der Mietinfrastruktur über eine native Anwendung. Mir lässt sich in wenigen Schritten das nötige AMI provisionieren.

Der Instanztyp lässt sich dabei ganz nach belieben und zu bewältigender Aufgabe lösen. Preislich lässt sich mit einer einfachen t2.medium Instanz für $36/Monat oder $0,05 Stunde starten für 4 GB RAM und 2 vCores. Größere Instanztypen wie zum Beispiel ein p3.16xlarge kommt mit 488 GB RAM, 25 Gbit Ethernet, 64 vCores und 8 NVIDIA GPUs für rund $26/h oder $19.000/Monat. Die SecurityGroup der Instanz sollte für SSH (Port 22), Jupyter Notebook (Port 8888) und für das von Mosh verwendete UDP (Port 60000 – 61000) freigeschaltet werden.

Mobile arbeiten benötigt eine flexible Shell

Mobiles arbeiten heisst für mich, dass ich das iPad inkl. BlueTooth Tastatur im Büro zuklappe mich in die nächste S-Bahn setzte und dort ggf. weiterarbeiten kann ohne das die SSH-Verbindung beim Übergang vom Firmen-WLAN in ein 3G/4G-Netz einfach abbricht. Das funktioniert mit normalem TCP-basiertem SSH leider nicht. Abhilfe schafft die Mobile Shell oder kurz Mosh des MITs. Diese basiert auf UDP und kommt mit sich ändernden IP-Adressen wunderbar klar. Darüber hinaus puffert MOSH Eingaben auch, so dass man in der Regel von langsamen Verbindungen nichts zu spüren bekommt. Mit Blink gibt es auch eine iOS-Implementierung die zwar nicht billig ist (21 EUR) aber jeden Cent wert, wenn man Zeit bei der Neuinitialisierung bei Verbindungsabbrüchen sparen kann. Für die Installation innerhalb des DLAMIs reicht ein einfaches

$ sudo apt-get install mosh

Um Mosh innerhalb der Blink Shell zu nutzen sollte sowohl ein neuer SSH-Key als auch ein Host eingerichtet werden.

Über den <host> lässt sich dann direkt die Verbindung in der Blink Shell auf den Host aufbauen

Nach dem Start lässt sich zum Beispiel TensorFlow wie folgt nutzten. Als erstes aktiviert man die entsprechende Version mit

$ source activate tensorflow_p36

und erzeugt dann eine einfache Testanwendung mit Hilfe von vim, zum Beispiel mit folgendem Inhalt:

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

Danach kann die TensorFlow-Anwendung mit

$ python3 tensorflow-hello.py

ausgeführt werden.

Editor und Git

Das Thema Code-Editor lässt sich auf vielfachem Weg lösen. Generell gibt es aus Sicht des iPad-Nutzers folgende Szenarien:

  1. Ein lokaler Editor ermöglicht die Code-Änderung z.B. innerhalb eines (Remote-) Git-Repositories
  2. Man nutzt eine Cloud-IDE wie Cloud9 von AWS
  3. Man nutzt ein sauber konfigurierten VIM innerhalb seines AMIs

Als lokaler Editior hat sich der Buffer Editor für iOS bewährt. Dieser unterstützt auf iOS eine Reihe von Diensten wue GitHub, GitLan, iCloud, DropBox, Googel Drive, FTP, SSH und SFTP für den Datenaustausch. Darüber hinaus unterstützt er eine Reihe von VIM-Kommandos und bringt eine große Anzahl unterstützter Programmiersprachen mit. Die von mir benötigten sind Bash, Java, Python und SQL. Benötigt man mehr Freiheitsgrade bei der Konfiguration des eigenen Editors, bietet sich Möglichkeit 3.) an. Auf dem DLAMI lässt sich VI/VIM installieren und entsprechend konfigurieren. Hierbei lassen sich dann auch alle erdenklichen Erweiterungen nutzen. Ich habe dazu folgende .vimrc auf dem DLAMI geschoben.

Jupyter Notebook Server

Auch ein Jupyter Notebook lässt sich im DLAMI betreiben. Wichtig ist nur, dass man diesen richtig absichert, da sonst jeder aus dem Internet Zugriff auf die Notebooks hätte. Am besten erzeugt man sich erstmal ein geeignetes SSL-Zertifikat und ein Passwort für den Schutz des Notebooks. Mit

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "cert.key" -out "cert.pem" -batch

erzeugt man das Zertifikat und mit Hilfe von ipython erzeugt man einen Passworthash:

$ ipython
iPythonPrompt> from IPython.lib import passwd 
iPythonPrompt> passwd()

Beide Teile trägt man unter .jupyter in die Konfigurationsdatei ein und startet den jupyter server mit

$ jupyter notebook

Weitere Tools

Es gibt noch eine Reihe weiterer Tools, welche sich für die Arbeit mit dem iPad und der Cloud eignen. Statt Blink lässt sich auch mit Panics (https://panic.com) Prompt 2 (https://panic.com/prompt/) arbeiten, besonders wenn man keine Mosh benötigt. Freunde dieses Tools können auch gleich mit Coda aus gleichem Hause arbeiten. Eine weitere, leistungsfähige Terminal-Anwendung stellt Terminus dar. Nachteil im Gegensatz zu Blink ist, dass Terminus nur als Abo erhältlich ist. Möchte man seine GitHub-Repros auf iOS intuitiver verwaltet, bietet sich iOctocat an. Für die lokale Python Entwicklung empfiehlt sich Pythonista auf dem iPad. Und wer einen schönen Jupyter Notebook Client unter iOS haben möchte, kann zu Juno greifen. Schliesslich lohnt auch noch ein Blick auf Editorial, wohl einem der leistungsstärksten (Markdown) Editoren unter iOS.

Quellen

https://stories.appbot.co/hey-apple-i-tried-the-ipad-pro-as-a-dev-machine-its-almost-awesome-830e424bbed3
https://stories.appbot.co/hey-apple-i-tried-the-ipad-pro-as-a-dev-machine-its-almost-awesome-830e424bbed3
https://jann.is/ipad-pro-for-programming/
https://www.martenbjork.com/blog/2017/6/21/web-development-on-the-ipad-pro
http://decoding.io/using-ipad-pro-as-a-web-developer/
https://blog.ouseful.info/2014/12/12/seven-ways-of-running-ipython-notebooks/
http://keeganhin.es/blog/ds.html