Apple hat mit dem M5-Chip erstmals einen eigenen Neural Accelerator in jeden einzelnen GPU-Kern eingebaut. Für Entwickler in Österreich und im gesamten DACH-Raum bedeutet das: Sprachmodelle laufen auf dem MacBook Pro M5 spürbar schneller lokal, ganz ohne Cloud-API, ohne monatliches Abo und ohne separate Grafikkarte. Wer bisher für jede Anfrage an ein gehostetes Modell bezahlt hat oder Bedenken hat, sensible Firmendaten an einen externen Anbieter zu schicken, bekommt mit Apples eigenem MLX-Framework eine Alternative, die direkt auf dem eigenen Laptop läuft.

MLX kostet allerdings etwas Einarbeitung, das Framework ist jünger als etablierte Werkzeuge und die Dokumentation wächst noch. Diese Anleitung schließt genau diese Lücke: In 12 konkreten Schritten installieren Sie MLX und mlx-lm, laden ein quantisiertes Modell, starten einen lokalen Chat-Server mit OpenAI-kompatibler Schnittstelle und tunen ein eigenes Modell per LoRA nach. Am Ende steht ein funktionierendes Beispielprojekt, das Sie direkt weiterverwenden können. Rechnen Sie mit rund 45 Minuten für die komplette Einrichtung, der Großteil davon entfällt auf den Download der Modelldateien im Hintergrund.

Warum lokale KI-Inferenz auf dem Mac gerade jetzt attraktiv wird

Drei Gründe treiben den Trend zu lokalen Sprachmodellen aktuell an. Erstens die Kosten: Wer Modelle über eine Cloud-API abfragt, zahlt pro Token, und das summiert sich bei intensiver Nutzung schnell. Ein einmal heruntergeladenes Modell auf dem eigenen Mac verursacht dagegen keine laufenden Kosten mehr, nur den Stromverbrauch. Zweitens die Datenhoheit: Prompts, die lokal verarbeitet werden, verlassen das Gerät nie. Für Entwickler, die mit Kundendaten, internem Quellcode oder vertraulichen Dokumenten arbeiten, ist das ein handfester Vorteil gegenüber jeder Cloud-Lösung, unabhängig davon, was der jeweilige Anbieter in seinen Datenschutzbestimmungen verspricht.

Drittens die Latenz: Ohne Netzwerk-Roundtrip antwortet ein lokales Modell oft schneller als ein Cloud-Dienst, besonders bei kurzen, häufigen Anfragen etwa in einer Entwicklungsumgebung mit Autovervollständigung. Der M5-Chip verschiebt dabei die Grenze, ab der lokale Inferenz auf einem Laptop praktikabel wird, spürbar nach oben. Wo frühere Apple-Silicon-Generationen bei größeren Modellen an Bandbreite und Rechenleistung der GPU an ihre Grenzen stießen, erlauben die dedizierten Neural Accelerators im M5 jetzt auch dichtere Modelle mit vertretbarer Wartezeit bis zur ersten Antwort.

Datenschutz und IT-Sicherheit bei lokalen KI-Modellen

Für ein Sicherheits- und Datenschutz-Publikum ist der Aspekt der Datenhoheit besonders relevant. Sobald ein Prompt an eine Cloud-API geschickt wird, verlässt er die eigene Kontrolle, selbst wenn der Anbieter eine Nicht-Speicherung zusichert. Bei lokaler Inferenz mit MLX bleibt jede Eingabe auf dem Gerät, es gibt keinen Netzwerk-Request, den ein Angreifer im Firmennetz abfangen oder protokollieren könnte, und keine Log-Dateien bei einem Drittanbieter, die bei einem Datenleck offengelegt werden könnten.

Das entbindet Sie aber nicht von grundlegender Sorgfalt. Modelle, die Sie von Hugging Face herunterladen, sollten aus vertrauenswürdigen Quellen wie der offiziellen mlx-community stammen, da heruntergeladene Modell-Dateien grundsätzlich ausführbaren Code in Form von Tokenizer-Skripten enthalten können. Prüfen Sie bei sensiblen Einsatzszenarien zusätzlich, ob der lokale Server aus Schritt 8 nur auf localhost lauscht und nicht versehentlich im gesamten WLAN erreichbar ist, insbesondere wenn Sie in einem Firmen- oder Co-Working-Netzwerk arbeiten. Ein einfacher Test mit curl http://IHRE-LOKALE-IP:8080/v1/models von einem zweiten Gerät im selben Netz zeigt, ob der Port von außen erreichbar ist.

Für Unternehmen in Österreich, die unter die DSGVO fallen, kann lokale Inferenz zudem die Argumentation gegenüber Aufsichtsbehörden vereinfachen, weil kein Auftragsverarbeitungsvertrag mit einem externen KI-Anbieter nötig ist und keine personenbezogenen Daten das Land oder die EU verlassen. Das ersetzt keine vollständige Datenschutz-Folgenabschätzung, reduziert aber die Zahl der beteiligten Parteien und damit die Angriffsfläche spürbar, was gerade bei der Verarbeitung von Kunden- oder Personaldaten ein Argument für den lokalen Ansatz ist.

