Blog

News, Technik, Entwicklung, Tutorials & mehr!

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

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

 

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

Reaktive Systeme sind Computersysteme die kontinuierlich auf ihre Umgebung reagieren. Der in diesem Zusammenhang geprägte Begriff des Aktorenmodells wurde erstmals in den frühen 1970er Jahren von Carl Hewitt verwendet. Sein mathematisches Model beschreibt ein universales Verfahren zur parallelen Programmierung.  Er war seiner Zeit weit voraus, da zu diesem Zeitpunkt die Rechner noch nicht leistungsfähig genug waren. Das Modell wurde erstmals 1987 in der Programmiersprache Erlang von Ericsson verwendet. Durch den Einsatz der Technologie konnte Ericsson einen Switch mit einer Zuverlässigkeit von 99,999999999% bauen. Dies entspricht einer Ausfallzeit von unter 0.65 Sekunden in 20 Jahren. In den nachfolgenden Jahrzehnten stieg die Leistung der Computer immer weiter an. Anfang des neuen Jahrtausends erreichten die Prozessoren mit den eingesetzten Materialien ihre maximale Taktfrequenz. Prozessorhersteller, wie Intel und AMD, bauten fortan Prozessoren mit mehreren Prozessorkernen bei gleichbleibender Taktfrequenz. Einerseits kann die Hitzeentwicklung bei noch höheren Taktraten mit herkömmlichen Mitteln nicht mehr bewältigt werden. Andererseits kommt es bei immer kleineren Transistoren zu quantenmechanischen Seiteneffekten. Heute erhöhen die Hersteller die Anzahl der Kerne pro CPU, um dennoch eine Leistungssteigerung der CPUs zu erreichen. Dadurch steigt die Relevanz von paralleler Programmierung, da die Berechnung der Algorithmen auf mehrere CPU-Kerne verteilt werden muss. Die Entwicklung von Software mit mehreren Threads, oder über mehrere Rechner hinweg, ist für Entwickler mit vielen Problemen verbunden und kompliziert. Dies ist unter anderem auf die Speicherverwaltung der Threads und Prozesse zurückzuführen. Als Folge entstehen in den letzten Jahren immer mehr reaktive Frameworks für moderne Programmiersprachen, wie zum Beispiel akka für Scala und Java. Reaktive Frameworks bieten dem Entwickler aber weitaus mehr, als nur einfache Parallelisierung über mehrere Prozesse und physikalische Knoten. Mithilfe der Frameworks lassen sich hochskalierbare, fehlertolerante Systeme entwerfen. In diesem Blogbeitrag, wollen wir das Aktorenmodell genauer betrachten.


Der Entwurf von nebenläufigen Anwendungen stellt seit Jahren eine Herausforderung dar, für die es keine einfache Lösung gibt. Das Aktorenmodell stellt eine erprobte und vergleichsweise einfache Weise dar, nebenläufige Algorithmen umzusetzen. Das Aktorenmodell ist ein Architekturmuster, dass auf Basis von Nachrichtenaustausch (=Message Passing) eine verteilte Applikation ermöglicht, ohne dabei einen geteilten Zustand (=Shared State) mit mehren Aktoren zu benötigen. Das Aktorenmodell ist vielfach implementiert, teils in funktionalen Sprachen wie Erlang, teils als Frameworks wie akka oder libcppa. Ein Aktor ist ein leichtgewichtiger und autonomer Prozess. Dem Aktor können Nachrichten geschickt werden, für die er ein eigenes Verhalten bereit hält, welches sich zur Laufzeit in der Regel nicht verändert. Ein Aktor arbeitet dabei immer nur eine Nachricht gleichzeitig ab. Das Aktormodell ist nicht an spezielle Datenstrukturen gebunden, sodass Aktoren lose gekoppelt untereinander kommunizieren können. Leichtgewichtig ist ein Aktor, da er kein eigenen Prozess besitzt, sondern zum Verarbeiten einer Nachricht einen Prozess zugewiesen bekommt. Aktoren nutzen die verfügbaren Ressourcen eines Threads optimal aus und blockieren die Verarbeitung nicht. 

Aktorenmodell Actors akka

Die Abbildung zeigt ein beispielhaftes Netz von Aktoren. Jeder Aktor hat seine eigene Mailbox und einen isolierten Zustand. Basierend auf seinem definierten Verhalten antwortet der Aktor mit dem versenden einer eigenen Nachricht oder erstellt eigene Aktoren und ändert sein zukünftiges Verhalten. Zusammengefasst definiert sich ein Aktorsystem durch folgende Eigenschaften:

  • Ein Aktor kann andere Aktoren erschaffen und mit ihnen kommunizieren.
  • Jeder Aktor hat einen eindeutigen Namen, der als Adresse bei der Kommunikation verwendet werden kann. (in akka)
  • Die Kommunikation zwischen Aktoren basiert auf dem Senden von asynchronen, unveränderbaren (=immutable) Nachrichten an andere Aktoren.
  • Die Nachrichten werden zur Verarbeitung in einer Mailbox gepuffert. Sie ist eine Queue mit n Produzenten (Senderaktor) und einem Konsumenten (Empfängeraktor)
  • Abhängig von der Reihenfolge, den Prioritäten oder dem internen Zustand werden die Nachrichten mittels Pattern Matching von internen Funktionen verarbeitet, die die Ergebnisse ihrerseits wieder als Nachrichten versenden. 

