Start›Ratgeber›MLX auf dem Mac mit mlx-lm einrichten, und sehen, was es sendet

Einrichten · Leitfaden

MLX auf dem Mac mit mlx-lm einrichten, und sehen, was es sendet

mlx-lm mit pip in ein natives Python 3.11 oder neuer auf einem Mac mit Apple Silicon installieren, dann mlx_lm.chat starten: Beim ersten Mal lädt es ein Modell von 1,7 GiB von Hugging Face herunter und gibt Ihnen eine Eingabezeile. Das ist die ganze Einrichtung, 2 Schritte. Von den 5 Programmen, die wir vergleichen, ist MLX das einzige, das Ihre Chats nirgends aufbewahrt und an einem ganzen Tag keinen einzigen Aufruf von sich aus macht. Sein Server ist die andere Geschichte: Ab Werk kann jede Website, die Sie öffnen, ihn benutzen.

Gemessen und geschrieben von Local AI ScopeVeröffentlicht am Zahlen gemessen von Local AI Scope

mlx-lm mit pip in ein natives Python 3.11 oder neuer auf einem Mac mit Apple Silicon installieren, dann mlx_lm.chat starten: Beim ersten Mal lädt es ein Modell von 1,7 GiB von Hugging Face herunter und gibt Ihnen eine Eingabezeile. Das ist die ganze Einrichtung, 2 Schritte. Von den 5 Programmen, die wir vergleichen, ist MLX das einzige, das Ihre Chats nirgends aufbewahrt und an einem ganzen Tag keinen einzigen Aufruf von sich aus macht. Sein Server ist die andere Geschichte: Ab Werk kann jede Website, die Sie öffnen, ihn benutzen.

Und das Paket ist gerade aufgewacht. pip install mlx-lm liefert Ihnen 0.32.0, veröffentlicht am 1. Oktober 2026 nach mehr als 5 Monaten ohne neue Version, und das Framework mlx darunter steht bei 0.32.3 vom 29. September 2026. Beide Versionen haben wir am 1. Oktober 2026 auf PyPI bestätigt, und jeder Befehl und jede Voreinstellung auf dieser Seite wurde am selben Tag am Code von 0.32.0 geprüft.

Was MLX ist, und was mlx-lm dazu beiträgt

MLX ist Apples Array-Framework für Apple Silicon, die Rechenschicht aus derselben Familie wie NumPy oder PyTorch, von Apple unter MIT-Lizenz veröffentlicht. Es nutzt den vereinheitlichten Speicher des Mac: CPU und GPU arbeiten auf demselben Speicher, ohne Kopien dazwischen. Allein chattet es mit niemandem. mlx-lm ist das Paket darüber: Es holt Sprachmodelle von Hugging Face, erzeugt Text, stellt eine API bereit und wandelt Modelle um. Wenn jemand sagt, er lasse ein Modell „in MLX“ laufen, ist das Programm, das da läuft, mlx-lm, und es installiert MLX für Sie mit.

Was es nicht ist, denn jedes davon wird gern angenommen:

  • Nicht die Neural Engine. Der Code von MLX kennt genau 2 Gerätetypen, CPU und GPU. Die Neural Engine Ihres Chips bleibt untätig.
  • Kein Programm für GGUF. Es führt Dateien im MLX-Format und safetensors-Dateien von Hugging Face aus. Eine GGUF-Datei, die Sie schon haben, lässt sich nicht laden, und mlx_lm.convert geht von den Originalgewichten auf Hugging Face aus, nicht von einer GGUF-Datei.
  • Keine App. Es gibt kein Fenster: mlx-lm installiert Kommandozeilenwerkzeuge und eine Python-Bibliothek. Wollen Sie MLX-Modelle hinter einem Fenster, führt LM Studio sie mit seiner eigenen MLX-Engine aus, und LM Studio und seinen lokalen Server einrichten, und sehen, was es sendet beschreibt diesen Weg.

Was Sie brauchen: Apple Silicon, macOS 14 und Python 3.11

