MLX LM σε Apple Silicon
Το Libre WebUI περιλαμβάνει το plugin MLX LM (Apple Silicon) για απευθείας εκτέλεση μοντέλων MLX σε Mac σειράς M. Συνδέεται στο OpenAI-compatible HTTP API του MLX LM. Η διαδρομή παρέχει native Metal inference χωρίς μετατροπή checkpoint σε Ollama ή GGUF.
Αρχιτεκτονική
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
Το port 8081 είναι σκόπιμο· το συνηθισμένο 8080 συγκρούεται με packaged npx libre-webui.
Απαιτήσεις
- Mac Apple Silicon (M1 ή νεότερο).
- macOS με Xcode command-line tools.
- Python 3.10+.
- Αρκετή unified memory για μοντέλο, KV cache και macOS.
- Libre WebUI native· η ανάπτυξη από source είναι απλούστερη επειδή και τα δύο backend χρησιμοποιούν loopback.
Το Ternary Bonsai είναι περίπου 8,5 GB στον δίσκο και χρειάζεται περισσότερα στη λειτουργία. 16 GB χειρίζονται μικρότερα context, ενώ 24 GB+ δίνουν περιθώριο. Σε έλλειψη μνήμης χρησιμοποιήστε μικρότερο MLX checkpoint και προσθέστε το repository ID σε αντίγραφο του plugin.
Εγκατάσταση MLX LM
brew install uv
uv tool install --upgrade mlx-lm
rehash
mlx_lm.server --help
Αν υπάρχει ήδη:
uv tool upgrade mlx-lm
rehash
Qwen 3.5 απαιτεί mlx-lm 0.30.7+, το παράδειγμα repository 0.31.3+.
Εκκίνηση server
Για Ternary Bonsai:
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"
Η πρώτη εκτέλεση κατεβάζει από Hugging Face και μετά χρησιμοποιεί cache. Το Ternary Bonsai δηλώνει 262144 θέσεις. Prompt και output μοιράζονται context, άρα μεγάλο prompt μειώνει παραγόμενα tokens παρά το μέγιστο μοντέλου.
Μικρότερο αρχικό μοντέλο:
mlx_lm.server \
--model "mlx-community/Llama-3.2-3B-Instruct-4bit" \
--host 127.0.0.1 \
--port 8081 \
--max-tokens 2048
Επαναχρησιμοποιήσιμο launcher:
cd examples/mlx-lm-server
uv run server.py
Προβολή εντολής χωρίς φόρτωση:
uv run server.py --dry-run
Έλεγχος OpenAI-compatible API
curl http://127.0.0.1:8081/health
curl http://127.0.0.1:8081/v1/models
Μη stream αίτημα:
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
}'
Ο server υποστηρίζει Server-Sent Events όταν "stream": true.
Σύνδεση Libre WebUI
npm install
npm run dev
Ανοίξτε http://localhost:5173:
- Settings > Plugins.
- Βρείτε MLX LM (Apple Silicon).
- Ελέγξτε
http://127.0.0.1:8081/v1/chat/completions. - Ενεργοποιήστε· τοπικό MLX δεν χρειάζεται API key.
- Επιλέξτε μοντέλο MLX στο Chat.
Η ενσωματωμένη λίστα έχει prism-ml/Ternary-Bonsai-27B-mlx-2bit. Η επιλογή πρέπει να ταιριάζει τον server. Για άλλο checkpoint, αντιγράψτε ή εξαγάγετε plugins/mlx-lm.json, προσθέστε ID στο model_map και εισαγάγετε από Settings > Plugins.
Ρυθμίσεις παραγωγής
| Ρύθμιση | Τιμή |
|---|---|
| Temperature | 0.7 |
| Top P | 0.95 |
| Top K | 20 |
Το Libre WebUI στέλνει temperature και Top P. Για Top K ξεκινήστε με --top-k 20:
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 και tool calling
Το plugin εμφανίζεται στο Work λόγω OpenAI format. Χρησιμοποιήστε το μόνο όταν μοντέλο και chat template υποστηρίζουν αξιόπιστα tool calls· η απλή παραγωγή κειμένου δεν το αποδεικνύει. Σε κακοσχηματισμένες κλήσεις ενημερώστε mlx-lm, δοκιμάστε απευθείας και επιλέξτε μοντέλο που τεκμηριώνει εργαλεία.
Δίκτυο Docker
Συνιστάται native ανάπτυξη· container δεν φτάνει το 127.0.0.1 του Mac. Με Docker:
- Ξεκινήστε MLX LM με
--host 0.0.0.0. - Χρησιμοποιήστε ιδιωτική LAN διεύθυνση όπως
http://192.168.1.20:8081/v1/chat/completions. - Επιτρέψτε port
8081μόνο σε έμπιστα δίκτυα.
Μην εκθέτετε mlx_lm.server δημόσια. Είναι τοπικός server με βασικούς ελέγχους· χρησιμοποιήστε πιστοποιημένη HTTPS reverse proxy εκτός τοπικού δικτύου.
Αντιμετώπιση προβλημάτων
Model type qwen3_5 not supported
rehash
which -a mlx_lm.server
uv tool upgrade mlx-lm
Το μοντέλο φαίνεται αλλά τα αιτήματα αποτυγχάνουν
curl http://127.0.0.1:8081/v1/models
Ελέγξτε /v1/chat/completions στο endpoint.
Η διεύθυνση χρησιμοποιείται
mlx_lm.server --model "owner/model" --port 8082
Αλλάξτε endpoint σε http://127.0.0.1:8082/v1/chat/completions.
Το πρώτο αίτημα είναι αργό Αρχική φόρτωση και prompt prefill είναι ακριβότερα από token generation. Παρακολουθείτε memory pressure και επιλέξτε μικρότερο μοντέλο ή συνομιλία αν το macOS κάνει swap.