MLX LM på Apple Silicon
Libre WebUI har insticksprogrammet MLX LM (Apple Silicon) för MLX-formaterade språkmodeller direkt på en M-serie-Mac. Det ansluter till det OpenAI-kompatibla HTTP-API:t i MLX LM. Vägen ger inbyggd Metal-inferens utan att konvertera en MLX-checkpoint till Ollama eller GGUF.
Arkitektur
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 är avsiktlig; MLX LM:s vanliga 8080 krockar med paketerade npx libre-webui.
Krav
- Apple Silicon-Mac (M1 eller nyare).
- macOS med Xcode-kommandoradsverktyg.
- Python 3.10 eller nyare.
- Tillräckligt enhetligt minne för modell, KV-cache och macOS.
- Libre WebUI körd direkt på värden; källutveckling är enklast eftersom båda backend kan använda loopback.
Standardmodellen Ternary Bonsai är cirka 8,5 GB på disk och kräver mer under körning. 16 GB räcker för kortare kontext, medan 24 GB+ ger marginal. Använd en mindre MLX-checkpoint och lägg dess repository-ID i en kopierad definition vid minnesbrist.
Installera MLX LM
brew install uv
uv tool install --upgrade mlx-lm
rehash
mlx_lm.server --help
Om verktyget redan finns:
uv tool upgrade mlx-lm
rehash
Qwen 3.5 kräver mlx-lm 0.30.7 eller nyare; repositoryexemplet kräver 0.31.3+.
Starta servern
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"
Första körningen hämtar modellen från Hugging Face; senare används cache. Ternary Bonsai deklarerar 262144 positioner. Prompt och utdata delar kontextfönstret, så en lång prompt minskar genererbara token trots servergränsen vid modellmaximum.
Mindre startmodell:
mlx_lm.server \
--model "mlx-community/Llama-3.2-3B-Instruct-4bit" \
--host 127.0.0.1 \
--port 8081 \
--max-tokens 2048
Återanvändbar startare:
cd examples/mlx-lm-server
uv run server.py
Visa löst kommando utan modell:
uv run server.py --dry-run
Verifiera det OpenAI-kompatibla API:t
curl http://127.0.0.1:8081/health
curl http://127.0.0.1:8081/v1/models
Skicka en icke-strömmad chattbegäran:
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
}'
Servern stöder även strömmade Server-Sent Events med "stream": true.
Anslut Libre WebUI
npm install
npm run dev
Öppna http://localhost:5173:
- Öppna Settings > Plugins.
- Hitta MLX LM (Apple Silicon).
- Bekräfta
http://127.0.0.1:8081/v1/chat/completions. - Aktivera; lokal MLX kräver ingen API-nyckel.
- Välj MLX-modellen i Chat.
Den inbyggda listan innehåller prism-ml/Ternary-Bonsai-27B-mlx-2bit. Valet måste matcha servern. För annan checkpoint kopierar eller exporterar du plugins/mlx-lm.json, lägger ID:t i model_map och importerar genom Settings > Plugins.
Genereringsinställningar
| Inställning | Värde |
|---|---|
| Temperature | 0.7 |
| Top P | 0.95 |
| Top K | 20 |
Libre WebUI skickar temperature och Top P. Starta med --top-k 20 för rekommenderad Top K:
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 och verktygsanrop
MLX kan visas i Work genom OpenAI-formatet. Använd bara en modell vars mall pålitligt stöder OpenAI-liknande verktygsanrop; fungerande vanlig text i Chat bevisar inte verktygsstöd. Vid felaktiga anrop uppdaterar du mlx-lm, testar direkt mot servern och väljer en modell vars MLX-kort dokumenterar verktyg.
Docker-nätverk
Direkt utveckling rekommenderas; en container når inte Macens 127.0.0.1. Med Docker:
- Starta MLX LM med
--host 0.0.0.0. - Använd privat LAN-adress, exempelvis
http://192.168.1.20:8081/v1/chat/completions. - Tillåt port
8081bara på betrodda nätverk.
Exponera inte mlx_lm.server publikt. Det är en lokal server med grundläggande säkerhetskontroller; använd autentiserad HTTPS-proxy utanför det lokala nätet.
Felsökning
Model type qwen3_5 not supported
rehash
which -a mlx_lm.server
uv tool upgrade mlx-lm
Modellen visas men begäranden misslyckas
curl http://127.0.0.1:8081/v1/models
Bekräfta sedan /v1/chat/completions i endpointen.
Adressen används redan
mlx_lm.server --model "owner/model" --port 8082
Ändra endpoint till http://127.0.0.1:8082/v1/chat/completions.
Första begäran är långsam Inledande laddning och prompt-prefill är dyrare än tokenvis generering. Övervaka minnestryck och välj mindre modell eller kortare konversation om macOS växlar.