Künstliche Intelligenz programmieren
Die besten Coding-Sprachen für KI
Florian Maier beschäftigt sich mit diversen Themen rund um Technologie und Management.
Künstliche Intelligenz (KI) eröffnet Softwareentwicklern völlig neue Möglichkeiten: Mit Hilfe von Machine und Deep Learning lassen sich bessere Nutzerprofile und Empfehlungen, ein höherer Personalisierungsgrad, smartere Suchoptionen oder intelligentere Interfaces realisieren. Dabei stellt sich unweigerlich die Frage, welche Programmiersprache dafür zum Einsatz kommen soll. Die Anforderungen, denen eine KI-Coding-Sprache genügen muss, sind vielfältig: eine Vielzahl von Machine- und Deep-Learning-Bibliotheken sollten genauso vorhanden sein wie eine performante Laufzeitumgebung, ausgiebiger Tool Support, eine große Entwickler-Community und ein gesundes Ökosystem.
Trotzdem dieser Anforderungskatalog umfassend ist, stehen Ihnen einige gute Optionen zur Wahl, wenn es darum geht, Künstliche IntelligenzKünstliche Intelligenz zu programmieren. Wir zeigen Ihnen eine Auswahl der besten KI-Programmiersprachen. Alles zu Künstliche Intelligenz auf CIO.de
Python
Wenn Sie als DeveloperDeveloper mit künstlicher Intelligenz arbeiten, führt mit an Sicherheit grenzender Wahrscheinlichkeit kein Weg an Python vorbei. Inzwischen unterstützen auch so gut wie alle gängigen Bibliotheken Python 3.x - die Zeiten, in denen die Umstellung von Python 2.x auf 3.x Kompatibilitätsprobleme mit sich brachte, sind so gut wie vorbei. Mit anderen Worten: Sie können nun endlich auch in der Praxis von den zahlreichen neuen Features von Python 3.x profitieren. Was nicht heißen soll, dass die packaging-Hürden bei Python überhaupt keine Rolle mehr spielen - das Gros der Probleme lässt sich aber mit Hilfe von Anaconda umschiffen. Nichtsdestotrotz wäre es zu begrüßen, wenn die Python Community endlich voll und ganz von diesen Hürden befreit würde. Alles zu Developer auf CIO.de
Davon abgesehen sind die verfügbaren mathematischen und statistischen Bibliotheken von Python denen anderer Programmiersprachen weit voraus: NumPy ist inzwischen so allgegenwärtig, dass es beinahe als Standard-API für Tensor Operations bezeichnet werden kann, während Pandas die flexiblen Dataframes von R in die Python-Welt trägt. Geht es um Natural Language Processing (NLP) haben Sie die Wahl zwischen dem altehrwürdigen NLTK und dem superschnellen SpaCy, während sich für Machine-Learning-Zwecke das bewährte scikit-learn empfiehlt. Geht es hingegen um Deep Learning, sind alle aktuellen Bibliotheken (TensorFlow, PyTorch, Chainer, Apache MXNet, Theano, etc.) im Grunde "Python-first"-Projekte.
Wenn Sie ein regelmäßiger Besucher von arXiv sind, wird Ihnen längst aufgefallen sein, dass die Mehrzahl der dortigen Deep-Learning-Forschungsprojekte, die Quellcode zur Verfügung stellen, dazu auf Python setzen. In Sachen Deployment-Modelle haben Microservice-Architekturen und -Technologien wie SeldonCore die Auslieferung von Python-Modellen in Produktivumgebungen wesentlich vereinfacht.
Python ist zweifellos die Programmiersprache der Wahl, wenn es um KI-Forschung geht: Sie bietet die größte Auswahl an Machine und Deep Learning Frameworks und ist die Coding-Sprache, die innerhalb der KI-Welt tonangebend ist.
C++
C++ ist aller Voraussicht nach nicht die erste Wahl für Ihr KI-Projekt. Allerdings wird Deep Learning im Edge-Bereich ein immer gängigeres Szenario. In diesem Fall müssen Sie Ihre Modelle auf Systemen zum Laufen bringen, die nur sehr begrenzte Ressourcen zur Verfügung haben. Um das letzte bisschen Performance aus dem System zu pressen, kann es nötig werden, noch einmal in die Untiefen der Pointer-Welt abzutauchen.
Glücklicherweise kann moderner C++ Code aber tatsächlich angenehm zu schreiben sein. Hierfür stehen Ihnen mehrere Ansätze zur Wahl: Entweder Sie nutzen Bibliotheken wie Nvidias CUDA um ihren eigenen Programmcode zu schreiben, der direkt in die GPU fließt - oder Sie setzen wahlweise auf TensorFlow oder PyTorch, um Zugang zu flexiblen high-level APIs zu erlangen. Sowohl PyTorch als auch TensorFlow erlauben Ihnen, Modelle, die in Python geschrieben sind, in eine C++ Laufzeitumgebung zu integrieren. So rücken Sie deutlich näher an den Produktiveinsatz, bleiben dabei aber flexibel in der Entwicklung.
Weil KI-Applikationen sich immer stärker über alle Devices - von Embedded Systems bis hin zu riesigen Clustern - hinweg ausbreiten, ist C++ ein wichtiger Bestandteil des KI-Coding-Toolkits. Um künstliche Intelligenz im Edge-Bereich zu realisieren, gilt es eben nicht nur akkurat zu programmieren, sondern auch qualitativ gut und schnell.
Java und andere JVM-Sprachen
Die Familie der JVM-Programmiersprachen (Java, Scala, Kotlin, Clojure, etc.) ist weiterhin eine gute Wahl, wenn es um die Entwicklung von KI-Applikationen geht. Eine reichhaltige Auswahl an Bibliotheken steht für nahezu alle Aspekte zur Auswahl - sei es Natural Language Processing (CoreNLP), Tensor Operations (ND4J) oder GPU-beschleunigtes Deep Learning (DL4J). Darüber hinaus gewährleisten diese Coding-Sprachen auch einfachen Zugang zu Big-Data-Plattformen wie Apache Spark und Apache Hadoop.
Für die meisten Unternehmen ist Java die lingua franca - und mit Java 8 und neueren Versionen verliert auch die Erstellung von Java Code ihren Schrecken. Eine KI-Applikation in Java zu programmieren mag sich ein wenig langweilig anfühlen, sorgt aber in der Regel für zufriedenstellende Ergebnisse und ermöglicht Ihnen, alle existierenden Bestandteile einer Java-Infrastruktur für Entwicklung, Deployment und Monitoring einzusetzen.
JavaScript
JavaScript ausschließlich für die Entwicklung von KI-Applikationen zu erlernen, ist ein höchst unwahrscheinliches Szenario. Allerdings bietet Googles TensorFlow.js weiterhin eine gute Möglichkeit, Ihre Keras- und TensorFlow-Modelle über Browser oder Node.js auszuliefern.
Dennoch ist der große Ansturm von JavaScript-Entwicklern im Bereich Künstliche Intelligenz bislang ausgeblieben. Das könnte daran liegen, dass das JavaScript-Ökosystem in Sachen verfügbare Bibliotheken bislang den nötigen Tiefgang vermissen lässt - zumindest im Vergleich zu Programmiersprachen wie Python. Darüber hinaus stehen auf Serverseite durch Deployment-Modelle mit Node.js (wiederum im Vergleich zu den Python-Optionen) keine wirklichen Vorteile in Aussicht. KI-Applikationen auf JavaScript-Basis dürften deshalb auch weiterhin auf Browser-Basis entstehen.
Swift
Swift for TensorFlow verbindet die neuesten und besten Features von TensorFlow mit den Vorteilen von Python-Bibliotheken, die sich problemlos einbinden lassen - ganz so als würden Sie Python selbst nutzen.
Das fastai-Team werkelt derzeit an einer Swift-Version seiner populären Bibliothek - und stellt zahlreiche Optimierungen in Aussicht, gerade in Zusammenhang mit dem LLVM compiler. Von "production ready" kann zwar noch keine Rede sein, aber auf dieser Grundlage könnte die nächste Generation von Deep-Learning-Entwicklungsarbeit entstehen - Sie sollten Swift deshalb auf alle Fälle im Auge behalten.
R
R ist die Programmiersprache der Wahl für Data Scientists. Developer aus anderen Bereichen könnten die Coding-Sprache wegen ihres Dataframe-zentrischen Ansatzes hingegen als verwirrend empfinden.
Für ein Team leidenschaftlicher R-Entwickler kann es durchaus Sinn machen, Integrationen mit TensorFlow, Keras oder H2O für Forschung und Prototyping einzusetzen. Hinsichtlich der Performance ist R für den Produktiveinsatz aber lediglich bedingt zu empfehlen. Zwar lässt sich performanter R Code durchaus produktiv zum Einsatz bringen, einfacher dürfte es aber in den allermeisten Fällen sein, den R-Prototypen in Java oder Python neu zu programmieren.
KI programmieren - weitere Optionen
Natürlich sind die vier genannten Programmiersprachen nicht die einzigen Optionen, um Künstliche Intelligenz zu programmieren. Die folgenden beiden Coding-Sprachen könnten - je nach Einsatzzweck - ebenfalls von Interesse für Ihre KI-Projekte sein:
Lua
Vor einigen Jahren wurde Lua als "next big thing" im Bereich der Künstlichen Intelligenz gehandelt. Das lag in erster Linie am Torch Framework - eine der populärsten Machine-Learning-Bibliotheken - sowohl für den produktiven Einsatz als auch für Forschungszwecke. Wenn Sie in ältere DeepLearning-Modelle abtauchen, finden sich oft zahlreiche Verweise auf Torch und Lua-Quellcode.
Es könnte durchaus nützlich sein, sich etwas Knowhow über die Torch API anzueignen, die einige Ähnlichkeiten zur Basis-API von PyTorch aufweist. Wenn Sie allerdings kein gesteigertes Bedürfnis haben, für Ihre Applikationen in historische Forschung abzutauchen, können Sie auf Lua auch gut und gerne verzichten.
Julia
Bei Julia handelt es sich um eine High-Performance-Programmiersprache, die ihren Fokus auf numerische Berechnungen legt. Dadurch passt sie auch wunderbar in die mathematisch ausgerichtete Welt der Künstlichen Intelligenz. Julia mag derzeit nicht die populärste Coding-Sprache sein, allerdings bieten wrappers wie TensorFlow.jl und Mocha guten Deep Learning Support. Wenn das relativ kleine Ökosystem kein Ausschlusskriterium für Sie darstellt und Sie von Julias Fokus auf High-Performance-Berechnungen profitieren wollen, sollten Sie einen Blick riskieren.
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation InfoWorld.