Voraussetzung Was das in der Praxis bedeutet
Apple Silicon Intel-Macs sind außen vor: Jeder macOS-Build von mlx 0.32.3 auf PyPI ist arm64, einen für x86_64 gibt es nicht
macOS 14.0 oder neuer macOS 15 oder neuer für den Teil von mlx-lm, der große Modelle beschleunigt, indem er ihren Speicher fest verdrahtet („wired“, siehe den Abschnitt zum Speicher)
Ein natives Python 3.11 oder neuer mlx-lm 0.32.0 verlangt Python 3.11; mlx allein würde 3.10 akzeptieren. Mit einem 3.10 bricht pip nicht ab: Es installiert stillschweigend die alte 0.31.3, die letzte, die 3.10 noch annimmt

Voraussetzungen laut der Installationsanleitung von MLX in Version 0.32.2, gelesen am 27. September 2026, und laut den PyPI-Metadaten und -Builds von mlx 0.32.3 und mlx-lm 0.32.0, gelesen am 1. Oktober 2026.

Ein Python, das unter Rosetta läuft, installiert nichts: pip meldet, dass es keine passende Distribution findet. Die Anleitung von MLX selbst liefert die Prüfung:

python -c "import platform; print(platform.processor())"

Die Ausgabe muss arm lauten. Steht auf einem Mac mit M-Chip i386 da, ist dieses Python nicht nativ.

MLX unter Windows oder Linux? Das Framework mlx veröffentlicht Builds für beide: Windows x64 und ARM64 seit Juli 2026, und Linux mit CUDA-Backend (pip install "mlx[cuda12]", NVIDIA-Architektur SM 7.5 oder neuer) oder nur mit CPU (pip install "mlx[cpu]"). Bei mlx-lm sieht es anders aus. Es erklärt seine Abhängigkeit von mlx nur für macOS, also installiert ein schlichtes pip install mlx-lm unter Windows oder Linux die Werkzeuge ohne die Engine. Unter Linux bietet mlx-lm 0.32.0 die Extras cuda12, cuda13 und cpu an, die den passenden mlx-Build mitbringen. Das Extra cpu haben wir am 1. Oktober 2026 auf einem Linux-Rechner mit x86_64 installiert: Der Server startet und antwortet; wie gut ein Modell dort läuft, haben wir nicht gemessen. Die Dokumentation keines der beiden Pakete erwähnt Windows.

mlx-lm installieren und prüfen, welche Version Sie bekommen haben

Eine virtuelle Umgebung hält es von jedem anderen Python auf dem Mac fern:

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

Das python3 in der ersten Zeile muss das native 3.11 oder neuer aus dem vorigen Abschnitt sein. Mit conda lautet die Zeile conda install -c conda-forge mlx-lm, allerdings hatte conda-forge am 1. Oktober 2026 noch 0.31.3.

Diese eine Installation bringt mlx-lm 0.32.0, mlx 0.32.3 (0.32.0 verlangt mlx 0.32.2 oder neuer, also nimmt pip die neueste Version) und transformers 5.7 oder neuer für die Tokenizer. Außerdem legt sie 18 Befehle in Ihren PATH, alle beginnend mit mlx_lm: Diese Seite benutzt mlx_lm.chat, mlx_lm.generate, mlx_lm.server, mlx_lm.manage und mlx_lm.convert. Jeder davon listet seine Optionen mit -h.

So sehen Sie, was Sie haben:

pip show mlx mlx-lm
python -c "import mlx.core as mx; print(mx.__version__)"
mlx_lm --version

Der erste Befehl zeigt beide Pakete, der zweite nur das Framework, der dritte nur mlx-lm. Am 1. Oktober 2026 lauten die Antworten 0.32.3 für mlx und 0.32.0 für mlx-lm. Zeigt mlx-lm 0.31.3, schauen Sie auf Ihr Python: Mit einem 3.10 kommt pip nicht weiter.

