MLX LM på Apple Silicon
Libre WebUI har pluginet MLX LM (Apple Silicon) til at køre MLX-formaterede sprogmodeller direkte på en Mac i M-serien. Det forbinder til det OpenAI-kompatible HTTP-API i MLX LM. Denne løsning giver native Metal-inferens uden at konvertere en MLX-checkpoint til 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 er valgt bevidst; MLX LM bruger normalt 8080, som kolliderer med den pakkede npx libre-webui-server.
Krav
- Apple Silicon-Mac (M1 eller nyere).
- macOS med Xcode-kommandolinjeværktøjer.
- Python 3.10 eller nyere.
- Tilstrækkeligt samlet hukommelse for model, KV-cache og macOS.
- Libre WebUI kørt direkte på værten; kildeudvikling er lettest fordi begge backend kan bruge loopback.
Standardmodellen Ternary Bonsai er cirka 8,5 GB på disken og kræver mere under kørsel. 16 GB rækker til kortere kontekster, mens 24 GB eller mere giver bedre råderum. Brug en mindre MLX-checkpoint, og føj dens repository-ID til en kopieret definition, hvis hukommelsen er begrænset.
Installer MLX LM
brew install uv
uv tool install --upgrade mlx-lm
rehash
mlx_lm.server --help
Om værktøj allerede findes:
uv tool upgrade mlx-lm
rehash
Qwen 3.5 kræver mlx-lm 0.30.7 eller nyere; repositoryexemplet kræver 0.31.3+.
Start serveren
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ørste kørslen henter modelen fra Hugging Face; senere bruges cache. Ternary Bonsai deklarerer 262144 positioner. Prompt og output deler kontextfønstret, så en lang prompt reducerer genererbara token trots servergrænsen ved modelmaximum.
Mindre startmodel:
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 uden model:
uv run server.py --dry-run
Verificer det OpenAI-kompatible API'et
curl http://127.0.0.1:8081/health
curl http://127.0.0.1:8081/v1/models
Send en icke-strømmad chattanmodan:
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
}'
Serveren understøtter også strømmade Server-Sent Events med "stream": true.
Forbind Libre WebUI
npm install
npm run dev
- Åbn Settings > Plugins.
- Find MLX LM (Apple Silicon).
- Bekræfta
http://127.0.0.1:8081/v1/chat/completions. - Aktivera; lokal MLX kræver ingen API-nøgle.
- Vælg MLX-modelen i Chat.
Den indbyggede liste indeholder prism-ml/Ternary-Bonsai-27B-mlx-2bit. Den valgte model skal matche en model på MLX-serveren. Til en anden checkpoint kan du eksportere eller kopiere plugins/mlx-lm.json, føje repository-ID'et til model_map og importere den redigerede definition via Settings > Plugins.
Genereringsinstællningar
| Instællning | Værde |
|---|---|
| Temperature | 0.7 |
| Top P | 0.95 |
| Top K | 20 |
Libre WebUI sender temperature og Top P. Start serveren med --top-k 20 for at bruge den anbefalede 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 og værktøjskald
MLX kan vises i Work gennem OpenAI-formatet. Brug kun en model hvis skabelon pålitligt understøtter OpenAI-liknande værktøjskald; fungerande almindelig tekst i Chat beviser ikke værktøjsunderstøttelse. Vid felaktiga kald opdaterer du mlx-lm, tester direkte mod serveren og vælger en model hvis MLX-kort dokumenterer værktøjer.
Docker-netværk
Direkt udvikling anbefales; en container når ikke Macens 127.0.0.1. Med Docker:
- Start MLX LM med
--host 0.0.0.0. - Brug privat LAN-adress, eksempelvis
http://192.168.1.20:8081/v1/chat/completions. - Tillåt port
8081kun på betrodda netværk.
Eksponér ikke mlx_lm.server direkte på det offentlige internet. Det er en lokal server med grundlæggende sikkerhedskontroller; brug en autentificeret HTTPS-reverse proxy ved enhver ikke-lokal implementering.
Fejlfinding
Model type qwen3_5 not supported
rehash
which -a mlx_lm.server
uv tool upgrade mlx-lm
Modelen vises men anmodninger mislykkes
curl http://127.0.0.1:8081/v1/models
Bekræfta derefter /v1/chat/completions i endpointen.
Adressen bruges allerede
mlx_lm.server --model "owner/model" --port 8082
Ændra endpoint til http://127.0.0.1:8082/v1/chat/completions.
Den første anmodning er langsom Indledende indlæsning og prompt-prefill er dyrere end tokenvis generering. Overvåg hukommelsespresset, og vælg en mindre model eller kortere samtale, hvis macOS begynder at bruge swap.