Was ist MLX? Apples KI-Framework für Apple Silicon

MLX ist ein quelloffenes Array-Framework, das Apple speziell für Apple Silicon entwickelt hat. Es kombiniert eine NumPy-ähnliche Syntax mit Funktionstransformationen für automatische Differenzierung, konzeptionell näher an JAX als an klassischem PyTorch. Der entscheidende Unterschied zu CUDA-basierten Frameworks: MLX nutzt den Unified-Memory-Speicher der Mac-Chips direkt. Daten müssen nicht zwischen separatem CPU- und GPU-Speicher hin- und herkopiert werden, weil beide sich denselben physischen RAM teilen. Das spart Zeit bei jedem einzelnen Rechenschritt und erlaubt größere Modelle im Verhältnis zum verbauten Arbeitsspeicher, weil kein Speicher doppelt für CPU- und GPU-Kopien reserviert werden muss.

Technisch arbeitet MLX mit lazy evaluation: Operationen werden erst ausgeführt, wenn ihr Ergebnis tatsächlich gebraucht wird, etwa beim Ausdrucken oder Speichern eines Werts. Das erlaubt es dem Framework, mehrere Rechenschritte vor der Ausführung zu einem effizienteren Ablauf zusammenzufassen, statt jede Zeile Code sofort isoliert zu berechnen. Für Entwickler, die von PyTorch kommen, ist der Umstieg meist unkompliziert, weil sich viele Funktionsnamen und Konzepte ähneln, nur eben auf die Unified-Memory-Architektur von Apple Silicon zugeschnitten.

Das Projekt liegt öffentlich auf GitHub unter ml-explore/mlx und bringt neben der Python-API auch Swift- und C++-Bindings mit. Für die meisten Tutorials reicht aber das Zusatzpaket mlx-lm, das fertige Kommandozeilen-Werkzeuge zum Laden, Ausführen und Feintunen von Sprachmodellen mitliefert, sodass Sie nicht jede Operation selbst aus der Low-Level-API zusammensetzen müssen. Apple pflegt das Paket aktiv und dokumentiert Neuerungen auf der offiziellen Machine-Learning-Research-Seite.

MLX works with all Apple silicon systems, and with the latest macOS beta release, it now takes advantage of the Neural Accelerators in the new M5 chip, introduced in the new 14-inch MacBook Pro.

Apple Machine Learning Team, machinelearning.apple.com

Der M5-Chip im Detail: Neural Accelerators und Speicherbandbreite

Apple hat den M5 am 15. Oktober 2025 vorgestellt, zunächst für das 14-Zoll MacBook Pro, das iPad Pro und die Vision Pro. Der Basis-M5 bringt eine 10-Kern-CPU mit vier Performance- und sechs Effizienzkernen, eine 10-Kern-GPU sowie eine 16-Kern Neural Engine mit. Neu ist, dass jeder einzelne GPU-Kern jetzt einen eigenen Neural Accelerator besitzt, also eine dedizierte Einheit für Matrixmultiplikationen direkt im Grafikprozessor. Genau diese Operation macht bei der Inferenz von Sprachmodellen den Großteil der Rechenlast aus, weil jede Schicht eines Transformer-Modells im Kern aus Matrixmultiplikationen besteht.

The Neural Accelerators provide dedicated matrix-multiplication operations, which are critical for many machine learning workloads, and enable even faster model inference experiences on Apple silicon, as showcased in this post.

Apple Machine Learning Team, machinelearning.apple.com

Wichtig für das Verständnis: Die Neural Accelerators in der GPU sind nicht dasselbe wie die Neural Engine. Die Neural Engine ist ein separater, auf niedrigen Stromverbrauch optimierter Baustein, der etwa für Foto- und Videoanalyse in macOS-Systemfunktionen zuständig ist. Für MLX-Inferenz von Sprachmodellen zählt vor allem die GPU mit ihren neuen Neural Accelerators, weil mlx-lm die Rechenlast primär dorthin verlagert.

Bei der Speicherbandbreite legt Apple laut eigenen Angaben rund 30 Prozent gegenüber dem M4 zu, der Basis-M5 kommt auf 153 GB/s. Für die GPU-KI-Leistung nennt Apple eine bis zu vierfache Spitzenrechenleistung gegenüber dem M4 sowie eine bis zu 3,5-fach schnellere KI-Performance in der GPU insgesamt. Wer mehr Speicher für größere Modelle braucht, greift zum M5 Pro oder M5 Max, die beide ebenfalls eine 16-Kern Neural Engine mitbringen, aber deutlich mehr Unified Memory und Bandbreite bieten, was bei sehr großen Modellen den entscheidenden Unterschied macht, ob ein Modell überhaupt geladen werden kann.