0.32.0, das Ende einer langen Funkstille. mlx-lm hat zwischen dem 25. August 2025 und dem 22. April 2026 19 Versionen veröffentlicht, die letzte davon 0.31.3, und danach mehr als 5 Monate lang keine. Das Repository stand nicht still: Zwischen dem 22. April und dem 30. September 2026 kamen 134 Commits an 50 verschiedenen Tagen hinzu, und die ganze Zeit verteilte pip weiter den Code vom April. 0.32.0, veröffentlicht am 1. Oktober 2026, bringt diese Arbeit ins Paket: Der Ordner mit den Modelldefinitionen wächst von 119 auf 135 Dateien, darunter 16 neue wie mistral4, kimi_k3 und olmo_hybrid, und keine fällt weg. Wenn Sie in der Wartezeit installiert haben, bringt Sie eine Zeile auf den Stand: pip install -U mlx-lm, danach muss pip show mlx mlx-lm 0.32.3 für mlx und 0.32.0 für mlx-lm zeigen.

Das erste Modell: mlx_lm.chat und mlx_lm.generate

mlx_lm.chat

Ohne --model nehmen sowohl mlx_lm.chat als auch mlx_lm.generate das Modell mlx-community/Llama-3.2-3B-Instruct-4bit, dessen Dateien auf Hugging Face 1,70 GiB wiegen. Der erste Start lädt es herunter; danach kommt es von der Platte. Im Chat beendet q das Programm, r setzt das Gespräch zurück, und h zeigt diese Befehle. Das Gespräch lebt im Speicher, solange der Chat offen ist, und wird nirgends geschrieben: Beenden, und es ist weg.

Um das Modell zu wählen, geben Sie seinen Namen auf Hugging Face oder einen lokalen Ordner an. Die Organisation mlx-community auf Hugging Face hält die fertig umgewandelten bereit:

mlx_lm.chat --model mlx-community/Qwen3-8B-4bit
mlx_lm.generate --model mlx-community/Qwen3-8B-4bit --prompt "How tall is Mt Everest?" --max-tokens 300

Achten Sie auf --max-tokens: Ab Werk endet eine Antwort nach 100 Tokens in mlx_lm.generate, nach 256 in mlx_lm.chat und nach 512 im Server. Nach der Antwort gibt mlx_lm.generate seine Kennzahlen aus: Prompt: N tokens, X tokens-per-sec, Generation: N tokens, X tokens-per-sec und Peak memory: X GB. Die letzte Zeile ist der ehrlichste Test, ob ein Modell passt, den Sie haben: was Modell und Gespräch auf Ihrem Rechner tatsächlich belegt haben. Seit 0.32.0 zeigt mlx_lm.chat dasselbe nach jeder Antwort, in einer Zeile, die mit peak X GB endet.

Welches Modell auf Ihren Mac passt, und wie MLX den Speicher nutzt

Der vereinheitlichte Speicher wird mit macOS und allem Geöffneten geteilt. Unsere Rechner-Datenblätter halten dafür 3 GiB zurück und vergleichen den Rest mit den 19 Modellen, die wir messen, in Q4_K_M, unserer Qualitätsuntergrenze, bei 8.192 Token Kontext:

Mac Bleibt für das Modell Modelle, die passen Größtes, das passt
Mac mit M4 und 16 GB 13,00 GiB 8 von 19 gpt-oss-20b
Mac mini M6 32 GB 29,00 GiB 15 von 19 qwen3.6-35b-a3b
Mac mit M4 Max und 64 GB 61,00 GiB 16 von 19 gpt-oss-120b

Werte, wie jedes Rechner-Datenblatt sie am 27. September 2026 ausgeliefert hat, aus den Rechnerdaten vom 23. September. Der Modellfinder rechnet dieselbe Summe für Ihren eigenen Rechner, Ihren Kontext und Ihre Sprache, in Ihrem Browser.

Diese Größen sind GGUF-Dateien. Eine MLX-Datei mit 4 Bit ist eine andere Datei mit einer anderen Kompression, deshalb haben wir die 3 verglichen, die sich mit dem decken, was der Mac mit 16 GB aufnimmt. Auf Hugging Face wog am 27. September 2026 mlx-community/Qwen3-4B-Instruct-2507-4bit 2,11 GiB gegenüber 2,33 GiB in Q4_K_M, mlx-community/Qwen3-8B-4bit 4,29 GiB gegenüber 4,68 und mlx-community/gpt-oss-20b-MXFP4-Q4 10,41 GiB gegenüber 10,83. Beim Speicher liegt das Urteil des Modellfinders bei allen 3 auf der sicheren Seite. Zur Qualität sagt es nichts: 4-Bit-MLX und Q4_K_M sind nicht dieselbe Kompression.

