Hop til hovedindhold

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 http://localhost:5173:

  1. Åbn Settings > Plugins.
  2. Find MLX LM (Apple Silicon).
  3. Bekræfta http://127.0.0.1:8081/v1/chat/completions.
  4. Aktivera; lokal MLX kræver ingen API-nøgle.
  5. 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ællningVærde
Temperature0.7
Top P0.95
Top K20

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:

  1. Start MLX LM med --host 0.0.0.0.
  2. Brug privat LAN-adress, eksempelvis http://192.168.1.20:8081/v1/chat/completions.
  3. Tillåt port 8081 kun 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.

Relaterede dokumenter