ChipNeural EngineMax. Unified MemorySpeicherbandbreite
M516-Kernbis 32 GB (modellabhängig)153 GB/s
M5 Pro16-Kernbis 64 GBbis 307 GB/s
M5 Max16-Kernbis 128 GBbis 614 GB/s

Die Werte stammen aus Apples offiziellen Techspec-Seiten zum MacBook Pro. In Österreich startet das 14-Zoll MacBook Pro mit M5, 16 GB Arbeitsspeicher und 512 GB Speicher laut Apples Store unter apple.com/at bei 1.799 Euro inklusive Mehrwertsteuer, mit Bildungsrabatt bei 1.679 Euro. Für die in dieser Anleitung gezeigten Modelle bis etwa 8 Milliarden Parameter reicht dieses Einstiegsmodell bereits aus.

Voraussetzungen: Hardware, macOS und Python-Version

Bevor Sie loslegen, prüfen Sie diese Punkte. Die Anleitung funktioniert grundsätzlich auf jedem Apple-Silicon-Mac von M1 bis M5, die Neural Accelerators und damit den vollen Geschwindigkeitsschub bei der ersten Antwort nutzen aber nur M5-Chips.

  • MacBook Pro, MacBook Air, Mac mini oder Mac Studio mit Apple-Silicon-Chip (für Neural Accelerators: M5, M5 Pro oder M5 Max)
  • macOS 26 (Tahoe) oder neuer, damit MLX die Neural Accelerators überhaupt ansprechen kann
  • Python 3.10 oder neuer, als native arm64-Version, nicht unter Rosetta emuliert
  • Homebrew in einer aktuellen Version als Paketmanager
  • Mindestens 16 GB Unified Memory für kleinere Modelle mit 3 bis 8 Milliarden Parametern, 32 GB oder mehr für 14B-Modelle
  • Rund 20 GB freier Speicherplatz für Modelldateien, virtuelle Umgebung und Zwischenspeicher
  • Xcode Command Line Tools für Compiler und Build-Werkzeuge
  • Optional ein Hugging-Face-Konto samt Zugriffstoken für lizenzpflichtige, sogenannte gated Modelle

Wenn Sie unsicher sind, welche Konfiguration Sie besitzen, öffnen Sie das Apple-Menü, wählen Sie ‘Über diesen Mac’ und prüfen Sie Chip-Bezeichnung und Arbeitsspeicher. Ein M5 mit 16 GB reicht für den Großteil dieser Anleitung aus, nur beim abschließenden LoRA-Training profitieren Sie von mehr Speicher, weil während des Trainings zusätzlich zum Modell noch Gradienten und Optimizer-Zustände im Speicher gehalten werden.

Halten Sie außerdem etwas Geduld für den ersten Durchlauf bereit. Die größten Zeitfresser sind nicht die einzelnen Terminal-Befehle selbst, sondern der Download der Modelldateien, der je nach gewählter Modellgröße und Internetgeschwindigkeit zwischen wenigen Minuten und einer Viertelstunde dauert. Planen Sie diese Downloads am besten gleich zu Beginn ein und arbeiten Sie währenddessen bereits die Installationsschritte durch, statt am Ende auf den Fortschrittsbalken zu warten.

Installation: MLX und mlx-lm einrichten (Schritte 1–4)

Schritt 1: Xcode Command Line Tools installieren. Diese liefern Compiler und Build-Werkzeuge, die MLX beim Kompilieren nativer Erweiterungen benötigt. Ohne sie bricht die Installation einiger Abhängigkeiten mit kryptischen Fehlermeldungen ab.

xcode-select --install

Schritt 2: Homebrew prüfen oder installieren. Falls noch nicht vorhanden, installieren Sie den Paketmanager wie folgt und kontrollieren im Anschluss die Version, um sicherzugehen, dass die Installation geklappt hat.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew --version

Schritt 3: Virtuelle Python-Umgebung anlegen. Eine eigene venv verhindert Versionskonflikte mit anderen Python-Projekten auf Ihrem Mac und lässt sich bei Problemen einfach löschen und neu aufsetzen.

python3 -m venv mlx-env
source mlx-env/bin/activate
pip install -U pip

Schritt 4: MLX und mlx-lm installieren. Das Paket mlx-lm bringt MLX als Abhängigkeit automatisch mit, ein separater Installationsschritt für MLX selbst ist normalerweise nicht nötig.

pip install mlx-lm

Das offizielle Paket finden Sie auf PyPI, den Quellcode auf GitHub. Prüfen Sie die Installation, indem Sie python3 -c "import mlx_lm" ausführen. Kommt keine Fehlermeldung zurück, war die Installation erfolgreich und Sie können mit dem ersten Modell weitermachen.

Erstes Modell laden, quantisieren und Text generieren (Schritte 5–7)

Schritt 5: Modell per Kommandozeile testen. mlx-lm lädt fertig konvertierte Modelle direkt von Hugging Face, meist aus der Community-Sammlung mlx-community, die gängige offene Modelle bereits im passenden Format bereitstellt.

