MLX LM na Apple Silicon
Libre WebUI obsahuje plugin MLX LM (Apple Silicon) pro přímé spouštění jazykových modelů ve formátu MLX na Macu řady M. Plugin se připojuje k HTTP API kompatibilnímu s OpenAI, které je součástí MLX LM. Tato cesta nabízí nativní inferenci Metal bez převodu checkpointu MLX na Ollama nebo GGUF.
Architektura
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 je záměrný. MLX LM obvykle používá 8080, který koliduje se serverem zabaleného npx libre-webui.
Požadavky
- Mac s Apple Silicon (M1 nebo novější).
- macOS s dostupnými nástroji příkazové řádky Xcode.
- Python 3.10 nebo novější.
- Dostatek sdílené paměti pro model, KV cache a macOS.
- Libre WebUI spuštěné nativně. Vývoj ze zdrojů je nejjednodušší, protože oba backendy mohou použít loopback Macu.
Výchozí model Ternary Bonsai zabírá přibližně 8,5 GB na disku a za běhu potřebuje více paměti. Mac se 16 GB zvládne kratší kontexty, ale 24 GB a více poskytuje praktickou rezervu. Při nedostatku paměti použijte menší checkpoint MLX a přidejte jeho repository ID do kopie definice pluginu.
Instalace MLX LM
Použití uv oddělí příkaz od balíčků Pythonu z Homebrew:
brew install uv
uv tool install --upgrade mlx-lm
rehash
mlx_lm.server --help
Pokud nástroj již existuje:
uv tool upgrade mlx-lm
rehash
Modely Qwen 3.5 vyžadují mlx-lm 0.30.7 nebo novější; příklad repository vyžaduje 0.31.3 nebo novější.
Spuštění serveru
Pro 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"
Při prvním běhu se model stáhne z Hugging Face, později se použije místní cache. Ternary Bonsai deklaruje maximum 262144 pozic. Prompt a generovaný výstup sdílejí kontextové okno, takže dlouhý prompt snižuje počet generovatelných tokenů, i když limit serveru odpovídá maximu modelu.
Menší startovní model:
mlx_lm.server \
--model "mlx-community/Llama-3.2-3B-Instruct-4bit" \
--host 127.0.0.1 \
--port 8081 \
--max-tokens 2048
Repository obsahuje znovu použitelný spouštěč:
cd examples/mlx-lm-server
uv run server.py
Zobrazení vyřešeného příkazu bez načtení modelu:
uv run server.py --dry-run
Ověření API kompatibilního s OpenAI
Zkontrolujte zdraví a discovery modelů:
curl http://127.0.0.1:8081/health
curl http://127.0.0.1:8081/v1/models
Odešlete nestreamovaný chatový požadavek:
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 podporuje také streamované Server-Sent Events při "stream": true.
Připojení Libre WebUI
Z kořene repository Libre WebUI:
npm install
npm run dev
Otevřete http://localhost:5173 a:
- Otevřete Settings > Plugins.
- Najděte MLX LM (Apple Silicon).
- Ověřte endpoint
http://127.0.0.1:8081/v1/chat/completions. - Plugin aktivujte; místní MLX nevyžaduje API klíč.
- Vraťte se do Chat a vyberte model MLX.
Vestavěný seznam obsahuje prism-ml/Ternary-Bonsai-27B-mlx-2bit. Model vybraný v Libre WebUI se musí shodovat s modelem serveru MLX. Pro jiný checkpoint exportujte nebo zkopírujte plugins/mlx-lm.json, přidejte repository ID do model_map a upravenou definici importujte přes Settings > Plugins.
Nastavení generování
| Nastavení | Hodnota |
|---|---|
| Temperature | 0.7 |
| Top P | 0.95 |
| Top K | 20 |
Libre WebUI posílá temperature a Top P přes plugin. Pro doporučené Top K spusťte server s --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 a volání nástrojů
Plugin MLX se může zobrazit ve Work, protože používá chatový formát kompatibilní s OpenAI. Použijte jej pouze tehdy, když model a jeho chat template spolehlivě podporují volání nástrojů ve stylu OpenAI. Fungující běžný text v Chat nedokazuje podporu nástrojů.
Parsery nástrojů a šablony modelů se rychle mění. Při poškozených voláních aktualizujte mlx-lm, otestujte stejný požadavek přímo proti serveru a vyberte model, jehož karta MLX podporu nástrojů výslovně dokumentuje.
Síť Dockeru
Doporučuje se nativní vývoj Libre WebUI; kontejner se nedostane k 127.0.0.1 Macu. Pokud Libre WebUI běží v Dockeru:
- Spusťte MLX LM s
--host 0.0.0.0. - Jako endpoint použijte soukromou LAN adresu Macu, například
http://192.168.1.20:8081/v1/chat/completions. - Port
8081povolte pouze v důvěryhodných místních sítích.
mlx_lm.server nevystavujte přímo veřejnému internetu. Je určen jako místní server pouze se základními bezpečnostními kontrolami; pro jiné nasazení před něj umístěte ověřenou HTTPS reverse proxy.
Řešení problémů
Model type qwen3_5 not supported
Používá se starší spouštěč:
rehash
which -a mlx_lm.server
uv tool upgrade mlx-lm
Libre WebUI model zobrazuje, ale požadavky selhávají
Ověřte stejné model ID přímo:
curl http://127.0.0.1:8081/v1/models
Poté potvrďte, že endpoint pluginu obsahuje /v1/chat/completions.
Adresa je již používána
mlx_lm.server --model "owner/model" --port 8082
Změňte endpoint na http://127.0.0.1:8082/v1/chat/completions.
První požadavek je pomalý Počáteční načtení a prompt prefill jsou dražší než generování po tokenech. Sledujte tlak paměti a při swapování macOS zvolte menší model nebo kratší konverzaci.