Jenseits von Python: Mojo baut Brücke zwischen Python und C für Machine Learning

Eine neue Programmiersprache für ML entsteht: Mojo ist ein Python-Superset mit zusätzlichen Funktionen. Dahinter steht Chris Lattner, der Schöpfer von Swift.

In Pocket speichern vorlesen Druckansicht 33 Kommentare lesen
Monorail,Motion,Blur,In,Dubai,,Uae.,Dubai,Metro,,Abstract.,Fpv

(Bild: Grisha Bruev/Shutterstock.com)

Lesezeit: 7 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Eine neue Programmiersprache für Machine Learning, eine Art Python++? Mojo soll die Benutzerfreundlichkeit von Python mit der Leistung von C verbinden und laut Ankündigung des Entwicklerteams "beispiellose Programmierbarkeit" bei KI-Hardware sowie das Erweitern von KI-Modellen ermöglichen.

Zudem kündigt das Projekt unter der Dachmarke Modular AI die laut eigenen Angaben schnellste vereinheitlichte Inference Engine für Machine Learning an. Sie solle das KI-Deployment defragmentieren und vereinfachen und sowohl PyTorch- als auch TensorFlow-Workloads ausführen können. Sowohl Cloud- als on-Premises-Umgebungen seien möglich und zahlreiche Frameworks sowie Server werden unterstützt.

Die Modular Inference Engine soll die KI-Toolchain konsolidieren und das KI-Deployment vereinfachen.

(Bild: Modular AI)

Die Leiter zum Mond baut kein Unbekannter: Hinter Projekt Mojo steht federführend Chris Lattner, der bei Apple ab 2010 die Sprache Swift schuf (damals mit dem Ziel, "die Leistungsfähigkeit von LLVM voll auszuschöpfen"). Lattner wechselte später zu Google und versuchte dort, Swift "aus seiner Apple-Komfortzone herauszuholen", um Python für das Entwickeln von KI-Modellen abzulösen. So ist es nachzulesen in einem Blogeintrag des australischen KI-Professors Jeremy Howard, dem Gründer von Fast.ai.

Lattner hatte Anfang 2022 seine letzten Verbindungen zum Swift-Projekt aufgelöst, das Core Team hatte er bereits im Sommer 2021 wegen interner Differenzen verlassen. 2017 hatte er Apple den Rücken gekehrt und für kurze Zeit bei Tesla gearbeitet. Lattner hatte nicht nur Swift erfunden, sondern auch maßgeblich die Compiler-Infrastruktur LLVM vorangetrieben und bei Apple die Abteilung für Entwicklungswerkzeuge geleitet. Mit Swift hatte er 2010 eine Alternative zu Objective-C angestrebt. Das Projekt hielt Apple zunächst innerhalb des Konzernzauns, bis es 2015 als Open-Source-Projekt (und für Linux) unter der Apache-2.0-Lizenz ins Freie trat. Die Entwicklung ist seither stärker Community-getrieben. Über die Zukunft der Sprache besteht keine Einigkeit, richtig durchsetzen konnte sie sich bislang nicht.

Mojo: Performance im Vergleich mit regulärem Python und anderen Sprachen beim Ausführen des Mandelbrot-Algorithmus auf einem AWS-System (r7iz.metal-16xl) – Mojo soll "35.000mal schneller" sein.

(Bild: Modular AI)

2022 gründete Lattner gemeinsam mit Tim Davis die Entwicklerplattform Modular AI. Mit Mojo greifen die beiden mit einem neuen Ansatz einige der ursprünglichen Anliegen von Swift wieder auf. Laut einem weiteren Experten, dem australischen Fast.ai-Gründer Jeremy Howard, sei Swift im Grunde gescheitert, da die Unterstützung seitens Apple, später Google, zu zögerlich ausgefallen sei. Howard hebt ein anderes Projekt hervor, das Lattner in seiner Zeit bei Google entwickelt hat: MLIR, einen Ersatz für die Intermediate Representation (IR) bei der Compilersammlung LLVM.

Mit dieser Technik lasse sich die Hardware im Multicore-Computing und bei KI-Workloads erschließen und die Leistungsfähigkeit von GPUs, TPUs und der bei CPUs ergänzten Vektoreinheiten ausreizen. Die neue Programmiersprache Mojo sei für MLIR das, was Swift für LLVM gewesen sei (oder hätte sein können). Mojo ist noch nicht ganz fertig und soll künftig ein "strenges Superset" der Sprache Python sein. Über Python hinaus könne Mojo hochleistungsfähigen Code schreiben, der sich neuerer Modem-Beschleuniger bediene.

