MLX LM di Apple Silicon
Libre WebUI menyertakan plugin MLX LM (Apple Silicon) untuk menjalankan model MLX langsung di Mac seri M. Plugin terhubung ke API HTTP kompatibel OpenAI milik MLX LM.
Jalur ini berguna untuk inferensi Metal tanpa mengubah MLX menjadi Ollama atau GGUF.
Arsitektur
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 disengaja karena 8080 berbenturan dengan npx libre-webui.
Persyaratan
- Mac Apple Silicon M1 atau baru.
- macOS dengan alat Xcode.
- Python 3.10+.
- Memori terpadu cukup untuk model, tembolok KV, dan macOS.
- Libre WebUI berjalan langsung; pengembangan sumber paling sederhana.
Ternary Bonsai sekitar 8,5 GB dan memerlukan lebih banyak saat berjalan. 16 GB cocok untuk konteks pendek; 24 GB memberi ruang. Gunakan model kecil jika memori terbatas.
Memasang MLX LM
brew install uv
uv tool install --upgrade mlx-lm
rehash
mlx_lm.server --help
uv tool upgrade mlx-lm
rehash
Qwen 3.5 memerlukan mlx-lm 0.30.7+, contoh repositori 0.31.3+.
Memulai Server
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"
Unduhan pertama berasal dari Hugging Face. Model menyatakan 262144 posisi; perintah dan keluaran berbagi jendela, sehingga perintah panjang mengurangi keluaran meski server memakai maksimum model.
mlx_lm.server \
--model "mlx-community/Llama-3.2-3B-Instruct-4bit" \
--host 127.0.0.1 \
--port 8081 \
--max-tokens 2048
cd examples/mlx-lm-server
uv run server.py
uv run server.py --dry-run
Memverifikasi API
curl http://127.0.0.1:8081/health
curl http://127.0.0.1:8081/v1/models
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 mendukung Server-Sent Events saat "stream": true.
Menghubungkan Libre WebUI
npm install
npm run dev
Buka http://localhost:5173:
- Buka Settings > Plugins.
- Cari MLX LM (Apple Silicon).
- Pastikan endpoint
http://127.0.0.1:8081/v1/chat/completions. - Aktifkan plugin; tidak perlu kunci.
- Pilih model di Chat.
prism-ml/Ternary-Bonsai-27B-mlx-2bit
Model harus tersedia di server. Untuk model lain, salin plugins/mlx-lm.json, tambah ID ke model_map, lalu impor.
Pengaturan Generasi
| Pengaturan | Nilai |
|---|---|
| Temperature | 0.7 |
| Top P | 0.95 |
| Top K | 20 |
Jalankan server dengan --top-k 20 untuk memakai rekomendasi 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 dan Pemanggilan Alat
Plugin dapat muncul di Work karena format OpenAI. Gunakan hanya jika model dan templat mendukung alat. Generasi teks tidak membuktikan dukungan alat.
Perbarui mlx-lm, uji langsung, atau pilih model dengan dokumentasi alat jika panggilan rusak.
Jaringan Docker
Kontainer tidak dapat mencapai 127.0.0.1 Mac.
- Jalankan dengan
--host 0.0.0.0. - Gunakan
http://192.168.1.20:8081/v1/chat/completions. - Buka port hanya ke jaringan tepercaya.
Jangan buka mlx_lm.server ke internet publik. Gunakan proksi balik HTTPS terautentikasi.
Pemecahan Masalah
Model type qwen3_5 not supported
rehash
which -a mlx_lm.server
uv tool upgrade mlx-lm
Permintaan gagal
curl http://127.0.0.1:8081/v1/models
Pastikan endpoint memuat /v1/chat/completions.
Alamat terpakai
mlx_lm.server --model "owner/model" --port 8082
Ubah ke http://127.0.0.1:8082/v1/chat/completions.
Permintaan pertama lambat
Pantau Activity Monitor dan pilih model atau konteks lebih kecil.