Was MLX mit dem Speicher macht. mlx_lm.generate und mlx_lm.server fragen macOS, wie viel Speicher es für die GPU empfiehlt, und verdrahten bis zu dieser Menge fest: So hält mlx-lm ein großes Modell schnell. Belegt ein Modell mehr als 90 % dieser Empfehlung, warnt mlx_lm.generate Sie: [WARNING] Generating with a model that requires … MB which is close to the maximum recommended size of … MB. This can be slow. Die Abhilfe, die mlx-lm dokumentiert, setzt macOS 15 oder neuer voraus:

sudo sysctl iogpu.wired_limit_mb=N

N muss größer sein als das Modell in Megabyte und kleiner als der Speicher des Mac. Für lange Gespräche begrenzt --max-kv-size den Speicher, den der Kontext belegt, mit einem rotierenden Cache: 512 braucht sehr wenig und antwortet schlechter, 4.096 oder mehr braucht mehr und antwortet besser. Und 0.32.0 bringt mlx_lm.generate und mlx_lm.chat die Option --prefill-step-size, die der Server schon hatte: Ein langer Prompt wird ab Werk in Schritten von 2.048 Tokens gelesen, und ein kleinerer Schritt senkt die Spitze beim Lesen, dafür dauert das Lesen länger.

mlx_lm.server starten, den OpenAI-kompatiblen Server auf Port 8080

mlx_lm.server --model mlx-community/Qwen3-8B-4bit

Er lauscht auf 127.0.0.1:8080; --host und --port ändern das. Er beantwortet POST /v1/chat/completions und POST /v1/completions, dazu GET /v1/models und GET /health. 2 Prüfungen:

curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/v1/models

Die erste antwortet {"status": "ok"}; seit 0.32.0 antwortet sie mit {"status": "unavailable"} und Status 503, wenn der Thread, der den Text erzeugt, abgestürzt ist. Die zweite listet jedes Modell in Ihrem Hugging-Face-Cache, das die Dateien hat, die mlx-lm sucht, nicht nur das geladene: Auch ein Original, das Sie zum Umwandeln geladen haben, taucht auf. Für einen OpenAI-Client ist die Basis-URL http://127.0.0.1:8080/v1; der Server prüft keinen Schlüssel, also geht jede beliebige Zeichenkette. Sofern der Client nichts anderes setzt, antwortet er mit Temperatur 0,0 und höchstens 512 Tokens.

Das Feld model ist ein Befehl. Nennt eine Anfrage ein anderes Modell, entlädt der Server das aktuelle und lädt das genannte, und holt es vorher von Hugging Face, falls es nicht in Ihrem Cache liegt. Im Speicher liegt immer nur ein Modell. Bis 0.31.3 gab es obendrein eine Falle: Nannte die Konfiguration des Modells eine eigene Python-Datei, führte mlx-lm sie beim Laden aus, ohne zu fragen. 0.32.0 verweigert das, außer der Server wurde mit --trust-remote-code gestartet; wir haben es mit einem Testmodell ausprobiert: 0.31.3 führte die Datei aus, 0.32.0 brach mit einem Fehler ab.