Howards Vergleich mit Swift geht noch weiter. So sei Swift eine neue, eigenständige Sprache gewesen, die Features der damaligen Forschung zum Konzipieren von Programmiersprachen aufgriff. Mojo hingegen sei schlicht Python. Swift-Kritiker halten das für einen klügeren Ansatz, da Python bereits gut etabliert ist und Millionen von Entwicklerinnen und Entwicklern die Sprache beherrschen. Zudem seien die Fähigkeiten und Beschränkungen von Python gut bekannt. Hier sei daher weniger Spekulation im Spiel als damals bei Swift, zudem verfügt Python über ein umfassendes Ökosystem.

Wer mit Mojo arbeitet, kann laut Blogeintrag beim Erstellen von Funktionen optional einen schnelleren Entwicklermodus auswählen durch das Verwenden von fn anstelle von def. In diesem Modus müssen Entwickler den Typ jeder Variablen exakt angeben. Mojo könne dann wiederum optimierten Maschinencode erstellen, um die Funktion zu implementieren. Statt class lasse sich struct verwenden, um die Attribute fest in den Speicher zu schreiben. Auf diese Weise lassen sie sich laut Howard in Datenstrukturen nutzen, "ohne Pointern hinterherzujagen".

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Die von ihm beschriebenen Features sind von C bekannt und machen diese Programmiersprache besonders schnell. Durch Mojo sind sie nun auch Pythonprogrammierern zugänglich, durch das Hinzulernen einer überschaubaren Menge neuer Syntax.

Mojo ist noch nicht regulär veröffentlicht. Es gibt einen Online-Playground mit einer Warteliste zum Ausprobieren. Das Erstellen der Syntax einer neuen Programmiersprache ist fehlerbehaftet, kompliziert und oftmals umstritten – einige der bekannten Untiefen umschifft Projekt Mojo elegant, indem es sich auf die bereits vorhandene, besonders weitverbreitete Sprache Python stützt und das Syntax-Problem auf die Weise "outsourct". Als kompilierte Sprache sei Mojos Deployment vergleichbar mit C, lässt sich einem Eintrag im Entwicklerforum bei Slashdot.org entnehmen: Das Programm lasse sich direkt herunterladen, sei mit einer 100 Kilobyte großen Binärdatei verhältnismäßig klein und rasch zum Laufen zu bringen.

Mit dem Python-Superset lassen sich schnelle, kleine und leicht implementierbare Anwendungen schreiben, die alle verfügbaren Kerne und Beschleuniger nutzen. Mojos Potenzial geht daher ersten Einschätzungen nach über das einer reinen Sprache für KI- und ML-Modelle hinaus, wenngleich die Hauptzielgruppe des Projekts in eigenen Worten "alle KI-Entwickler" sind. Die Entwickler der Sprache werben damit, dass sich mit Mojo "alles in einer Sprache" schreiben lasse – skalierbarer Pythoncode bis hin zur Programmierung von Hardware, ohne dass C++ oder CUDA nötig wären.

Mit Mojo lässt sich Python skalieren bis auf die Hardwareebene – im Codebeispiel geht es um SIMD-Anweisungen.

(Bild: Modular AI)

Einen ersten Überblick auch zur Programmiersprache bietet der Blogeintrag zum Release der Modular Inference Engine. Wer neugierig geworden ist, kann sich auf der Projektseite von Mojo in der Dokumentation über die Sprache informieren und sich auf der Warteliste eintragen. Besonders informativ ist zum Einstieg die interaktive Jupyter-Notebooksammlung zu Mojo, in dem das Team die Sprache, ihr Design und die Syntax vorstellt. Die Notebooks sind ausführbar und bieten eine Einführung etwa in das Erstellen von Erweiterungen, in die Parametrisierung und Metaprogrammierung zur Compilezeit sowie in fortgeschrittene Funktionen. Zudem gibt es eine Mojo-Library und eine Roadmap zur geplanten weiteren Entwicklung. Das Team um Chris Lattner und Tim Davis hat dem Launch eine Product Keynote gewidmet (YouTube-Video).

Weiterführende technische Hinweise lassen sich der Dokumentation zur Modular Inference Engine entnehmen, die ausgiebig auf die Programmierschnittstellen zu Python und C eingeht. Eine Schnittstelle zu C++ ist dem Eintrag in der Navigation zufolge offenbar bereits in Planung. Die Dokumentation fängt nicht bei null an: Vorkenntnisse in Python werden vorausgesetzt sowie die Vertrautheit mit allgemeinen Grundlagen des Programmierens.

Die Inference Engine ist wie die Programmiersprache zunächst nur einer begrenzten Anzahl an Early-Access-Partnern zugänglich, auch für sie besteht eine Warteliste (beim Anmelden lässt sich auswählen, für welchen Bereich Interesse besteht: Inference Engine, Mojo, Hardware-Integration oder die Modular-Plattform). Wer sich über die Entwicklung von Mojo auf dem Laufenden halten möchte, kann in der Roadmap nachschauen, was für die Sprache in nächster Zeit geplant ist.

(sih)