Gratis-Tools für KI-Entwickler
Der Open-Source-Tisch ist reich gedeckt.
Konzerne wie Google und Facebook arbeiten bereits seit geraumer Zeit daran, ihre Softwareservices, Apps und Online-Angebote mittels künstlicher Intelligenz auszubauen. Dafür greifen die Entwickler in aller Regel auf Open-Source-Tools zurück beziehungsweise stellen die eigenen Werkzeuge als quelloffene Entwicklungs-Tools frei zur Verfügung. Diese Frameworks arbeiten mit den derzeit verbreitetsten Entwicklungsumgebungen und Programmiersprachen zusammen. In den meisten Fällen braucht man also keine neuen Kenntnisse, um die eigenen Apps intelligenter zu machen.
Deep-Learning-Framework Caffe2
Das Deep-Learning-Framework „Caffe2“wurde ursprünglich an der University of California entwickelt. Der Erfinder ist mittlerweile bei Facebook angestellt und dort für die Entwicklung von Software für KI zuständig. Facebook treibt die Entwicklung von Caffe stark voran. Damit die Lösung über genügend Leistung verfügt, werden Grafikprozessoren von Nvidia genutzt. Die Software steht als Open-SourceSystem zur Verfügung.
Caffe2 kann zum Beispiel für Spracherkennung, das Erkennen und Einordnen von Bildern oder für die Entwicklung von natürlicher Sprachverwendung in KI-Umgebungen genutzt werden. Wer mit künstlicher Intelligenz experimentieren will, ist bei Caffe2 gut aufgehoben. Die Entwickler stellen Vorlagen zur Verfügung, mit denen sich der Einsatz testen lässt. Caffe2 besitzt Schnittstellen zu C++ und Python. Das Framework kann auch für neuronale Netze genutzt werden und funktioniert generell auch mit Smartphones. scikit-learn – Machine Learning mit Python
Die Library „scikit-learn“, abgeleitet von SciPy Toolkit, baut auf der Programmiersprache Python auf. Pakete wie NumPy, SciPy oder Matplotlib werden von scikit-learn genutzt, um mathematische, wissenschaftliche oder statistische Programme in Python zu schreiben. Auch für das Data Mining und zur Datenanalyse kann scikit-learn genutzt werden. Scikit-learn steht unter der BSD-Lizenz kostenlos zur Verfügung. Auch diese Lösung ist in der Lage, Anwendungen für die künstliche Intelligenz zu erstellen – zum Beispiel Apps für das Erkennen von Bots oder Sprachassistenten. Scikit-learn kann also von Computerprogrammen erstellte Nachrichten von menschlich geschaffenen Texten unterscheiden.
Wer auf Basis von Python mit Machine Learning und künstlicher Intelligenz arbeiten will, sollte sich scikit-learn ansehen. Es stehen verschiedene Tutorials zur Verfügung, mit denen sich Entwickler die Arbeit mit Python und scikit-learn aneignen können. Durch die aktive Community und die ausgearbeitete Dokumentation lassen sich schnell Ergebnisse erzielen. Scikit-Learn arbeitet auch mit anderen Paketen zusammen, zum Beispiel Pandas oder TensorFlow. Die Programme und Funktionen,
Viele weitere Informationen, Hintergrundberichte und Ratgeber rund um die Themen künstliche Intelligenz sowie Machine Learning finden Sie auf der Website der COMPUTERWOCHE unter: www.cowo.de/k/3544
die mit scikit-learn geschrieben werden, lassen sich auch in andere Programme integrieren. 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ützt zahlreiche Sprachen wie zum Beispiel Python, Octave, R, Java/Scala, Lua, C# und Ruby. Dadurch lassen sich wissenschaftliche Programme auf Basis von Linux/Unix, MacOS und Windows erstellen. Die Lösung ist also nicht von Trends in Programmiersprachen abhängig und lässt sich flexibel mit der Sprache einsetzen, die jeweils am besten für das entsprechende Objekt geeignet ist. Ein Wechsel ist jederzeit möglich, so dass sich Entwickler nicht in eine Sackgasse manövrieren, wenn die aktuell verwendete Programmiersprache in Zukunft weniger verbreitet ist.
Shogun kann bei Regressionsanalysen und Problemen mit Klassifikationen helfen. Der Schwerpunkt liegt in der Bioinformatik. Das System nutzt dazu Kernmethoden und Sequenzen, auch String-Kerne genannt. Dadurch lassen sich große Datenmengen in kurzer Zeit analysieren. Shogun verfügt über Schnittstel- len zu Support Vector Machines (SVM). Dabei handelt es sich um Lernmodelle mit zugehörigen Lernalgorithmen, die Daten analysieren. SVMs sind also keine Maschinen, sondern mathematische Verfahren zur Unterteilung von Objekten in Klassen. Dazu gehören SVMLight oder libSVM. Shogun läuft auch als ContainerImage. Außerdem arbeitet Shogun mit anderen Bibliotheken 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 maschinelles Lernen. Sie bietet auch Bibliotheken zur Audiound Bildverarbeitung. Die Lösung ist der Nachfolger von AForge.NET. Dabei handelt es sich um ein .NET-Framework, das mit vollständig in C# geschriebenen Audio- und Bildverarbeitungsbibliotheken kombiniert wird. Das Framework dient dazu, produktionstaugliche Signalverarbeitungs- und Statistikanwendungen für die kommerzielle Nutzung zu erstellen. Eine Sammlung von Beispielanwendungen ermöglicht einen raschen Start. Eine Dokumentation und ein Wiki helfen, sich einzuarbeiten. Das Framework bietet eine Reihe verschiedener Bibliotheken. Diese sind im Quellcode als ausführbare Installer sowie als NuGet-Pakete verfügbar. Sie lassen sich also direkt aus der NuGet-Quelle herunterladen und auf dem entsprechenden Gerät nutzen. Accord.NET Framework unterstützt numerische und lineare Algebra, numerische Optimierung, Statistik und maschinelles Lernen. Auch neuronale Netze sind mit Accord.NET Framework umsetzbar.
Apache Mahout – Big Data meets ML
„Apache Mahout“ist eine Bibliothek von skalierbaren Maschinenlern-Algorithmen, die auf Apache Hadoop und MapReduce basiert. Der Vorteil der Lösung besteht darin, dass sie auch in Big-Data-Umgebungen funktioniert. Auch statistische Berechnungen lassen sich durchführen. Die Lösung arbeitet zudem mit anderen Big-Data-Produkten, zum Beispiel Apache Spark, zusammen. Die interaktive Shell ermöglicht eine direkte Verbindung in verschiedene Apps. Dazu wird eine Scala-basierte Library verwendet, die ähnlich wie R funktioniert. Diese nutzt Mahout als Domain Specific Language (DSL), die sich mit R vergleichen lässt. Wer R kennt, kommt mit Mahout schnell zurecht.
Mahout fokussiert auf lineare Algebra. Die verteilte Zeilenmatrix (distributed row matrix) kann als Datentyp in Mahout genutzt werden. Mahout ist in Apache Zeppelin integriert. Dabei handelt es sich um eine Lösung zur vereinfachten Sammlung und Analyse von Daten aus Big-Data-Systemen. Visualisierungen aus dem Plot-System ggplot und Matplotlib, einer Programmbibliothek für Python, lassen sich in Mahout ebenfalls nutzen. Mittels Grafik-CPUs lassen sich die Berechnungen beschleunigen.
Spark MLlib
„Spark MLlib“ist eine Machine-Learning-Bibliothek, mit der Apache Spark maschinelles 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 interagiert mit NumPy in Python. Bei NumPy handelt es sich um eine Python-Bibliothek, mit der sich Vektoren, Matrizen und mehrdimensionale Arrays handhaben lassen. R-Bibliotheken können zusammen mit Apache Spark und MLlib ebenfalls genutzt werden (ab Spark 1.5). Beliebige Hadoop-Datenquellen erleichtern die Integration in Hadoop-Workflows. Parallel lassen sich Dateisysteme wie HDFS und HBase sowie lokale Dateien verwenden.
Den Entwicklern zufolge sind die Algorithmen teilweise hundertmal schneller als MapReduce. Bei beiden Systemen lassen sich strukturierte und unstrukturierte Daten mit hoher Geschwindigkeit verarbeiten. Wichtig ist das vor allem für Umgebungen im Big-Data-Bereich. MLlib enthält Algorithmen, welche besser mit Apache Spark zusammenarbeiten und daher bessere Ergebnisse liefern als die in MapReduce verwendeten One-Pass-Näherungen. Die MLlibBibliothek 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ändigen 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 maschinellen Lernen mit einer skalierbaren In-Memory-Verarbeitung für Big Data. Damit wird die Reaktionsfähigkeit der In-Memory-Verarbeitung mit der Fähigkeit zur schnellen Serialisierung 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-AnalyseSystem Yarn und auf MapReduce. Die Software lässt sich zudem direkt in AWS-EC2-Instanzen von Amazon starten und kann mit Hadoop über Java kommunizieren. Aber auch Python, R und Scala lassen sich nutzen, inklusive aller unterstützten Pakete. Da H2O direkt auf HDFS aufbaut, erzielt die Lösung eine hohe Leistung, wenn HDFS als Speichersystem eingesetzt wird. Das KI-Framework H2O bietet eine breite Palette an Algorithmen, mit denen sich KI, zusammen mit Big Data und maschinellem Lernen, entwickeln und verwalten lässt. Beispiele sind Deep Learning, Gradient Boosting und Generalized Linear Models. Dabei handelt es sich um Technologien aus dem maschinellen Lernen, mit denen sich zum Beispiel Regressionsanalysen durchführen lassen. Zusammen mit Apache Spark lassen sich auch Berechnungen und Anwendungen in der Cloud nutzen.
Oryx 2 – maschinelles 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 maschinelles Lernen verwenden, beispielsweise aus Kafka und Spark. Dabei funktioniert maschinelles Lernen in Echtzeit. Die Daten können aus verschiedenen Quellen stammen. Oryx 2 basiert auf der Lambda-Architektur. Diese neue Art der Datenhaltung wird vor allem in Big-Data-Umgebungen genutzt und daher auch mit Apache Spark und Apache Kafka eingesetzt. Spezialisiert ist die Lösung auf maschinelles Lernen. Mit dem Framework kann man Anwendungen erstellen, es bietet aber auch gepackte End-to-End-Anwendungen für kollaboratives Filtern, Klassifizieren, Regression und Clustering.
Oryx 2 besteht aus drei Ebenen. Der BatchLayer berechnet historische Daten. Diese Operation kann mehrere Stunden dauern und einige Male pro Tag gestartet werden. Die Geschwindigkeitsebene erstellt und veröffentlicht die inkrementellen Modellaktualisierungen aus einem Strom neuer Daten. Diese Updates dauern wenige Sekunden. Die dritte Ebene, der Serving-Layer, empfängt Modelle und Updates. Die Datentransportschicht verschiebt Daten zwischen Schichten und empfängt Eingaben von externen Quellen.