Akka bildet das Aktorenmodell als Framework für die JVM ab. Es wird häufig in den Programmiersprachen Scala und Java verwendet und wurde erstmals im Juli 2009 bei GitHub von Jonas Bonér veröffentlicht. Ein Aktor ist in akka die kleinste Einheit im System und übernimmt in der Regel eine bestimmte Aufgabe. Dabei kann der Aktor seinen Zustand, und damit das Verhalten beim Eintreffen bei weiteren Nachrichten, verändern. Der Zustand eines Aktors wird durch die Werte seiner Variablen definiert. Diese Werte können ausschließlich durch eingehende Nachrichten anderer Aktoren geändert werden. Da es keine gemeinsamen Speicherbereiche mit anderen Aktoren gibt, ist gewährleistet, dass der Zustand eines Aktors nicht durch Zugriffe von außen manipuliert werden kann. Sollte ein Aktor durch einen Fehler zum Absturz gebracht werden, kann der Supervisor, also der Erzeuger des Aktors, den Aktor neu initialisieren und wiederherstellen. Das Verhalten eines Aktors bezeichnet die Logik die beim Eintreffen einer Nachricht ausgeführt wird. Die Logik kann jederzeit als Reaktion auf eine Nachricht verändert werden. Jeder Aktor hat genau eine Mailbox für den Empfang von Nachrichten. Die Mailbox ist standardmäßig eine First In – First Out (FiFo) Queue. Die Queue der Mailbox kann in akka so konfiguriert werden, dass bestimmte Nachrichten priorisiert bearbeitet werden. Auch die Größe der Queue ist frei definierbar.   

akka bietet noch viele weiter Vorteile, die in vielen verschiedenen Blogbeiträgen im Internet und in einschlägigen Büchern beschrieben werden. Dazu zählen unter anderem der Remotezugriff oder das Clustering. Diese Fähigkeiten, macht akka zu einem hervorragendem Framework für moderne Microservices. Häufig findet man akka im sogenannten SMACK Stack wieder - SMACK steht hierbei für Spark, Mesos, akka, Cassandra, Kafka. Dieser Stack ist die Basis für unser Fast Data System bei croGoDeal.


Reaktive Programmierung ist aktuell wie nie zuvor. Der Begriff ist allerdings nicht genau definiert. Somit bezeichnen sich viele Applikationen als reaktiv, die es gar nicht sind. Reaktive Programmierung wird häufig mehr als Buzzword für eine spezielle Art von asynchrone Programmierung verwendet. Die vermutlich am besten passende Beschreibung einer reaktiven Architektur liefert das Reactivo Manifesto. Das möglichst einfache Erreichen der Ziele des Reactivo Manifestos verfolgen diverse Frameworks. Eines der besten für Java und Scala ist derzeit akka. Es ist mit verhältnismäßig einfachen Mitteln möglich antwortbereite, widerstandsfähige, elastische und nachrichtenorientierte Systeme auf Basis der JVM zu implementieren. Ein Java oder Scala Softwarearchitekt für skalierbare Applikationen sollte sich unbedingt erweiterte Kenntnisse in akka aneignen und das Framework in seine Planung mit einbeziehen.   

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

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.

 

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

Heute haben wir ein neues Projekt auf der github Seite von innFactory und auf dem npm innFactory Account veröffentlicht. Mithilfe von „react-native-aws-mobile-analytics“ lässt sich AWS Mobile Analytics kinderleicht in react-native Apps integrieren. 

Das SDK wurde von Anton für unsere croGoDeal App in Anlehnung an das originale AWS Mobile Analytics JS SDK entwickelt und jetzt OpenSource veröffentlicht. Der Einstieg sollte auch für neue Entwickler sehr einfach sein. Bei Fragen und Problemen stehen wir euch natürlich über den Issue-Tracker in github zur Verfügung. 

SDK in croGoDeal

Wie bereits erwähnt verwenden wir das SDK selbst für die Analyse und das UI/UX Tracking unserer User in croGoDeal. Neben den gängigen KPI wie "Daily Active User" oder "Monthly Users", können wir mit AWS Mobile Analytics auch A/B Tests und UI/UX Tests über das Toolkit auswerten. Die Tests sind für unsere croGoDeal App und die Strategie der Softwareentwicklung sehr wichtig, damit wir in unsere Hypothesen aus unseren Minimal Viable Products (MVP - Lean Startup) schnell verifizieren oder falsifizieren können. Eine ausführliche Studie, ob sich der geplante Nutzen so eingestellt hat wie erhofft, veröffentlichen wir zu einem späteren Zeitpunkt nach den ersten paar Releases der App.

