- 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
Man müsste unter macOS doch nur ermöglichen, dass man ausschließlich Nvidia-GPUs nutzen kann ... hach.
Gute Neuigkeiten, haha. Hoffentlich wird die CUDA-Unterstützung bald hinzugefügt, damit auch auf dem Mac schnelles Training möglich ist~!
Hacker-News-Kommentare
Installationshinweise
Über zcbenz
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
Da fragt man sich, ob Apple das im Hintergrund unterstützt, ohne es offiziell zu machen. Es gab auch Gerüchte über einen Teamwechsel
Das heißt also, dass sich MLX-Code auf x86- plus GeForce-Hardware bauen und ausführen lässt, nicht umgekehrt
Ich habe es selbst getestet, und auf PyPI ist nur eine Python-3.12-Version verfügbar
MLX-CUDA auf PyPI
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