mlx-lm 是什麼?Apple Silicon 上的 LLM 推理方案

mlx-lm 是 Apple 開源的大型語言模型推理框架,專為 M1、M2、M3 晶片優化。透過 MLX 陣列庫,開發者可以在本地端高效執行 Llama、Falcon、Mistral 等主流 LLM,無需依賴雲端 API。目前 GitHub 獲得超過 4000 顆星,採用 Python 開發,安裝簡便。

環境準備與安裝步驟

使用 mlx-lm 前需確認以下環境:

  • Apple Silicon Mac(M1、M2 或 M3 晶片)
  • macOS 13.0 以上版本
  • Python 3.8 以上
  • Homebrew 套件管理工具

安裝指令如下:

pip install mlx-lm

或使用最新版功能:

pip install mlx-lm --upgrade

基礎模型載入與文字生成

以下是最簡單的使用範例,載入 Meta Llama 3.5 模型並產生文字:

from mlx_lm import load, generate

model, tokenizer = load("mlx-community/Llama-3.2-1B-Instruct-4bit")

response = generate(
    model,
    tokenizer,
    prompt="什麼是機器學習?",
    max_tokens=200
)
print(response)

mlx-lm 支援 4bit、8bit 量化,大幅降低記憶體佔用,1B 參數模型僅需約 2GB VRAM。

進階應用:自訂模型與串流輸出

mlx-lm 支援載入 GGUF 格式的自訂模型:

from mlx_lm import load, generate

model, tokenizer = load(
    "mlx-community/Phi-3.5-mini-instruct-4bit",
    tokenizer_config={"trust_remote_code": True}
)

# 串流輸出模式
for text in generate(
    model,
    tokenizer,
    prompt="解釋量子計算",
    temp=0.7,
    max_tokens=150,
    stream=True
):
    print(text, end="", flush=True)

可調整參數包括:temperature(創造性)、top_p(機率分布)、repeat_penalty(重複懲罰)。

效能優化技巧

  • 使用 4bit 量化:犧牲少量精度換取 4 倍記憶體節省
  • 批次處理:一次輸入多個 prompt 提升吞吐量
  • 快取機制:重複使用 KV Cache 加速推理
  • Metal 加速:確保 MLX 使用 GPU 而非 CPU

實測 Llama 3.2 1B 在 M3 Pro 上可達 30+ tokens/秒。