mlx_lm.generate --model mlx-community/Qwen3-4B-Instruct-2507-4bit --prompt "Erklaere Unified Memory in zwei Saetzen."

Beim ersten Aufruf lädt mlx-lm die Modelldateien automatisch herunter und legt sie im lokalen Hugging-Face-Cache ab. Je nach Modellgröße und Internetverbindung kann das einige Minuten dauern, jeder weitere Aufruf desselben Modells startet danach spürbar schneller. Achten Sie beim Modell-Auswahl zusätzlich auf die jeweilige Lizenz: Mistral- und Qwen-Modelle stehen meist unter offenen Lizenzen für kommerzielle Nutzung, bei manchen Llama-Varianten gelten dagegen zusätzliche Bedingungen ab einer bestimmten Nutzerzahl, die auf der jeweiligen Hugging-Face-Modellseite dokumentiert sind.

Schritt 6: Modell in Python laden. Für eigene Skripte importieren Sie load() und generate() direkt aus mlx_lm, statt jedes Mal die Kommandozeile zu bemühen.

from mlx_lm import load, generate

model, tokenizer = load("mlx-community/Mistral-7B-Instruct-v0.3-4bit")
response = generate(model, tokenizer, prompt="Hallo, wer bist du?", verbose=True)
print(response)

Der Parameter verbose=True gibt während der Generierung laufend Zwischenstatistiken aus, etwa die Anzahl generierter Tokens und die Geschwindigkeit in Tokens pro Sekunde. Für den produktiven Einsatz in eigenen Anwendungen setzen Sie ihn meist auf False und werten stattdessen nur den finalen Antworttext aus.

Schritt 7: Die richtige Quantisierungsstufe wählen. Als Faustregel braucht ein 4-bit-quantisiertes Modell ungefähr die halbe Parameterzahl in Gigabyte Arbeitsspeicher. Ein 7B-Modell passt damit locker in 16 GB, ein 70B-Modell braucht dagegen einen M5 Max mit viel Unified Memory. 8-bit-Varianten liefern meist etwas höhere Antwortqualität, verdoppeln aber ungefähr den Speicherbedarf gegenüber 4-bit.

ModellgrößeRAM-Bedarf (4-bit, ca.)Empfohlene Konfiguration
3–4B Parameter2–3 GBM5, 16 GB
7–8B Parameter4–5 GBM5, 16 GB
14B Parameter8–9 GBM5, 16/24 GB
30B Parameter (MoE)17–19 GBM5 Pro, 32 GB+
70B Parameter38–40 GBM5 Max, 64 GB+

In LLM inference, generating the first token is compute-bound, and takes full advantage of the Neural Accelerators. The M5 pushes the time-to-first-token generation under 10 seconds for a dense 14B architecture, and under 3 seconds for a 30B MoE, delivering strong performance for these architectures on a MacBook Pro.

Apple Machine Learning Team, machinelearning.apple.com

Für den Einstieg eignen sich einige aus mlx-community vorkonvertierte Modelle besonders gut, weil sie bereits quantisiert vorliegen und ohne zusätzliche Konvertierung direkt geladen werden können.

ModellGrößeGut geeignet für
mlx-community/Qwen3-4B-Instruct-2507-4bit4BSchnelle Antworten, Einsteiger-Setups mit 16 GB
mlx-community/Mistral-7B-Instruct-v0.3-4bit7BAllgemeine Chat- und Textaufgaben
mlx-community/Llama-3-8B-Instruct-4bit8BProgrammierhilfe, längere Kontexte
mlx-community/Phi-3-mini-4k-instruct-4bit3,8BSehr sparsame Konfigurationen, schnelle Iteration

Einen lokalen Chat-Server mit mlx_lm.server starten (Schritte 8–9)

Schritt 8: Server starten. mlx-lm bringt einen eingebauten Server mit, der eine zur OpenAI-API kompatible Schnittstelle bereitstellt. Damit lassen sich viele bestehende Tools und SDKs einfach auf ein lokales Modell umbiegen, ohne deren Code anzupassen, solange sie nur die Basis-URL konfigurierbar machen.

mlx_lm.server --model mlx-community/Qwen3-4B-Instruct-2507-4bit --port 8080

Schritt 9: Server testen. Senden Sie eine Anfrage per curl, wie Sie es von der OpenAI-API gewohnt sind, nur eben gegen localhost statt gegen einen externen Endpunkt.

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "mlx-community/Qwen3-4B-Instruct-2507-4bit", "messages": [{"role": "user", "content": "Was ist MLX?"}]}'

Läuft der Server, können Sie ihn in jede Anwendung einbinden, die eine OpenAI-kompatible Basis-URL akzeptiert, etwa eigene Chat-Frontends, IDE-Erweiterungen oder Automatisierungs-Skripte, ohne laufende Cloud-Kosten und ohne dass Prompts das Gerät verlassen. Für den Dauerbetrieb im Hintergrund bietet sich an, den Server-Befehl in ein LaunchAgent-Skript von macOS einzubinden, damit er automatisch beim Login startet.

