MLX – ein NumPy-ähnliches Array-Framework für Apple Silicon
(github.com/ml-explore)- Ein vom Apple-Machine-Learning-Forschungsteam entwickeltes Array-Framework, das für effizientes und flexibles Machine Learning auf Apple Silicon konzipiert ist
- Bietet eine Python-API, die NumPy nahezu entspricht, sowie eine C++-API mit vollständigem Funktionsumfang
- Unterschiede zu NumPy
- Composable function transformations: MLX verfügt über kombinierbare Funktionstransformationen für automatische Differenzierung, automatische Vektorisierung und Optimierung von Rechengraphen
- Lazy Computation: Berechnungen in MLX sind lazy. Arrays werden nur bei Bedarf materialisiert
- Multi-Device: Operationen können auf allen unterstützten Geräten (CPU, GPU, ...) ausgeführt werden
- Dynamischer Graphaufbau: Der Rechengraph von MLX wird dynamisch erstellt. Auch wenn sich die Form von Funktionsargumenten ändert, wird die Kompilierung nicht langsamer, und das Debugging bleibt einfach und intuitiv
- Inspiriert von Frameworks wie PyTorch, Jax und ArrayFire
- Ein auffälliger Unterschied zwischen diesen Frameworks und MLX ist das Unified Memory Model
- Die Arrays von MLX werden im gemeinsamen Speicher abgelegt. Operationen auf MLX-Arrays können auf allen unterstützten Gerätetypen ausgeführt werden, ohne Daten kopieren zu müssen
- Derzeit unterstützte Gerätetypen sind CPU und GPU
- Enthält verschiedene Beispiele
- Training eines Transformer-Sprachmodells
- Umfangreiche Textgenerierung mit LLaMA und Fine-Tuning mit LoRA
- Bilderzeugung mit Stable Diffusion
- Spracherkennung mit OpenAI's Whisper
2 Kommentare
Das sieht wirklich großartig aus. Ich arbeite oft mit dynamischen Daten und hatte deshalb bei der Nutzung von JAX immer Schwierigkeiten ...
Oh, das klingt gut. Ich werde es mal ausprobieren.