Projekt auf github:

https://github.com/innFactory/react-native-aws-mobile-analytics

 

Komplettes Beispiel:

https://github.com/innFactory/react-native-aws-mobile-analytics-demo

 

NPM Package:

https://www.npmjs.com/package/react-native-aws-mobile-analytics

 

Previous Next

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

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.

 

 

 

 

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

Der technische und digitale Wandel rast und treibt die Globalisierung voran. Regelmäßig werden neue Technologien auf den Markt gebracht und bestehende optimiert. Das lässt uns so effizient arbeiten wie nie. Beide Megatrends stellen sowohl Unternehmen, als auch Arbeitnehmer vor große Herausforderungen. Doch was genau ändert sich? Und wie sehen Studenten - die Arbeitnehmer von Morgen - diesen Wandel? 

Im März 2017 hat Campusjäger im Rahmen des dritten Puls-Checks deutschlandweit 1.000 Studenten online befragt. Es wird deutlich: Die befragten Studenten sind sich ihrer zukünftigen Karriere sicher. Mehr als zwei Drittel der Befragten rechnet sich beruflichen Erfolg in der künftigen Arbeitswelt aus.

Vor allem die angehenden Techniker, Informatiker und Ingenieure sind optimistisch. Mehr als 90 Prozent der Studenten dieser Fachrichtungen glauben künftig gute Karrierechancen zu haben. Weniger rosig sehen Studenten der Geistes- und Sozialwissenschaftler ihre Aussicht auf Erfolg: 30 Prozent der künftigen Geisteswissenschaftler und 23 Prozent der Sozialwissenschaftler glauben keine guten Chancen auf dem künftigen Arbeitsmarkt zu haben.

arbeitswelt 4.0

Vieles wird sich ändern

Die befragten Studenten sind sicher, dass sich künftig viel in der Arbeitswelt verändern wird. Nur ein Prozent der Befragten glauben, dass alles beim Alten bleibt.

Die Teilnehmer der Studie rechnen vor allem mit einer Veränderung des täglichen Arbeitsumfelds und vereinfachten Arbeitsabläufen.

Kritiker beider Megatrends befürchten, dass in der Zukunft viele Menschen durch intelligente Maschinen ersetzt werden. Eine künftig hohe Arbeitslosenquote, ist für die befragten Studenten allerdings wenig wahrscheinlich. 

Richtig reagieren

Um in der künftigen Arbeitswelt erfolgreich zu sein ist lebenslanges Lernen essentiell. Auch die Mehrheit der Befragten plant, sich innerhalb des eigenen Kompetenzbereichs weiterzubilden, um auf dem Arbeitsmarkt bestehen zu können. Sich umfassend über Industrie 4.0 und Digitalisierung zu informieren halten die befragten Studenten für die zweitwichtigste Reaktion auf beide Megatrends. Die befragten Studenten rechnen sich gute Chancen in der künftigen Arbeitswelt 4.0 aus. Ein künftiger Branchenwechsel kommt für die Minderheit der Studenten in Frage.

Wichtige Kompetenzen

Die Teilnehmer des Puls-Checks sehen einen Mix aus Soft-und Hard-Skills als Rezept für künftigen beruflichen Erfolg. 

Neben technischem und informatischem Verständnis, halten die befragten Studenten vor allem die Soft-Skills Flexibilität, Leistungsbereitschaft und Sozialkompetenz für künftige Kernkompetenzen. Kreativität und logisches Denken rückt für die Befragten in den Hintergrund

Kurz gesagt

Die Ergebnisse des Puls-Checks zeigen: Industrie 4.0 und Digitalisierung wird von einem Großteil der Studenten als Chance empfunden. Die Befragten glauben nicht an eine hohe Arbeitslosenquote in der Zukunft. Auffällig an den Antworten der Studie ist, dass Studenten eine Mischung aus fachlichen Fähigkeiten und Soft-Skills als künftige Kernkompetenzen ansehen. Die Augen zu schließen und sich auf die Zukunft zu freuen, reicht allerdings nicht aus.  Informieren, weiterbilden und fokussieren lautet die Devise der Studenten für künftigen beruflichen Erfolg. 

 

Ab 2018 suchen wir für innFactory Werkstudenten und Absolventen, die unser Team in den Bereichen der Softwareentwicklung und des Vertriebs unserer Plattform croGoDeal unterstützen.

Kategorien

  • News
  • Gastbeiträge
  • Data Science & Engineering
  • Software Engineering
  • innoVation:now

Blogbeiträge

Der Blog!

In unserem Blog erklären wir diverse Technologien, verweisen auf interessante Webcasts und informieren Sie über Neuigkeiten im Umfeld von innFactory und unseren Produkten.