• Apache Spark

    In Deutschland ist das Thema Big Data, also die Verarbeitung von großen Datenmengen, zunehmend interessanter geworden. Durch die zunehmende Einführung der Industrie 4.0 und der damit verbundenen Digitalisierung generieren Unternehmen zunehmend mehr Informationen als noch vor zehn Jahren.

    Auch die E-Commerce Plattform Amazon nutzt generierte Informationen um das Kaufverhalten von Kunden analysieren zu können. Amazon verwendet unter anderem Apache Spark zur Analyse dieser Informationen.

    Apache Spark ist eine Open-Source-Lösung der Apache-Foundation. Ursprünglich an der kalifornischen Universität Berkeley entwickelt, wurde das Cluster-Computing-Framework 2010 von Apache übernommen und stetig weiterentwickelt. 

    Spark ist eine modular aufgebaute Plattform für schnelle Datenanalysen. Es gibt Module für die Arbeit mit SQL, Streamingdaten, Graphen und Maschinlearning Algorithmen. Das Framework bringt zahlreiche Schnittstellen für Programmiersprachen mit. So können Sparkprogramme in den Programmiersprachen Python, R, Scala und Java programmiert und anschließend in Spark-Cluster verteilt und ausgeführt werden.

    Nachfolgende Abbildung verdeutlicht den Aufbau von Apache Spark grafisch.

     

    Spark Stack
    Spark Stack

     

    Wir nutzen Apache Spark unter anderem für die Berechnung unseres Recommender Systems in unserem Produkt croGoDeal.

  • Im Rahmen eines Kundenprojektes besuchte Tobias vergangene Woche die Scaladays in Kopenhagen. Zusätzlich besuchte er ein Meet-Up von Lightbend zum Thema Fast Data Plattform und die Typelevel Summits, die unmittelbar nach den Scaladays stattgefunden haben. In Zahlen konnte Tobias 25 verschiedene Talks von Speakern aus der ganzen Welt sehen. Insgesamt also sehr viel neuer Input in den Bereichen Scala, akka, play und co. 

    Neben vielen Themen in den Bereichen von Streaming Data (akka streaming, fast data plattform) und Microservices (CQRS, Datenvalidation mit Cats) war auch der neue Scala Compiler Dotty ein großes Thema der Konferenz. Die angesprochenen Verbesserungen sind alle sehr vielversprechend. Neben mehr Geschwindigkeit bei der Compilezeit wird die Sprache Scala an sich klarer und in unseren Augen weiter stark verbessert. 

    Ein für unser noch eher neues, aber dennoch sehr interessantes Framework ist scala meta. Das scala meta Livecoding in Form einer Erweiterung für REST APIs, war ein tolles Beispiel von Pathikrit Bhowmick. Der beste Talk der Konferenz kam in unseren Augen von Gabriele Petronella („Monad transformers down to earth“). Eine ähnlich gute Erklärung zu Monaden ist uns in Scala bisher nicht bekannt gewesen. 

    Für unser Projekt croGoDeal von großem Interesse waren auch die Talks von IBM zu Spark, sowie von Salesforce zu deren Plattform Einstein und der Spark Erweiterung namens Optimus Prime. Wir hoffen, dass diese typsichere Erweiterung von Spark in absehbarer Zeit als Open-Source Projekt veröffentlicht wird, sodass man dieses hervorragende Tool auch außerhalb von Salesforce benutzen kann.

    Alle Talks der Konferenz findet man auf dem YouTube Channel der ScalaDays.

     

     

     

     

  • Heute fand das AWS Artificial Intelligence Bootcamp in den VW:Datalab in München statt. Wir waren selbstverständlich vor Ort und haben viel Neues über Deep Learning bei Amazon Web Services gelernt. Neben den AWS AI Diensten Polly, Lex, Recognition und der Machine Learning Plattform selbst, wurde viel über die Technik hinter den Diensten erzählt. Auch das Recommendation System von Amazon basiert auf modernen Deep Learning Algorithmen. Ähnlich wie die anderen großen Hersteller hat auch Amazon ein Open Source Framework für diese Aufgabe.

    MXNet als KI Treiber von Amazon

    Amazon ist der größer Contributor von Apache MXNet. MXNet ist ein skalierbares Deep Learning Framework, das stark an TensorFlow, Caffe, und co. erinnert. Ein Deep Learning Framework zeichnet sich meist dadurch aus, dass es besonders gut mit Matrizen bzw. "Tensoren" umgehen und rechnen kann. MXNet optimiert ähnlich wie Spark auch den Computationgraph und verbessert so die Laufzeit um ein vielfaches.

    Künstliche Intelligenz ersetzt Maschinen 

    Insgesamt war der Tag in München ein voller Erfolg für uns. Teile des neu erworbenen Wissens können wir direkt in unserer Plattform croGoDeal verwenden, auch wenn diese in Scala und nicht in Python programmiert ist/wird. 

    Abschießend zum Event hat einer der Speaker von Amazon Web Services noch interessante Rechenexempel zur künstlichen Intelligenz bzw. zur Singularität gezeigt:

    Ein Mensch kann ca. 10^15 Operationen/s ausführen. Wollte man diese Kapazität mit einem Deep-Learning Netz bei AWS buchen, würde dies knapp 105.000$/h kosten. Alleine für das Training für ein gutes Deep-Learning Model wären schon 3 Wochen nötig. Dieses Beispiel zeigt sehr gut, dass der Mensch wohl doch noch nicht von Maschinen ersetzt wird. Man sollte aber dennoch nicht die „Moorschen Gesetze“ vergessen.

     

  • Wir haben auf github eine erste Alpha Version unseres Machine Learning Tools "akka-lift-ml" unter der Apache 2.0 Lizenz veröffentlicht. Das Tool setzt nach der Arbeit eines Data Scientist an und übernimmt einen Großteil der Aufgaben im Betrieb von ML Systemen. Häufig spricht man auch von Data Engineering. akka-lift-ml ist in Scala geschrieben und erweitert eine lokale Spark Instanz für die Trainingsresultate. Das Training selbst kann auf jedem über das Netzwerk erreichbare Spark Cluster durchgeführt werden.

    Damit das Tool die Machine Learning Aufgaben erfolgreich umsetzten kann, müssen die Daten vollständig bereinigt worden sein. Dies lässt sich beispielsweise mit Spark Streaming oder akka Streaming in nahezu Echtzeit erledigen (FastData Processing). Wenn die Daten im richtigen Format, zum Beispiel csv auf HDFS oder S3, abgelegt worden sind, kann das Training direkt beginnen. Das gesamte Tool wird im Betrieb über REST Schnittstellen oder Aktoren gesteuert und als Docker Container ausgeliefert. So können beispielsweise über HTTP POST neue Trainingsläufe gestartet werden, neue beste Parameter gefunden werden und auch mit HTTP GET auf die Ergebnisse der vergangenen Trainingsdurchläufe zugegriffen werden. Sollte der Microservice abstürzen, wird automatisch das letzte trainierte Model von einer Quelle wie S3 oder HDFS geladen. 

    Derzeit unterstützt das Tool lediglich den ALS (Alternating Least Squares) Algorithmus für Collaborative-Filtering. Dieser wird sehr häufig im Bereich Recommendersysteme eingesetzt. Weiter Algorithmen wie für lineare Regression sollen ergänzt werden. 

    Wünsche, Anregungen und Verbesserungsvorschläge können Sie uns gerne über github zukommen lassen.

    Weitere Informationen und eine QuickStart Guide finden sie in der Beschreibung oder im Wiki System auf github:

    https://github.com/innFactory/akka-lift-ml