• 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.

  • 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

     

  • In dem Artikel "Das Potential von Sprachsteuerung" haben wir die Bedeutung von Sprachsteuerung erläutert. Nun wollen wir uns der technischen Seite widmen und erklären, wie man mit Hilfe von Api.ai Sprachsteuerungen entwickelt. Api.ai hat sich seit 2014 auf Sprach- und Chatbots spezialisiert und gehört seit 2016 zu Google. Mit der angebotenen Technologie lassen sich Konversationen zwischen Mensch und Maschine designen und in verschiedenste Dienste wie Alexa, Slack, Twitter, Facebook und viele weitere integrieren. Api.ai setzt im Hintergrund Maschine Learning ein, um die genaue Intension einer Sprach- oder Texteingabe zu verstehen. Dadurch bietet Api.ai eine erstaunliche Interpretationssicherheit und bildet eine ideale Basis auch für unternehmerische Anwendungsfälle.

    Umsetzung eines UseCases in Dialogflow (Api.ai)

    Für die ersten Schritte in Api.ai Dialogflow, wie die Erstellung eines Projekts bzw. eines „Agents“ wird eine ausführliche Dokumentation angeboten. (https://api.ai/docs/getting-started/basics)

    Richtig spannend wird es bei der Erstellung sog. „Intents“. Ein Intent ist gewissermaßen die Definition einer Funktionssignatur. Wird ein Sprach- bzw. Textbefehl von einer Benutzeranwendung an Api.ai gesendet, findet Api.ai mit Hilfe seiner Machine Learning Algorithmen die entsprechende Signatur und sendet den Namen der Funktion und ggf. die zugehörigen Parameter zurück an die Benutzeranwendung. Die Benutzeranwendung kann danach die Funktion ausführen und dem Benutzer das gewünschte Ergebnis liefern.

    Um den Ablauf zu veranschaulichen nehmen wir als UseCase eine Shopping App, in der der Benutzer Angebote von unterschiedlichen Märkten einsehen kann. Im folgenden Screenshot sieht man, wie ein Intent in Api.ai aussehen kann:

    Als erwarteter Sprachbefehl wird „Angebote von Rewe“ festgelegt, wobei Rewe einen Parameter darstellt und somit variabel ist. Durch das Machine Learning versteht Api.ai auch verwandte Aussagen, wie z.B. „Deals von Rewe“ oder auch „Schnäppchen bei Rewe“. Als Rückgabe wird der zugehörige Funktionsname (Action) „search_deals“ mit dem Parameter „Shop = Rewe“ zurückgegeben.

     

    ApiAi.setConfiguration("4xxxxxxxe90xxxxxxxxc372", ApiAi.LANG_GERMAN);

    Neben Englisch und Deutsch werden viele weiter Sprachen unterstützt. Eine Auflistung befindet sich in unserer GitHub-Dokumentation: https://github.com/innFactory/react-native-api-ai#supported-languages Als nächstes wird mit dem simplen Aufruf von „startListening“ der Sprachbefehl aufgenommen und direkt mit Api.ai verarbeitet:

    ApiAi.startListening(result=>{ console.log(result); }, error=>{ console.log(error); }); 

    Fazit

    Mit Api.ai ist es möglich professionelle Sprachsteuerungen zu entwickeln. Unsere React-Native Library „react-native-api-ai“ liefert dazu eine einfache Integration für entsprechende Mobile Apps.