7 Punkte von GN⁺ 2025-07-15 | 3 Kommentare | Auf WhatsApp teilen
  • MLX ist ein Array-Framework für Forschende im Bereich maschinelles Lernen auf Basis von Apple Silicon und bietet eine Nutzbarkeit ähnlich wie NumPy und PyTorch
  • Es wird derzeit daran gearbeitet, MLX um ein CUDA-Backend zu erweitern
  • Das Hauptziel ist die Unterstützung von Unified Memory und die breite Nutzung von NVIDIA-Hardware
  • Derzeit funktionieren nur Tutorial-Beispiele; Build und Tests wurden in einer Umgebung mit Ubuntu 22.04 + CUDA 11.6 bestätigt
  • Während anfängliche Performance-Probleme und Engpässe verbessert werden, laufen Optimierung und Refactoring wiederholt weiter
  • Das CUDA-Backend von MLX wird mit Unterstützung von Apple entwickelt und soll durch Unified Memory und Unterstützung für NVIDIA-Hardware eine konsistente Erfahrung bieten, wenn auf dem Mac entwickelt und in großen Computing-Umgebungen ausgerollt wird

Einführung in das MLX-Framework

  • MLX ist ein von Apples Machine-Learning-Forschungsteam entwickeltes Array-Framework für maschinelles Lernen
  • Es wurde entwickelt, damit Ingenieurinnen, Ingenieure und Forschende effektiv experimentieren und Ideen schnell validieren können
  • Die Unterstützung für Apple Silicon ist ein zentrales Merkmal, doch mit dem zusätzlichen CUDA-Backend soll der Einsatz künftig auch auf NVIDIA-GPU-Umgebungen ausgeweitet werden

Wichtige Merkmale

  • Vertraute API: Die Python-API orientiert sich an NumPy, die höherliegenden Pakete mlx.nn und mlx.optimizers bieten eine Schnittstelle ähnlich zu PyTorch
    • Zusätzlich werden C++-, C- und Swift-APIs bereitgestellt, mit konsistenter Nutzbarkeit zur Python-API
  • Komponierbare Funktionstransformationen: Enthält Funktionen wie automatische Differenzierung, automatische Vektorisierung und Optimierung des Computing-Graphen
  • Lazy Evaluation: Mehrere Operationen werden gebündelt und Ergebnisse erst berechnet, wenn sie tatsächlich benötigt werden, was eine effiziente Ressourcennutzung ermöglicht
  • Dynamische Graph-Erzeugung: Auch wenn sich die Shape der Eingabedaten ändert, ist eine sofortige Ausführung ohne langsame Kompilierung möglich, was Entwicklung und Debugging erleichtert
  • Multi-Device- und Unified-Memory-Modell:
    • Bisher wurden nur CPU und Apple GPU unterstützt, mit dem CUDA-Backend wird nun Support für NVIDIA-GPU-Umgebungen angestrebt
    • Durch die Unified-Memory-Architektur können auf allen unterstützten Geräten dieselben Objekte ohne Speicherkopie verarbeitet werden
  • Kompaktes und erweiterbares Design: Forschende können das Framework leicht erweitern und verbessern

Unterschiede zu anderen Frameworks und Inspiration

  • Design-Inspiration stammt von NumPy, PyTorch, Jax, ArrayFire und anderen
  • Besonders betont werden das Unified-Memory-Modell, die kompakte Schnittstelle sowie die Umgebung für sofortige Ausführung und Debugging

Typische Beispiele und Einsatzbereiche

  • Im MLX Examples Repo gibt es vielfältige Beispielcodes
    • Training von Transformer-Sprachmodellen
    • Umfangreiche Textgenerierung auf Basis von LLaMA sowie Fine-Tuning mit LoRA
    • Bildgenerierung mit Stable Diffusion
    • Beispiele zur Implementierung aktueller Modelle wie Spracherkennung auf Basis von OpenAI Whisper

