MLX LM op Apple Silicon
Libre WebUI bevat een plug-in MLX LM (Apple Silicon) waarmee taalmodellen in MLX-indeling rechtstreeks op een Mac uit de M-serie kunnen worden uitgevoerd. De plug-in maakt verbinding met de OpenAI-compatibele HTTP-API die in MLX LM is ingebouwd.
Dit pad is nuttig wanneer u rechtstreekse Metal-inferentie wilt zonder een MLX-controlepunt naar een Ollama- of GGUF-model te converteren.
Architectuur
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
Poort 8081 is bewust gekozen. MLX LM gebruikt normaal standaard 8080, wat conflicteert met de verpakte server npx libre-webui.
Vereisten
- Een Mac met Apple Silicon (M1 of nieuwer).
- macOS waarop de Xcode-opdrachtregeltools beschikbaar zijn.
- Python 3.10 of nieuwer.
- Voldoende uniform geheugen voor het gekozen model, de KV-cache en macOS.
- Libre WebUI dat rechtstreeks op de host draait. De ontwikkelworkflow vanuit de broncode is het eenvoudigst, omdat beide backends de loopbackinterface van de Mac kunnen gebruiken.
Het standaardmodel Ternary Bonsai neemt ongeveer 8,5 GB schijfruimte in en heeft tijdens het uitvoeren meer geheugen nodig. Een Mac met 16 GB uniform geheugen kan kortere contexten aan, maar 24 GB of meer biedt in de praktijk extra speelruimte. Gebruik een kleiner MLX-controlepunt en voeg de repository-ID toe aan een gekopieerde plug-indefinitie als het geheugen krap is.
MLX LM installeren
Met uv blijft de opdracht geïsoleerd van Homebrew Python-pakketten:
brew install uv
uv tool install --upgrade mlx-lm
rehash
mlx_lm.server --help
Als de tool al bestaat:
uv tool upgrade mlx-lm
rehash
Qwen 3.5-modellen vereisen mlx-lm 0.30.7 of nieuwer. Het voorbeeld in de repository vereist 0.31.3 of nieuwer.
De server starten
Voor het Ternary Bonsai-model:
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"
Bij de eerste uitvoering wordt het model van Hugging Face gedownload. Latere uitvoeringen gebruiken de lokale cache. Ternary Bonsai declareert maximaal 262144 posities. De prompt en gegenereerde uitvoer delen dat contextvenster. Een lange prompt vermindert dus het aantal tokens dat kan worden gegenereerd, ook al is de serverlimiet ingesteld op het maximum van het model.
Voor een kleiner instapmodel:
mlx_lm.server \
--model "mlx-community/Llama-3.2-3B-Instruct-4bit" \
--host 127.0.0.1 \
--port 8081 \
--max-tokens 2048
De repository bevat ook een herbruikbaar startprogramma:
cd examples/mlx-lm-server
uv run server.py
Bekijk de herleide opdracht zonder een model te laden:
uv run server.py --dry-run
De OpenAI-compatibele API controleren
Controleer de status en modeldetectie:
curl http://127.0.0.1:8081/health
curl http://127.0.0.1:8081/v1/models
Verstuur een niet-streamende chataanvraag:
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
}'
De server ondersteunt ook streamende Server-Sent Events wanneer "stream": true.
Libre WebUI verbinden
Vanuit de hoofdmap van de Libre WebUI-repository:
npm install
npm run dev
Open http://localhost:5173 en doe vervolgens het volgende:
- Open Settings > Plugins.
- Zoek MLX LM (Apple Silicon).
- Controleer of het eindpunt
http://127.0.0.1:8081/v1/chat/completionsis. - Activeer de plug-in. Lokale MLX vereist geen API-sleutel.
- Ga terug naar Chat en selecteer het MLX-model.
De ingebouwde modellenlijst bevat:
prism-ml/Ternary-Bonsai-27B-mlx-2bit
Het in Libre WebUI geselecteerde model moet overeenkomen met een model dat beschikbaar is op de MLX-server. Als u een ander controlepunt wilt gebruiken, exporteert of kopieert u plugins/mlx-lm.json, voegt u de repository-ID toe aan model_map en importeert u de bewerkte definitie via Settings > Plugins.
Generatie-instellingen
De gepubliceerde aanbevelingen voor Ternary Bonsai zijn:
| Instelling | Waarde |
|---|---|
| Temperature | 0.7 |
| Top P | 0.95 |
| Top K | 20 |
Libre WebUI stuurt de temperatuur en Top P via de plug-in door. Start de server met --top-k 20 als u de aanbeveling voor Top K wilt gebruiken:
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 en tooloproepen
De MLX-plug-in kan in Work verschijnen omdat hij de OpenAI-compatibele chatindeling gebruikt. Kies hem alleen voor Work wanneer het model en de chatsjabloon betrouwbare OpenAI-achtige tooloproepen ondersteunen. Gewone tekstgeneratie die in Chat werkt, bewijst niet dat een controlepunt tools ondersteunt.
Toolparsers en modelsjablonen veranderen snel. Als een Work-uitvoering misvormde tooloproepen retourneert, werkt u mlx-lm bij, test u dezelfde toolaanvraag rechtstreeks tegen de server en probeert u een model waarvan de MLX-kaart het gebruik van tools expliciet documenteert.
Docker-netwerken
Het wordt aanbevolen om Libre WebUI rechtstreeks op de host te ontwikkelen. Een container kan 127.0.0.1 van de Mac niet bereiken.
Als Libre WebUI in Docker draait:
- Start MLX LM met
--host 0.0.0.0. - Gebruik een privé-LAN-adres van de Mac, zoals
http://192.168.1.20:8081/v1/chat/completions, als plug-ineindpunt. - Sta poort
8081alleen toe op vertrouwde lokale netwerken.
Stel mlx_lm.server niet rechtstreeks bloot aan het openbare internet. De beheerders beschrijven hem als een lokale server met alleen eenvoudige beveiligingscontroles. Plaats voor elke niet-lokale implementatie een geauthenticeerde HTTPS-reverse-proxy vóór de server.
Problemen oplossen
Model type qwen3_5 not supported
Er wordt nog een ouder startprogramma gebruikt:
rehash
which -a mlx_lm.server
uv tool upgrade mlx-lm
Libre WebUI toont het model, maar aanvragen mislukken
Controleer rechtstreeks of dezelfde model-ID werkt:
curl http://127.0.0.1:8081/v1/models
Controleer daarna of het plug-ineindpunt /v1/chat/completions bevat.
Adres is al in gebruik
Houd Libre WebUI op de normale poort en verplaats MLX:
mlx_lm.server --model "owner/model" --port 8082
Werk het plug-ineindpunt bij naar http://127.0.0.1:8082/v1/chat/completions.
Het model is traag bij de eerste aanvraag
Het eerste laden en vooraf verwerken van de prompt zijn duurder dan het token voor token genereren. Houd de geheugendruk in Activity Monitor in de gaten en kies een kleiner model of korter gesprek als macOS begint te swappen.