In der Praxis nutzen Entwickler diesen lokalen Server häufig als Backend für Editor-Erweiterungen, die eigentlich für Cloud-Modelle gedacht sind, indem sie nur die Basis-URL auf localhost umbiegen. Damit lässt sich etwa Code-Vervollständigung in einer IDE komplett offline betreiben, was besonders in Umgebungen mit strengen Netzwerkrichtlinien oder ohne verlässliche Internetverbindung unterwegs ein praktischer Vorteil ist.

Modelle mit LoRA feintunen (Schritte 10–11)

Schritt 10: Trainingsdaten vorbereiten. mlx-lm erwartet Trainingsdaten im JSONL-Format, eine Zeile pro Beispiel mit Prompt und gewünschter Antwort. Legen Sie einen Ordner mit train.jsonl und valid.jsonl an. Eine einzelne Zeile sieht etwa so aus:

{"messages": [{"role": "user", "content": "Was ist Unified Memory?"}, {"role": "assistant", "content": "Unified Memory ist ein gemeinsamer Speicherbereich, den CPU und GPU eines Apple-Silicon-Chips ohne Kopiervorgang teilen."}]}

Schritt 11: LoRA-Training starten. Statt das komplette Modell mit Milliarden Parametern neu zu trainieren, passt LoRA (Low-Rank Adaptation) nur kleine, zusätzliche Gewichtsmatrizen an. Das spart Speicher und Trainingszeit erheblich und ist auf einem Laptop überhaupt erst praktikabel.

mlx_lm.lora --model mlx-community/Mistral-7B-Instruct-v0.3-4bit \
  --train \
  --data ./training_data \
  --iters 600 \
  --batch-size 4

Während des Trainings gibt mlx-lm laufend den Trainings- und Validierungsverlust aus. Sinkt der Validierungsverlust nicht mehr weiter oder steigt er sogar wieder an, ist ein guter Zeitpunkt zum Abbrechen erreicht, weil das Modell sonst beginnt, die Trainingsdaten auswendig zu lernen statt zu verallgemeinern.

Nach dem Training liegen die Adapter-Gewichte separat vor. Mit mlx_lm.fuse verschmelzen Sie sie mit dem Basismodell zu einem eigenständigen, feingetunten Modell, das Sie danach genauso laden wie jedes andere mlx-lm-Modell:

mlx_lm.fuse --model mlx-community/Mistral-7B-Instruct-v0.3-4bit --adapter-path ./adapters

Schritt 12 und komplettes Beispielprojekt: Ein lokaler KI-Assistent in Python

Schritt 12: Alles zu einem funktionierenden Projekt zusammenbauen. Das folgende Skript lädt ein Modell einmalig und startet danach eine einfache Chat-Schleife im Terminal, komplett offline nach dem ersten Download, inklusive Gesprächsverlauf über mehrere Nachrichten hinweg.

from mlx_lm import load, generate

MODEL_NAME = "mlx-community/Qwen3-4B-Instruct-2507-4bit"

def main():
    model, tokenizer = load(MODEL_NAME)
    print("Lokaler KI-Assistent (MLX) - 'exit' zum Beenden")
    history = []
    while True:
        user_input = input("Sie: ")
        if user_input.strip().lower() == "exit":
            break
        history.append({"role": "user", "content": user_input})
        prompt = tokenizer.apply_chat_template(
            history, add_generation_prompt=True, tokenize=False
        )
        response = generate(model, tokenizer, prompt=prompt, max_tokens=512, verbose=False)
        print(f"Assistent: {response}")
        history.append({"role": "assistant", "content": response})

if __name__ == "__main__":
    main()

Speichern Sie den Code als assistant.py und starten Sie ihn mit python3 assistant.py. Der Gesprächsverlauf wird bei jeder neuen Nachricht mitgeschickt, damit das Modell den Kontext vorheriger Fragen kennt. Eine Beispielsitzung sieht dann so aus:

$ python3 assistant.py
Lokaler KI-Assistent (MLX) - 'exit' zum Beenden
Sie: Was ist der Unterschied zwischen MLX und PyTorch?
Assistent: MLX ist auf Apple Silicon und Unified Memory zugeschnitten, waehrend
PyTorch plattformuebergreifend arbeitet und meist CUDA-GPUs anspricht...
Sie: exit

Für den produktiven Einsatz lässt sich dieses Grundgerüst leicht erweitern, etwa um eine Weboberfläche über Flask oder FastAPI, um Streaming-Antworten Token für Token statt am Stück, oder um eine Anbindung an lokale Dokumente per Retrieval-Augmented Generation.

MLX im Vergleich: Ollama, llama.cpp und PyTorch mit MPS