Bedeutung von MLX und CUDA-Unterstützung

  • MLX war bislang ein auf Apple Silicon fokussiertes Framework, erweitert mit der Einführung eines CUDA-Backends nun aber seine Möglichkeiten für den allgemeinen Einsatz auch in NVIDIA-GPU-Umgebungen
  • Mit aktueller CUDA-Unterstützung könnte es sich zu einem Framework entwickeln, das sich für aktuelle Forschung und industrielle Nutzung auf Hardware von Apple und NVIDIA gleichermaßen eignet

3 Kommentare

 
gosarinamu 2025-07-16

Man müsste unter macOS doch nur ermöglichen, dass man ausschließlich Nvidia-GPUs nutzen kann ... hach.

 
yangeok 2025-07-16

Gute Neuigkeiten, haha. Hoffentlich wird die CUDA-Unterstützung bald hinzugefügt, damit auch auf dem Mac schnelles Training möglich ist~!

 
GN⁺ 2025-07-15
Hacker-News-Kommentare
  • Ich möchte prüfen, ob ich das richtig verstehe: Erstens können mit MLX gebaute Programme auf Chips mit CUDA-Unterstützung laufen. Zweitens können CUDA-Programme aber nicht auf Apple Silicon laufen. Ich frage mich, ob der Grund dafür ist, dass Punkt 2 eine Urheberrechtsverletzung wäre, insbesondere wegen Nvidias berüchtigtem Lock-in
    • Punkt 1 stimmt. Das ermöglicht es Entwicklern, auf relativ leistungsschwächeren Apple-Geräten zu entwickeln und den fertigen Code auf relativ leistungsstärkeren Nvidia-Systemen bereitzustellen. Das ist aus mehreren Gründen nützlich
    • Punkt 2 ist keine Urheberrechtsverletzung. Eine API kann neu implementiert werden
    • Zu Punkt 2: Das dürfte so wirklich nicht stimmen. AMDs HIP macht im Grunde dasselbe, nachdem OpenCL etwa 2017/2018 aufgegeben wurde
    • Ich hätte gern Punkt 3. Es wäre großartig, wenn man eine NVIDIA-GPU an Apple Silicon anschließen und CUDA nutzen könnte. Ich stelle mir vor, Apple Silicon, Unified Memory, GPU und CUDA zusammen mit PyTorch, JAX oder TensorFlow zu verwenden, habe MLX aber noch nicht richtig ausprobiert
    • Dass Punkt 2 nicht geht, liegt vor allem daran, dass es viel schwieriger ist
  • Falls jemand dachte: „Moment, auf Apple-Plattformen gibt es doch gar keine offizielle CUDA-Unterstützung?“, sollte man auch beachten, dass dieses Patch-Set sogar „Linux-Plattformen mit CUDA 12 und SM 7.0 (Volta) oder höher“ unterstützt
    Installationshinweise
  • Dieses Projekt wird von zcbenz angeführt, der als Macher von Electron und anderem bekannt ist
    Über zcbenz
  • Eines der Hauptmerkmale von MLX ist die Nutzung der Unified Memory Architecture (UMA), und ich frage mich, wie das hier funktioniert
    Siehe den entsprechenden Punkt im Repository-README: MLX GitHub
    Es wäre interessant, das auf alle UMA-APUs auszuweiten, unabhängig vom Hersteller, aber ich frage mich, ob es bei dedizierten GPUs nicht anders gelöst werden müsste
    Aus den PR-Kommentaren scheint hervorzugehen, dass auch CUDA die UMA-API direkt unterstützt und bei Bedarf transparent Kopiervorgänge ausführt
    • Meiner Erfahrung nach führt das fehlende Prefetching zu massiven Speicherengpässen, weil auf Kopiervorgänge gewartet werden muss. Wenn der gesamte Datensatz in den VRAM passt, funktioniert manuelles Prefetching ordentlich, aber in meiner Anwendung, beim ML-Training, war der Leistungseinbruch so stark, dass ich stattdessen direkt auf Streaming-Loads umgestellt habe
  • Etwas anderes Thema, aber es sieht so aus, als seien etliche MLX-Mitwirkende nicht offiziell bei Apple angestellt. Als Beispiel siehe prince_canumas Twitter
    Da fragt man sich, ob Apple das im Hintergrund unterstützt, ohne es offiziell zu machen. Es gab auch Gerüchte über einen Teamwechsel
  • In der PR-Beschreibung steht „ongoing effort“, um ein „CUDA-Backend“ hinzuzufügen
    Das heißt also, dass sich MLX-Code auf x86- plus GeForce-Hardware bauen und ausführen lässt, nicht umgekehrt
  • Wenn es, wie gesagt wurde, „eine gute Developer Experience wäre, Code auf dem Mac zu schreiben und zu testen und ihn dann auf einem Supercomputer bereitzustellen“, stellt sich die Frage, ob man MLX jetzt unter Linux nutzen kann
    Ich habe es selbst getestet, und auf PyPI ist nur eine Python-3.12-Version verfügbar
    MLX-CUDA auf PyPI
  • Ich frage mich, ob das vom Strix Halo beeinflusst ist. Da ich noch etwas Budget für meinen Arbeitsrechner hatte, habe ich einen EVO-X2 gekauft, und der ist ähnlich gut oder besser als mittelklassige znver5-EPYC-Maschinen. Er liegt deutlich vor den meisten EC2- oder GCE-Instanzen, sogar inklusive NVMe. Diese Hardware kostet 1800
    In letzter Zeit erscheinen auch YouTuber-Reviews, die sagen, dass DGX Spark im Vergleich zu Strix Halo beim Preis-Leistungs-Verhältnis schlechter abschneidet. Der Nachteil ist, dass ROCm noch schwach ist, was sich aber bald verbessern dürfte. Wenn CUDA auf Apple-Geräten perfekt laufen würde, wäre das trotz des günstigen und starken Strix eine ernsthaft zu erwägende Option
    • Strix Halo ist genau dasselbe wie der AMD Ryzen AI Max+ 395. Er steckt im Framework Desktop und in verschiedenen Mini-PCs. Die Speicherbandbreite dieses Chips beträgt 200 GB/s, was für eine normale x86-Plattform sehr gut ist, aber weit hinter Nvidia-GPUs zurückliegt, zum Beispiel 1792 GB/s bei einer 5090, oder auch hinter dem Apple M3 Ultra mit 800 GB/s. Das Preis-Leistungs-Verhältnis ist hervorragend, aber bei speicherintensiven Aufgaben wie LLMs fühlt es sich so an, als würde er gerade erst die Mindestschwelle brauchbarer Leistung erreichen
    • Aus der PR-Beschreibung geht klar hervor, dass Cloud-Cluster-Training das Ziel ist
    • Seit 10 Jahren heißt es, AMD-GPUs würden bei neuronalen Netzberechnungen bald zu echter Konkurrenz für Nvidia werden, aber bisher ist das nicht eingetreten
    • Mich würde interessieren, wie er sich im Vergleich zum m4 Mac mini schlägt
  • Ich bin sehr beeindruckt von den MLX-Modellen. Man kann der ganzen Familie lokale Modelle bereitstellen, ohne sich wie bei einem Nvidia-Rechner Gedanken über Brandgefahr machen zu müssen. Ich hoffe, dass Apple Silicon zu einem ernsthaften Konkurrenten im Nvidia-Chip-Lager wird. Ich frage mich auch, ob die CUDA-Unterstützung eine Strategie nach dem Muster embrace, extend, extinguish (EEE) sein könnte
  • Apple plant offenbar, künftig Rechenzentren auf Basis der Chips der m-Serie aufzubauen und sie für App-Entwicklung, Tests und das Hosting externer Dienste zu nutzen