MLX LM auf Apple Silicon
Das Plugin MLX LM (Apple Silicon) führt MLX-Sprachmodelle direkt auf einem M-Mac aus und verbindet sich mit der OpenAI-kompatiblen HTTP-API von MLX LM. So ist native Metal-Inferenz ohne Konvertierung zu Ollama oder GGUF möglich.
Architektur
Libre WebUI in native development mode
frontend http://localhost:5173
backend http://localhost:3001
|
| OpenAI-compatible chat request
v
mlx_lm.server http://127.0.0.1:8081
|
v
MLX model on Apple Silicon unified memory
8081 vermeidet den Konflikt mit npx libre-webui auf 8080.
Voraussetzungen
- Apple-Silicon-Mac, Xcode-CLI, Python 3.10+.
- Genügend Unified Memory für Modell, KV-Cache und macOS.
- Nativ laufendes Libre WebUI; damit nutzen beide Loopback.
Ternary Bonsai belegt etwa 8.5 GB auf dem Datenträger und mehr im Betrieb. 16 GB reichen für kurze Kontexte, 24 GB+ bieten Spielraum. Bei Bedarf kleineres MLX-Checkpoint in eine kopierte Plugindefinition eintragen.
MLX LM installieren
brew install uv
uv tool install --upgrade mlx-lm
rehash
mlx_lm.server --help
uv tool upgrade mlx-lm
rehash
Qwen 3.5 benötigt mlx-lm 0.30.7+, das Repository-Beispiel 0.31.3+.
Server starten
mlx_lm.server \
--model "prism-ml/Ternary-Bonsai-27B-mlx-2bit" \
--host 127.0.0.1 \
--port 8081 \
--max-tokens 262144 \
--allowed-origins "http://localhost:5173,http://127.0.0.1:5173"
Der erste Start lädt von Hugging Face, danach gilt der Cache. Prompt und Ausgabe teilen 262144 Positionen; ein langer
Prompt senkt die mögliche Ausgabe trotz Modellmaximum.
Kleineres Modell:
mlx_lm.server \
--model "mlx-community/Llama-3.2-3B-Instruct-4bit" \
--host 127.0.0.1 \
--port 8081 \
--max-tokens 2048
cd examples/mlx-lm-server
uv run server.py
uv run server.py --dry-run
OpenAI-kompatible API prüfen
curl http://127.0.0.1:8081/health
curl http://127.0.0.1:8081/v1/models
curl http://127.0.0.1:8081/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "prism-ml/Ternary-Bonsai-27B-mlx-2bit",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Reply with: MLX is ready."}
],
"temperature": 0.7,
"top_p": 0.95,
"max_tokens": 64,
"stream": false
}'
Bei "stream": true werden Server-Sent Events unterstützt.
Libre WebUI verbinden
npm install
npm run dev
Öffne http://localhost:5173, dann Einstellungen > Plugins, MLX LM (Apple Silicon),
prüfe http://127.0.0.1:8081/v1/chat/completions, aktiviere ohne API-Schlüssel und wähle das Modell.
Enthalten:
prism-ml/Ternary-Bonsai-27B-mlx-2bit
Für andere Checkpoints plugins/mlx-lm.json kopieren/exportieren, ID zu model_map hinzufügen und importieren.
Generierungseinstellungen
| Einstellung | Wert |
|---|---|
| Temperatur | 0.7 |
| Top P | 0.95 |
| Top K | 20 |
Starte den Server mit --top-k 20, um die Top-K-Empfehlung zu verwenden.
mlx_lm.server \
--model "prism-ml/Ternary-Bonsai-27B-mlx-2bit" \
--host 127.0.0.1 \
--port 8081 \
--top-k 20 \
--max-tokens 262144
Work und Tool-Aufrufe
Das Plugin erscheint wegen des OpenAI-Chatformats in Work. Nutze es nur mit Modell und Template, die Tool-Aufrufe
zuverlässig unterstützen; Textgenerierung beweist dies nicht. Bei fehlerhaften Aufrufen mlx-lm aktualisieren,
direkt testen und ein Modell mit dokumentierter Tool-Nutzung wählen.
Docker-Netzwerk
Container erreichen Mac-127.0.0.1 nicht. Starte mit --host 0.0.0.0, nutze etwa
http://192.168.1.20:8081/v1/chat/completions und erlaube 8081 nur vertrauenswürdigen Netzen.
Exponiere mlx_lm.server nie direkt öffentlich; verwende einen authentifizierten HTTPS-Proxy.
Fehlerbehebung
Model type qwen3_5 not supported
rehash
which -a mlx_lm.server
uv tool upgrade mlx-lm
Modell sichtbar, Anfragen fehlerhaft
curl http://127.0.0.1:8081/v1/models
Endpunkt muss /v1/chat/completions enthalten.
Adresse belegt
mlx_lm.server --model "owner/model" --port 8082
Nutze http://127.0.0.1:8082/v1/chat/completions.
Erste Anfrage langsam — Laden und Prefill sind teuer; beobachte Speicherdruck und wähle kleineres Modell/Kontext.