MLX ist nicht die einzige Möglichkeit, Sprachmodelle lokal auf einem Mac auszuführen. Wer bereits Ollama nutzt, kennt den einfacheren Einstieg, verliert aber etwas Kontrolle über Feinabstimmung und Konvertierung eigener Modelle. llama.cpp läuft dafür auch unter Linux und Windows, während PyTorch mit MPS-Backend vor allem für Forschung und eigenes Training gedacht ist und mehr Einarbeitung verlangt.

ToolBackendIdeal fürSetup-Aufwand
MLX / mlx-lmApple-natives Array-FrameworkEntwickler, Feintuning, eigene Skripteniedrig
Ollamallama.cpp-Runtime mit eigenem LayerEinsteiger, schnelle GUI-nahe Nutzungsehr niedrig
llama.cppC/C++, GGUF-ModelleCross-Platform, auch Linux und Windowsmittel
PyTorch (MPS-Backend)PyTorch mit Apple-GPU-AnbindungForschung, Training außerhalb des MLX-Ökosystemshoch

Wer bereits unseren Artikel zum Einstieg über Ollama auf Apple Silicon gelesen hat, kann MLX als nächsten Schritt sehen: mehr Kontrolle, gezielte Nutzung der Neural Accelerators auf M5-Hardware, aber auch mehr Handarbeit im Terminal statt einem einzigen Installationsbefehl. Für Nutzer, die zusätzlich Windows-Anwendungen auf einem Apple-Silicon-Mac betreiben, lohnt sich auch ein Blick in unseren Beitrag zu Windows-Anwendungen über CrossOver, auch wenn dieser Anwendungsfall inhaltlich getrennt von der KI-Inferenz auf demselben Chip läuft.

Bei der Lizenzierung der Werkzeuge selbst gibt es kaum Hürden: MLX steht unter einer freizügigen Open-Source-Lizenz, ebenso Ollama und llama.cpp. Der eigentliche Unterschied liegt also nicht im Preis oder in rechtlichen Einschränkungen der Software, sondern in Bedienkomfort, Kontrolle über Details wie Quantisierung und Feintuning sowie darin, wie gut das jeweilige Werkzeug die spezifische Hardware ausnutzt, auf der es läuft.

Performance in der Praxis: Was Apple zum M5 bestätigt

Unabhängige Tokens-pro-Sekunde-Vergleiche zwischen M5, M4 und M3 waren zum Zeitpunkt dieses Artikels noch nicht breit über mehrere unabhängige Testquellen bestätigt. Verlassen Sie sich deshalb primär auf Apples eigene, offiziell veröffentlichte Zahlen zur relativen KI-Leistung und messen Sie Ihre eigene Konfiguration zusätzlich selbst, weil reale Werte stark von Modell, Kontextlänge und Energiemodus abhängen.

The M5 chip introduces dedicated Neural Accelerators, and MLX can target them for exactly this kind of work.

Apple Developer Relations, WWDC26-Session, developer.apple.com

Mit folgendem Mini-Skript messen Sie Tokens pro Sekunde auf Ihrem eigenen Gerät. Die Werte hängen stark vom gewählten Modell, dem Kontextfenster und dem Energiemodus ab, ein MacBook Pro im Akkubetrieb mit aktiviertem Energiesparmodus liefert spürbar niedrigere Werte als im Netzbetrieb.

import time
from mlx_lm import load, generate

model, tokenizer = load("mlx-community/Qwen3-4B-Instruct-2507-4bit")
prompt = "Schreibe einen kurzen Absatz ueber Unified Memory."

start = time.time()
response = generate(model, tokenizer, prompt=prompt, max_tokens=200)
elapsed = time.time() - start
tokens = len(tokenizer.encode(response))
print(f"{tokens} Tokens in {elapsed:.2f}s -> {tokens/elapsed:.1f} Tokens/Sek")

Eine Beispielausgabe, rein zur Illustration des Formats, Werte auf Ihrem Gerät weichen je nach Modell, Akkumodus und Hintergrundprozessen ab:

187 Tokens in 4.10s -> 45.6 Tokens/Sek

Wenn Sie mehrere Modelle vergleichen wollen, führen Sie das Skript nacheinander mit unterschiedlichen Modellnamen aus und notieren sich die Werte in einer kleinen Tabelle. So bekommen Sie eine für Ihren konkreten Anwendungsfall belastbare Grundlage, statt sich auf allgemeine Herstellerangaben verlassen zu müssen.

Die häufigsten Fehler beim Einstieg in MLX

  • Nicht-konvertierte Modelle laden: Reine PyTorch- oder GGUF-Checkpoints laufen nicht direkt in mlx-lm. Nutzen Sie vorkonvertierte Modelle aus mlx-community oder konvertieren Sie selbst mit mlx_lm.convert, bevor Sie ein Modell laden.
  • Zu großes Modell ohne Rücksicht auf RAM wählen: Ein 70B-Modell auf einem 16-GB-MacBook Air führt zu Swapping und macht das System spürbar langsam bis unbenutzbar. Prüfen Sie vorher die Quantisierungstabelle aus Schritt 7.
  • Venv vergessen zu aktivieren: Nach einem Terminal-Neustart ist die virtuelle Umgebung nicht mehr aktiv, mlx_lm-Befehle schlagen dann mit ‘command not found’ fehl, obwohl die Installation an sich korrekt war.
  • Falsche Python-Architektur: Ein unter Rosetta laufendes x86_64-Python kann MLX nicht sinnvoll nutzen. Prüfen Sie mit python3 -c "import platform; print(platform.machine())", ob arm64 ausgegeben wird.
  • Veraltetes macOS: Ohne macOS 26 oder neuer bleiben die Neural Accelerators des M5 ungenutzt, MLX fällt dann auf einen langsameren Pfad zurück, ohne dass dies durch eine offensichtliche Fehlermeldung sichtbar wird.
  • Ollama und einen MLX-Server parallel laufen lassen: Beide belegen dauerhaft Unified Memory, was bei 16-GB-Geräten schnell zu Speicherengpässen und spürbaren Verlangsamungen führt.
  • Kontextfenster zu großzügig wählen: Ein unnötig langer Prompt oder Gesprächsverlauf verlangsamt jede Antwort, weil das Modell bei jedem neuen Token den gesamten bisherigen Kontext neu verarbeiten muss.

Fehlerbehebung: Troubleshooting-Tabelle

Die folgende Tabelle deckt die Probleme ab, auf die Entwickler beim Einstieg in MLX und mlx-lm laut gängigen Support-Threads und der offiziellen Dokumentation am häufigsten stoßen.

ProblemWahrscheinliche UrsacheLösung
zsh: command not found: mlx_lm.generateVirtuelle Umgebung nicht aktiviertsource mlx-env/bin/activate erneut ausführen
MLX lässt sich nicht installierenIntel-Mac oder fehlende Command Line ToolsMLX benötigt Apple Silicon; xcode-select –install nachholen
Import-Fehler bei mlx_lmPython läuft unter Rosetta (x86_64)Native arm64-Python-Installation verwenden, venv neu anlegen
Out of Memory beim Laden großer ModelleModell zu groß für Unified MemoryKleinere Quantisierung (4-bit) oder kleineres Modell wählen
Modell-Download bricht ab oder 401-FehlerGated Model auf Hugging Face ohne ZugriffLizenz auf Hugging Face akzeptieren, Access Token per huggingface-cli login setzen
404 beim Laden eines ModellnamensTippfehler im –model-ParameterModellnamen exakt aus mlx-community auf Hugging Face kopieren
Server startet, aber Port ist belegtEin anderer Prozess nutzt Port 8080 bereitsAnderen Port mit –port 8081 angeben
Sehr langsame erste AntwortKompilierung und Warm-up beim ersten Aufruf, oder Akkubetrieb mit EnergiesparmodusZweiten Lauf abwarten, im Netzbetrieb testen, Low Power Mode deaktivieren
LoRA-Training bricht mit Speicherfehler abBatch-Size oder Rang zu hoch für verfügbaren RAMBatch-Size reduzieren oder –iters und Adaptergröße verkleinern
Antworten wirken abgehackt oder brechen abmax_tokens-Wert zu niedrig gesetztmax_tokens im generate()-Aufruf erhöhen

Bleibt ein Problem nach diesen Schritten bestehen, hilft oft ein kompletter Neuanfang der virtuellen Umgebung: venv löschen, neu anlegen, mlx-lm neu installieren. Die meisten hartnäckigen Fehler entstehen durch vermischte Python-Installationen aus unterschiedlichen Quellen wie Homebrew, der System-Python-Version und manuell heruntergeladenen Interpretern, die sich gegenseitig in die Quere kommen.

Profi-Tipps für Fortgeschrittene

Wer die Grundlagen aus dieser Anleitung sicher beherrscht, findet in MLX noch einiges an Spielraum für Optimierung und eigene Experimente. Die folgenden Punkte lohnen sich, sobald das erste Modell zuverlässig läuft.

  • Eigene Hugging-Face-Modelle mit mlx_lm.convert selbst nach MLX konvertieren und dabei direkt quantisieren, über den Parameter -q lässt sich die Bit-Tiefe steuern.
  • Für kürzere Antwortzeiten Speculative Decoding mit einem kleinen Draft-Modell kombinieren, das erste Tokens liefert, während das größere Hauptmodell im Hintergrund nachzieht.
  • GUI-Tools wie LM Studio nutzen auf Apple Silicon intern ebenfalls MLX als Backend-Option, ein Blick unter die Haube lohnt sich für den Vergleich mit dem eigenen CLI-Setup.
  • Für parallele Anfragen mehrerer Nutzer den Server-Modus statt Einzelskripten verwenden, das spart wiederholtes Laden desselben Modells in den Speicher.
  • Wer eigene Schichten oder Operatoren entwickeln will, findet in mlx.core die Low-Level-API, mit der sich auch neue Architekturen experimentell umsetzen lassen.
  • Regelmäßig pip install -U mlx-lm ausführen, da Apple das Paket häufig aktualisiert und neue Modellarchitekturen sowie Performance-Verbesserungen für den M5 laufend nachreicht.