Was die Voreinstellungen offen lassen. Es gibt keinerlei Authentifizierung, und CORS ist für jeden Ursprung, jede Methode und jeden Header offen. Die Adresse hält andere Rechner draußen; die CORS-Einstellung lässt jede Webseite herein, die Sie in Ihrem Browser öffnen, und diese Seite kann die Antworten lesen und Ihren Mac über das Feld model ein Modell herunterladen lassen. Die Dokumentation von mlx-lm sagt es über den Server unverblümt: The MLX LM server is not recommended for production as it only implements basic security checks. Also: nicht für den Produktivbetrieb empfohlen, weil er nur grundlegende Sicherheitsprüfungen umsetzt. Der Server gibt dieselbe Warnung bei jedem Start aus. Er baut auf dem Standard-HTTP-Server von Python auf. Was das meiste davon schließt:

  • --host auf 127.0.0.1 lassen.
  • Die Seiten benennen, die ihn benutzen dürfen: --allowed-origins http://localhost:3000, eine durch Kommas getrennte Liste, statt der Voreinstellung *.
  • Braucht ein anderer Rechner Zugriff, ihn über einen SSH-Tunnel erreichen (ssh -L 8080:127.0.0.1:8080 benutzer@ihr-mac) statt über --host 0.0.0.0.

Wo MLX Modelle ablegt, und wie Sie sie löschen

Was Wo
Heruntergeladene Modelle Der Cache von Hugging Face: ~/.cache/huggingface/hub, verschiebbar mit HF_HOME oder HF_HUB_CACHE
Modelle, die Sie umwandeln ./mlx_model in dem Ordner, in dem Sie den Befehl ausgeführt haben, außer Sie geben --mlx-path an
Chats Nirgends. Es wird nichts geschrieben
Kalibrierungstext für die Quantisierung mit AWQ, GPTQ oder die dynamische Quantisierung ~/.cache/mlx-lm/, nur angelegt, wenn Sie diese Verfahren benutzen

Pfade aus der Dokumentation von mlx-lm und seinem Code sowie aus der Dokumentation von Hugging Face zu seinen Cache-Variablen, gelesen am 27. September 2026; die von mlx-lm am 1. Oktober 2026 erneut am Code von 0.32.0 geprüft.

Der Cache gehört Hugging Face, nicht MLX, also teilen ihn andere Hugging-Face-Werkzeuge auf dem Mac. mlx-lm verwaltet ihn mit einem Befehl:

mlx_lm.manage --scan
mlx_lm.manage --delete --pattern mlx-community/Qwen3-8B-4bit

--scan listet nur Repositories, deren Name mlx enthält, sofern Sie kein anderes --pattern angeben. Ein Modell, das Sie direkt aus seinem Original-Repository geladen haben, taucht im einfachen Scan also nicht auf.

Ein Modell mit mlx_lm.convert umwandeln und quantisieren

Liegt das Modell, das Sie wollen, nicht bei mlx-community, wandeln Sie es selbst um:

mlx_lm.convert --model Qwen/Qwen3-8B -q

-q allein bedeutet 4 Bit in Gruppen zu 64, im Modus affine. --q-bits 8 ändert die Bits; --q-mode nimmt außerdem mxfp4, nvfp4 und mxfp8; --quant-predicate nimmt 4 Rezepte mit gemischten Bits, von mixed_2_6 bis mixed_4_6. Das Ergebnis landet in ./mlx_model, und der Befehl verweigert den Start, wenn dieser Ordner schon existiert.

Rechnen Sie den Download durch, bevor Sie anfangen. Die Umwandlung beginnt bei den Originalgewichten: Qwen3-8B hat 8,2 Milliarden Parameter in BF16, rund 15,3 GiB zum Herunterladen für ein Ergebnis von rund 4,3 GiB. --upload-repo würde das umgewandelte Modell in Ihrem Hugging-Face-Konto veröffentlichen; ohne diese Option geht nichts hinaus.

Was MLX von sich aus sendet, und was hinausgeht, wenn Sie es verlangen

Von sich aus nichts. Das Datenblatt MLX (mlx-lm): was es nach Hause sendet und ob prüfbar zählt an einem Tag ohne Zutun 0 Aufrufe: keine Update-Prüfung, kein Konto, keine eigene Telemetrie. Am 25. August 2026 haben wir das gesamte Paket mlx_lm, sowohl den Hauptzweig als auch die veröffentlichte 0.31.3, nach Telemetrie- und Analysecode durchsucht und keinen gefunden, und im Framework mlx ebenso. Am 1. Oktober 2026 haben wir die Suche in der veröffentlichten 0.32.0 wiederholt: weiterhin nichts.

