Μετάβαση στο κύριο περιεχόμενο

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:

  1. Settings > Plugins.
  2. Βρείτε MLX LM (Apple Silicon).
  3. Ελέγξτε http://127.0.0.1:8081/v1/chat/completions.
  4. Ενεργοποιήστε· τοπικό MLX δεν χρειάζεται API key.
  5. Επιλέξτε μοντέλο MLX στο Chat.

Η ενσωματωμένη λίστα έχει prism-ml/Ternary-Bonsai-27B-mlx-2bit. Η επιλογή πρέπει να ταιριάζει τον server. Για άλλο checkpoint, αντιγράψτε ή εξαγάγετε plugins/mlx-lm.json, προσθέστε ID στο model_map και εισαγάγετε από Settings > Plugins.

Ρυθμίσεις παραγωγής

ΡύθμισηΤιμή
Temperature0.7
Top P0.95
Top K20

Το 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:

  1. Ξεκινήστε MLX LM με --host 0.0.0.0.
  2. Χρησιμοποιήστε ιδιωτική LAN διεύθυνση όπως http://192.168.1.20:8081/v1/chat/completions.
  3. Επιτρέψτε 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.

Σχετική τεκμηρίωση