Häufig gestellte Fragen

Läuft MLX auch auf älteren Macs mit M1 bis M4?

Ja. MLX unterstützt grundsätzlich alle Apple-Silicon-Chips seit dem M1. Die dedizierten Neural Accelerators pro GPU-Kern und damit den vollen Geschwindigkeitsschub bei der Inferenz gibt es aber nur ab dem M5, ältere Chips nutzen weiterhin ihre reguläre GPU ohne diese zusätzliche Einheit.

Brauche ich nach dem Modell-Download noch Internet?

Nein. Sobald ein Modell einmal heruntergeladen und im lokalen Cache abgelegt ist, läuft die Inferenz komplett lokal und offline, es werden keine Daten an eine Cloud-API gesendet und keine laufende Internetverbindung benötigt.

Ist MLX schneller als Ollama?

Auf M5-Hardware kann MLX durch die direkte Nutzung der Neural Accelerators im Vorteil sein, da Ollama intern auf llama.cpp aufsetzt und diese neue Hardware-Funktion nicht in jedem Fall gleich vollständig ausnutzt. Für den schnellsten Einstieg ohne Terminal-Erfahrung bleibt Ollama aber weiterhin einfacher zu bedienen.

Wie viel Arbeitsspeicher brauche ich mindestens?

16 GB Unified Memory reichen für 4-bit-quantisierte Modelle bis etwa 8 Milliarden Parameter aus. Für 14B-Modelle empfehlen sich 24 GB oder mehr, für 30B-MoE-Modelle und größer ein M5 Pro oder M5 Max mit 32 GB Unified Memory aufwärts, insbesondere wenn parallel weitere Anwendungen geöffnet bleiben sollen.

Funktioniert MLX auch unter Windows oder Linux?

Nein, MLX ist explizit auf Apple Silicon zugeschnitten und nutzt dessen Unified-Memory-Architektur direkt aus. Für Windows oder Linux sind llama.cpp oder PyTorch mit CUDA-Unterstützung die passenderen Werkzeuge für lokale Inferenz.

Was kostet ein MacBook Pro mit M5?

Das 14-Zoll MacBook Pro mit M5, 16 GB Arbeitsspeicher und 512 GB Speicher startet in Österreich laut Apple Store bei 1.799 Euro inklusive Mehrwertsteuer, mit Bildungsrabatt bei 1.679 Euro. Wer größere Modelle lokal ausführen will, sollte eine Konfiguration mit mehr Unified Memory einplanen, was den Preis entsprechend erhöht.

Kann ich mit MLX auch Bildmodelle wie Stable Diffusion ausführen?

Ja, das MLX-Ökosystem umfasst neben mlx-lm für Sprachmodelle auch Beispiele und Community-Pakete für Diffusionsmodelle, die dieselbe Unified-Memory-Architektur und dieselben Neural Accelerators nutzen wie die hier gezeigten Sprachmodelle.

Muss ich für die neuen WWDC26-Funktionen etwas zusätzlich installieren?

Für die in der WWDC26-Session vorgestellten Funktionen rund um lokale, agentenbasierte KI auf dem Mac reicht ein aktuelles macOS 26 zusammen mit einer aktuellen mlx-lm-Version aus, ein separates Zusatzpaket ist dafür nicht nötig.

Lohnt sich der Umstieg von einer Cloud-API auf ein lokales Modell finanziell?

Das hängt vom Nutzungsvolumen ab. Bei gelegentlicher Nutzung bleibt eine Cloud-API meist günstiger, weil die Anschaffung eines M5-Macs die laufenden Kosten pro Anfrage bei weitem übersteigt. Bei täglicher, intensiver Nutzung über Monate hinweg, etwa für Autovervollständigung in einer IDE oder wiederkehrende Textverarbeitung, amortisiert sich die einmalige Hardware-Investition dagegen zunehmend, zusätzlich zum Datenschutz-Vorteil, der sich nicht direkt in Euro beziffern lässt.

Kann ich mehrere Modelle gleichzeitig laden?

Technisch ja, solange der verfügbare Unified Memory ausreicht, um alle geladenen Modelle gleichzeitig im Speicher zu halten. In der Praxis ist es meist sinnvoller, ein Modell bei Bedarf zu entladen und ein anderes nachzuladen, statt dauerhaft mehrere Modelle parallel vorzuhalten und dadurch Speicher für andere Anwendungen zu blockieren.

Weiterführende Ressourcen

Mehr rund um lokale KI-Hardware und Apple Silicon lesen Sie in unserem Themenbereich Hardware, in dem wir regelmäßig neue Chip-Generationen, GPU-Vergleiche und Setup-Anleitungen für den österreichischen Markt einordnen.