Das Netz beginnt mit Ihrem ersten Befehl. mlx-lm lädt über die eigene Bibliothek von Hugging Face herunter, huggingface_hub, von huggingface.co, und nicht nur beim ersten Mal: Jedes Mal, wenn Sie ein Modell über seinen Namen auf Hugging Face laden, fragt diese Bibliothek bei huggingface.co nach, ob es eine neuere Version der Dateien gibt, selbst wenn sie schon im Cache liegen. Mit der Anfrage geht ein User-Agent-Header mit Ihrer Python-Version, der Version von huggingface_hub und, falls installiert, der von PyTorch. mlx-lm gibt sich nicht zu erkennen, deshalb beginnt der Header wörtlich mit unknown/None. Die Dokumentation von Hugging Face sagt, dass seine Bibliotheken ab Werk einige Nutzungsdaten erheben, und nennt den Schalter.

Sind Ihre Modelle heruntergeladen, schließen 2 Variablen das ab:

export HF_HUB_OFFLINE=1
export HF_HUB_DISABLE_TELEMETRY=1
mlx_lm.chat --model mlx-community/Qwen3-8B-4bit

Mit HF_HUB_OFFLINE=1 geht kein HTTP-Aufruf an Hugging Face: Ein Modell im Cache lädt, und eines, das nicht im Cache liegt, scheitert mit einem Fehler, statt heruntergeladen zu werden. DO_NOT_TRACK=1 wirkt wie die zweite Zeile.

Alles andere geht nur hinaus, wenn Sie es verlangen: --upload-repo und mlx_lm.upload veröffentlichen auf Hugging Face, AWQ, GPTQ und die dynamische Quantisierung holen einmal einen Kalibrierungstext aus einem GitHub-Gist, DWQ lädt einen Datensatz von Hugging Face herunter, Feintuning mit dem Namen eines Datensatzes auf Hugging Face lädt diesen Datensatz herunter, und das Feld model des Servers lädt herunter, was auch immer ein Client nennt. Mit MLXLM_USE_MODELSCOPE=true gehen die Downloads an ModelScope statt an Hugging Face.

Der Einwand ist berechtigt. „Keine eigene Telemetrie“ ist eine Aussage über den Code von mlx-lm, nicht über Ihr Netz. Sie stammt aus dem veröffentlichten Quellcode, nicht aus einer Aufzeichnung des Datenverkehrs, und das Datenblatt sagt das auch. Die eine Bibliothek, die spricht, huggingface_hub, ist nicht von Apple, und ihre Version ist die, die pip auf Ihrem Rechner aufgelöst hat. Trotzdem ist es eine aus dem Code gelesene Zählung, und das ist schon mehr, als LM Studio zulässt: Seine App ist nicht quelloffen, was sie sendet, lässt sich also nur nach den Angaben des Herstellers beschreiben. Und die Zählung lautet 0, wo Ollama lokal einrichten, prüfen, ob es läuft, und sehen, was es sendet bei geöffneter App 30 Aufrufe am Tag findet.

Die Reihenfolge, die Ihnen ein funktionierendes und stilles MLX hinterlässt:

  1. Prüfen, ob Ihr Python nativ und 3.11 oder neuer ist: platform.processor() muss arm sagen.
  2. Eine virtuelle Umgebung anlegen, pip install mlx-lm ausführen und mit pip show mlx mlx-lm 0.32.0 und 0.32.3 bestätigen.
  3. Das Modell mit dem Modellfinder oder dem Rechner-Datenblatt Ihres Mac auswählen und in mlx_lm.generate Peak memory ablesen.
  4. Sobald es heruntergeladen ist, HF_HUB_OFFLINE=1 und HF_HUB_DISABLE_TELEMETRY=1 setzen.
  5. Vor dem Start von mlx_lm.server --allowed-origins setzen, den Host auf 127.0.0.1 lassen und für andere Rechner einen SSH-Tunnel benutzen.

Die 5 Programme werden genau hierin verglichen unter 5 Programme für lokale KI: Telemetrie, Aufrufe, Audit.