Lewati ke konten utama

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:

  1. Buka Settings > Plugins.
  2. Cari MLX LM (Apple Silicon).
  3. Pastikan endpoint http://127.0.0.1:8081/v1/chat/completions.
  4. Aktifkan plugin; tidak perlu kunci.
  5. 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

PengaturanNilai
Temperature0.7
Top P0.95
Top K20

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.

  1. Jalankan dengan --host 0.0.0.0.
  2. Gunakan http://192.168.1.20:8081/v1/chat/completions.
  3. 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.

Dokumentasi Terkait