Steckbrief: Machine Learning Tools

Library für Maschinelles Lernen mit Spark: MLlib

Xiangrui Meng

© Shutterstock / Daboost (modifiziert)

Im Rahmen unseres Themen-Dossiers zum Maschinellen Lernen stellen wir interessante Projekte und Beispiele für Machine Learning vor. Heute: Die Machine Learning Library von Spark MLlib.

MLlibs Aufgabe ist es, angewandtes Machine Learning (ML) einfach und skalierbar zu machen. Wir wollen es Data Scientists und Machine Learning-Entwicklern einfach machen, echte Machine-Learning-Pipelines zu konstruieren. MLlib enthält nicht nur passende Modelle, sondern auch Datenerfassung und -kennzeichnung, Feature-Extraktion und -transformation, Modell-Tuning und -Bewertung oder Deployment. Zu einem sehr schwerwiegenden Problem kommt es, wenn versucht wird, die genannten Themen mit unterschiedlichen Bibliotheken zu lösen und anschließend alles in der Produktion zusammengefügt werden soll. Ich denke dabei an verschiedene Sprachen, Tuning-Tipps, Datenformate oder Ressourcenanforderungen.

Mit anderen Komponenten von Apache Spark kombiniert bietet MLlib eine einheitliche Lösung unter dem gleichen Framework. Trainingsdaten lassen sich beispielsweise aus verschiedenen Quellen mit Spark-SQL generieren und direkt an MLlib zum Feature-Engineering und Modell-Tuning weiterleiten. Das funktioniert besser, als mit Hive/Pig die erste Hälfte zu nutzen und anschließend die Daten in ein weiteres Programm zu speisen, das die Modelle in R trainiert. Letztgenanntes ist tatsächlich ein sehr weit verbreitetes Verfahren, aber nur schwer zu warten. Spark MLlib macht das Leben der Data Scientists und Machine-Learning-Entwicklern einfacher, sodass sie sich auf die Konstruktion von besseren ML-Modellen und -Anwendungen konzentrieren können.

Was kann MLlib?

Wir wollen außerdem, dass MLlib von großen Datenmengen lernen kann. Jeden Tag wird eine enorme Menge an Daten gesammelt. Mehr Daten führen zu besseren Möglichkeiten, einen höheren Nutzen zu extrahieren. Dies wird jedoch oft durch die Skalierbarkeit der Implementierungen begrenzt. MLlib bietet eine skalierbare Implementierung populärer Machine-Learning-Algorithmen, die es Benutzern ermöglichen, Modelle aus großen Datenmodellen zu trainieren und schnell zu iterieren.

ML-Anwendungen sind extrem vielfältig. Wir erwarten von MLlib nicht, alle Anwendungen abzudecken. Stattdessen bieten wir Standard-Feature-Transformatoren und ML-Algorithmen als grundlegende Bausteine und ermöglichen es Anwendern und Entwicklern, High-Level-APIs zu erweitern und dadurch ihre eigenen Anwendungen zu kreieren. Wir pflegen einen Index, um allen Benutzern das Finden der Pakete zu erleichtern.

Start mit MLlib

Wir verwenden Scala, um Kernalgorithmen und Utilities in MLlib zu implementieren und machen sie in Scala und auch Java, Python und R nutzbar. Die meisten Benutzer können ihre favorisierte Sprache wählen und sofort mit MLlib durchstarten. Als Start in MLib würde ich einen Blogpost von Databricks empfehlen, der die Pipeline-API in MLlib vorstellt. Man kann auch Code-Beispiele für Scala, Java und Python im MLlib-Programmier-Guide finden.

MLlib – Ausblick

Wir haben erhebliche Fortschritte machen können, sind allerdings noch nicht am Ende unserer Mission angelangt. Betrachtet man die Schlagwörter „praktisch“, „einfach“ und „skalierbar“, so denke ich, dass noch viel in deren Richtung getan werden kann, und ich bin über die sich bietenden Möglichkeiten sehr enthusiastisch. Beispielsweise könnten wir High-Level-APIs designen, welche die Probleme echter, komplexer Pipelines adressieren. Wir könnten Feature-Parität sprachenübergreifend verbessern oder die MLlib-Implementierung schneller machen und mit Milliarden an Features ausstatten.

Ich freue mich außerdem auf eine bessere Integration anderer Spark-Komponenten, insbesondere für das Projekt Tungsten. Mit diesem Projekt wollen wir an die Leistung von Bare Metal herankommen, um mit strukturiertem Streaming Echtzeit-Machine-Learning umsetzen zu können.

Als Open-Source-Projekt liegt die Zukunft von MLlib in der Community. Mit rund 300 Mitwirkenden und einer sehr aktiven Benutzer-Community bin ich zuversichtlich, dass MLlib sich schnell verbreiten und in Zukunft mehr und mehr Mitstreiter und Benutzer bekommen wird.

 Steckbrief

Name MLlib
Art Machine Learning Library
Sprachen Java, Scala, Python und R
Lizenz Apache 2.0
Home http://spark.apache.org/mllib/
Kontakt https://www.linkedin.com/in/mengxr

Faszination Machine Learning – das Interview

JAXenter: Was ist an Machine Learning so faszinierend?Xiangrui Meng: Viele glauben, dass es verborgene Schätze in Big-Data gibt. Machine Learning lässt sie uns per Reflektion sehen.

JAXenter: Glauben sie, dass Machinen eines Tages die Welt übernehmen werden? Sind diese Ängste gut begründet?

Xiangrui Meng: Womöglich, aber vielleicht ist das etwas, worüber ich mir in meinem Leben keine Sorgen machen muss.

JAXenter: Welche Top 3 Blogs/Filme/Bücher kommen ihnen in den Sinn, wenn jemand mehr über Machine Learning erfahren möchte?

Xiangrui Meng:

JAXenter: Beenden sie die folgenden Sätze:

Machine Learning wird in 50 Jahren…

…die nachfolgenden Fragen beantworten können.

Wenn Machinen intelligenter als Menschen werden…

Im Vergleich mit Menschen wird eine Machinen nie…

Die Menschheit würde folgende Probleme nie ohne die Hilfe von Machine Learning lösen:

Verwandte Themen:

Geschrieben von
Xiangrui Meng
Xiangrui Meng
Xiangrui Meng is an Apache Spark PMC member and a software engineer at Databricks. His main interests center around developing and implementing scalable algorithms for scientific applications. He has been actively involved in the development and maintenance of Spark MLlib since he joined Databricks. Before Databricks, he worked as an applied research engineer at LinkedIn, where he was the main developer of an offline machine learning framework in Hadoop MapReduce. His Ph.D. work at Stanford is on randomized algorithms for large-scale linear regression problems.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: