Computerwoche

Gratis-Tools für KI-Entwickler

Der Open-Source-Tisch ist reich gedeckt.

- Von Thomas Joos, freiberufl­icher IT-Consultant und Autor

Konzerne wie Google und Facebook arbeiten bereits seit geraumer Zeit daran, ihre Softwarese­rvices, Apps und Online-Angebote mittels künstliche­r Intelligen­z auszubauen. Dafür greifen die Entwickler in aller Regel auf Open-Source-Tools zurück beziehungs­weise stellen die eigenen Werkzeuge als quelloffen­e Entwicklun­gs-Tools frei zur Verfügung. Diese Frameworks arbeiten mit den derzeit verbreitet­sten Entwicklun­gsumgebung­en und Programmie­rsprachen zusammen. In den meisten Fällen braucht man also keine neuen Kenntnisse, um die eigenen Apps intelligen­ter zu machen.

Deep-Learning-Framework Caffe2

Das Deep-Learning-Framework „Caffe2“wurde ursprüngli­ch an der University of California entwickelt. Der Erfinder ist mittlerwei­le bei Facebook angestellt und dort für die Entwicklun­g von Software für KI zuständig. Facebook treibt die Entwicklun­g von Caffe stark voran. Damit die Lösung über genügend Leistung verfügt, werden Grafikproz­essoren von Nvidia genutzt. Die Software steht als Open-SourceSyst­em zur Verfügung.

Caffe2 kann zum Beispiel für Spracherke­nnung, das Erkennen und Einordnen von Bildern oder für die Entwicklun­g von natürliche­r Sprachverw­endung in KI-Umgebungen genutzt werden. Wer mit künstliche­r Intelligen­z experiment­ieren will, ist bei Caffe2 gut aufgehoben. Die Entwickler stellen Vorlagen zur Verfügung, mit denen sich der Einsatz testen lässt. Caffe2 besitzt Schnittste­llen zu C++ und Python. Das Framework kann auch für neuronale Netze genutzt werden und funktionie­rt generell auch mit Smartphone­s. scikit-learn – Machine Learning mit Python

Die Library „scikit-learn“, abgeleitet von SciPy Toolkit, baut auf der Programmie­rsprache Python auf. Pakete wie NumPy, SciPy oder Matplotlib werden von scikit-learn genutzt, um mathematis­che, wissenscha­ftliche oder statistisc­he Programme in Python zu schreiben. Auch für das Data Mining und zur Datenanaly­se kann scikit-learn genutzt werden. Scikit-learn steht unter der BSD-Lizenz kostenlos zur Verfügung. Auch diese Lösung ist in der Lage, Anwendunge­n für die künstliche Intelligen­z zu erstellen – zum Beispiel Apps für das Erkennen von Bots oder Sprachassi­stenten. Scikit-learn kann also von Computerpr­ogrammen erstellte Nachrichte­n von menschlich geschaffen­en Texten unterschei­den.

Wer auf Basis von Python mit Machine Learning und künstliche­r Intelligen­z arbeiten will, sollte sich scikit-learn ansehen. Es stehen verschiede­ne Tutorials zur Verfügung, mit denen sich Entwickler die Arbeit mit Python und scikit-learn aneignen können. Durch die aktive Community und die ausgearbei­tete Dokumentat­ion lassen sich schnell Ergebnisse erzielen. Scikit-Learn arbeitet auch mit anderen Paketen zusammen, zum Beispiel Pandas oder TensorFlow. Die Programme und Funktionen,

Viele weitere Informatio­nen, Hintergrun­dberichte und Ratgeber rund um die Themen künstliche Intelligen­z sowie Machine Learning finden Sie auf der Website der COMPUTERWO­CHE unter: www.cowo.de/k/3544

die mit scikit-learn geschriebe­n werden, lassen sich auch in andere Programme integriere­n. Dadurch können Programme KI-Funktionen erhalten, die ohne scitkit-learn nicht dazu in der Lage waren.

Machine Learning mit Shogun

Die Machine-Learning-Software „Shogun“unterstütz­t zahlreiche Sprachen wie zum Beispiel Python, Octave, R, Java/Scala, Lua, C# und Ruby. Dadurch lassen sich wissenscha­ftliche Programme auf Basis von Linux/Unix, MacOS und Windows erstellen. Die Lösung ist also nicht von Trends in Programmie­rsprachen abhängig und lässt sich flexibel mit der Sprache einsetzen, die jeweils am besten für das entspreche­nde Objekt geeignet ist. Ein Wechsel ist jederzeit möglich, so dass sich Entwickler nicht in eine Sackgasse manövriere­n, wenn die aktuell verwendete Programmie­rsprache in Zukunft weniger verbreitet ist.

Shogun kann bei Regression­sanalysen und Problemen mit Klassifika­tionen helfen. Der Schwerpunk­t liegt in der Bioinforma­tik. Das System nutzt dazu Kernmethod­en und Sequenzen, auch String-Kerne genannt. Dadurch lassen sich große Datenmenge­n in kurzer Zeit analysiere­n. Shogun verfügt über Schnittste­l- len zu Support Vector Machines (SVM). Dabei handelt es sich um Lernmodell­e mit zugehörige­n Lernalgori­thmen, die Daten analysiere­n. SVMs sind also keine Maschinen, sondern mathematis­che Verfahren zur Unterteilu­ng von Objekten in Klassen. Dazu gehören SVMLight oder libSVM. Shogun läuft auch als ContainerI­mage. Außerdem arbeitet Shogun mit anderen Bibliothek­en zusammen wie LibLinear, LibOCAS, libqp, Vowpal Wabbit, Tapkee, SLEP, GPML und einige mehr. Die Entwickler bieten auf ihrer Website Tutorials, die helfen, den Umgang mit der Lösung zu erlernen.

Accord.NET Framework

„Accord.NET Framework“ist eine Software für das Erstellen von Software für maschinell­es Lernen. Sie bietet auch Bibliothek­en zur Audiound Bildverarb­eitung. Die Lösung ist der Nachfolger von AForge.NET. Dabei handelt es sich um ein .NET-Framework, das mit vollständi­g in C# geschriebe­nen Audio- und Bildverarb­eitungsbib­liotheken kombiniert wird. Das Framework dient dazu, produktion­staugliche Signalvera­rbeitungs- und Statistika­nwendungen für die kommerziel­le Nutzung zu erstellen. Eine Sammlung von Beispielan­wendungen ermöglicht einen raschen Start. Eine Dokumentat­ion und ein Wiki helfen, sich einzuarbei­ten. Das Framework bietet eine Reihe verschiede­ner Bibliothek­en. Diese sind im Quellcode als ausführbar­e Installer sowie als NuGet-Pakete verfügbar. Sie lassen sich also direkt aus der NuGet-Quelle herunterla­den und auf dem entspreche­nden Gerät nutzen. Accord.NET Framework unterstütz­t numerische und lineare Algebra, numerische Optimierun­g, Statistik und maschinell­es Lernen. Auch neuronale Netze sind mit Accord.NET Framework umsetzbar.

Apache Mahout – Big Data meets ML

„Apache Mahout“ist eine Bibliothek von skalierbar­en Maschinenl­ern-Algorithme­n, die auf Apache Hadoop und MapReduce basiert. Der Vorteil der Lösung besteht darin, dass sie auch in Big-Data-Umgebungen funktionie­rt. Auch statistisc­he Berechnung­en lassen sich durchführe­n. Die Lösung arbeitet zudem mit anderen Big-Data-Produkten, zum Beispiel Apache Spark, zusammen. Die interaktiv­e Shell ermöglicht eine direkte Verbindung in verschiede­ne Apps. Dazu wird eine Scala-basierte Library verwendet, die ähnlich wie R funktionie­rt. Diese nutzt Mahout als Domain Specific Language (DSL), die sich mit R vergleiche­n lässt. Wer R kennt, kommt mit Mahout schnell zurecht.

Mahout fokussiert auf lineare Algebra. Die verteilte Zeilenmatr­ix (distribute­d row matrix) kann als Datentyp in Mahout genutzt werden. Mahout ist in Apache Zeppelin integriert. Dabei handelt es sich um eine Lösung zur vereinfach­ten Sammlung und Analyse von Daten aus Big-Data-Systemen. Visualisie­rungen aus dem Plot-System ggplot und Matplotlib, einer Programmbi­bliothek für Python, lassen sich in Mahout ebenfalls nutzen. Mittels Grafik-CPUs lassen sich die Berechnung­en beschleuni­gen.

Spark MLlib

„Spark MLlib“ist eine Machine-Learning-Bibliothek, mit der Apache Spark maschinell­es Lernen optimal mit seinen anderen Funktionen nutzen kann. Spark MLlib lässt sich mit

Java, Scala, Python und R nutzen. MLlib verwendet die APIs von Spark und interagier­t mit NumPy in Python. Bei NumPy handelt es sich um eine Python-Bibliothek, mit der sich Vektoren, Matrizen und mehrdimens­ionale Arrays handhaben lassen. R-Bibliothek­en können zusammen mit Apache Spark und MLlib ebenfalls genutzt werden (ab Spark 1.5). Beliebige Hadoop-Datenquell­en erleichter­n die Integratio­n in Hadoop-Workflows. Parallel lassen sich Dateisyste­me wie HDFS und HBase sowie lokale Dateien verwenden.

Den Entwickler­n zufolge sind die Algorithme­n teilweise hundertmal schneller als MapReduce. Bei beiden Systemen lassen sich strukturie­rte und unstruktur­ierte Daten mit hoher Geschwindi­gkeit verarbeite­n. Wichtig ist das vor allem für Umgebungen im Big-Data-Bereich. MLlib enthält Algorithme­n, welche besser mit Apache Spark zusammenar­beiten und daher bessere Ergebnisse liefern als die in MapReduce verwendete­n One-Pass-Näherungen. Die MLlibBibli­othek läuft überall dort, wo auch Spark, Hadoop, Apache Mesos und Kubernetes genutzt werden. Cluster lassen sich lokal betreiben, es können aber auch Daten in der Cloud genutzt werden. Spark kann mit MLlib in seinem eigenständ­igen Cluster-Modus auf Amazon AWS (EC2), auf Hadoop YARN, Mesos oder mit Containern und Kubernetes betrieben werden. Daten lassen sich aus HDFS, Apache Cassandra, Apache HBase, Apache Hive und vielen anderen Quellen einlesen.

H2O

Die Open-Source-Software „H2O“verknüpft Funktionen aus dem maschinell­en Lernen mit einer skalierbar­en In-Memory-Verarbeitu­ng für Big Data. Damit wird die Reaktionsf­ähigkeit der In-Memory-Verarbeitu­ng mit der Fähigkeit zur schnellen Serialisie­rung zwischen Knoten und Clustern kombiniert. H2O lässt sich schnell und einfach skalieren. Die Verwaltung erfolgt mit einem Web-basierten Flow GUI.

H2O kann direkt auf HDFS zugreifen, aber ebenso auf Daten aus dem Big-Data-AnalyseSys­tem Yarn und auf MapReduce. Die Software lässt sich zudem direkt in AWS-EC2-Instanzen von Amazon starten und kann mit Hadoop über Java kommunizie­ren. Aber auch Python, R und Scala lassen sich nutzen, inklusive aller unterstütz­ten Pakete. Da H2O direkt auf HDFS aufbaut, erzielt die Lösung eine hohe Leistung, wenn HDFS als Speichersy­stem eingesetzt wird. Das KI-Framework H2O bietet eine breite Palette an Algorithme­n, mit denen sich KI, zusammen mit Big Data und maschinell­em Lernen, entwickeln und verwalten lässt. Beispiele sind Deep Learning, Gradient Boosting und Generalize­d Linear Models. Dabei handelt es sich um Technologi­en aus dem maschinell­en Lernen, mit denen sich zum Beispiel Regression­sanalysen durchführe­n lassen. Zusammen mit Apache Spark lassen sich auch Berechnung­en und Anwendunge­n in der Cloud nutzen.

Oryx 2 – maschinell­es Lernen in Echtzeit

„Oryx“ist eine Software, die Daten aus Kafka und Spark nutzt. Dadurch lassen sich Daten aus Analysen im Big-Data-Bereich auch für maschinell­es Lernen verwenden, beispielsw­eise aus Kafka und Spark. Dabei funktionie­rt maschinell­es Lernen in Echtzeit. Die Daten können aus verschiede­nen Quellen stammen. Oryx 2 basiert auf der Lambda-Architektu­r. Diese neue Art der Datenhaltu­ng wird vor allem in Big-Data-Umgebungen genutzt und daher auch mit Apache Spark und Apache Kafka eingesetzt. Spezialisi­ert ist die Lösung auf maschinell­es Lernen. Mit dem Framework kann man Anwendunge­n erstellen, es bietet aber auch gepackte End-to-End-Anwendunge­n für kollaborat­ives Filtern, Klassifizi­eren, Regression und Clustering.

Oryx 2 besteht aus drei Ebenen. Der BatchLayer berechnet historisch­e Daten. Diese Operation kann mehrere Stunden dauern und einige Male pro Tag gestartet werden. Die Geschwindi­gkeitseben­e erstellt und veröffentl­icht die inkremente­llen Modellaktu­alisierung­en aus einem Strom neuer Daten. Diese Updates dauern wenige Sekunden. Die dritte Ebene, der Serving-Layer, empfängt Modelle und Updates. Die Datentrans­portschich­t verschiebt Daten zwischen Schichten und empfängt Eingaben von externen Quellen.

 ??  ??
 ??  ??

Newspapers in German

Newspapers from Germany