跳至主要內容

llmfit 實測:先看這台 Mac 適合跑哪些本機模型

我拿 Apple M4、16GB RAM 的乞丐版 Mac mini 實測 llmfit 1.1.12,示範硬體偵測、Score 與 tok/s 排序、模型詳細資料,以及新版的社群 benchmark 分享功能。

6 min read/ Easy

前言

9/16 就要去當兵,之後這裡會先停更。前陣子家裡廁所裝潢,更新頻率也掉了不少。趁還能寫,今天拿 Apple M4、16GB RAM 的乞丐版 Mac mini 來測 llmfit

llmfit 會偵測電腦的 CPU、RAM、GPU、可用記憶體與本機推論後端,再把模型依照硬體適配度排成一張表。

我安裝的版本是 llmfit 1.1.12。打開後,畫面上方抓到 M4、可用 RAM、GPU 可用記憶體,也認出本機的 MLX 與 llama.cpp;這次清單顯示 9,590 筆候選模型。我錄的 15.22 秒影片只做三件事:按 s 切換排序依據、用方向鍵選模型,再按 Enter 打開詳細資料。

llmfit 在解決什麼問題

本機模型最麻煩的地方,常常不是下載,而是下載前不知道自己的電腦到底跑不跑得動。模型名稱會帶參數量、量化格式與不同變體,光看 Hugging Face 頁面,很難直接換算成這台機器的記憶體占用與速度。

llmfit 會把偵測到的硬體和模型資料放在一起計算,評分主要看四個方向:硬體是否放得下、預估速度、模型品質與 context。主表還會列出參數量、建議量化、磁碟空間、GPU 或 CPU 執行模式、記憶體占用比例、用途與 Fit 等級。

它給的是篩選起點,不是保證值。表格裡的 tok/s* 帶有星號,代表這次看到的是估算速度;實際速度仍會受到推論後端、context、量化方式與電腦當下負載影響。

macOS、Linux 與 Windows 安裝

macOS 與 Linux 的安裝方式可以先看 官方 README 的 Install 區段,或直接到 GitHub Releases 找目前版本。官方建議的 Homebrew 預編譯版本是:

bash
brew install AlexsJones/llmfit/llmfit

Windows 可以透過 Scoop 安裝:

powershell
scoop install llmfit

還沒有 Scoop 的話,先照 Scoop 官方網站完成安裝;也可以直接到 llmfit Releases 下載 Windows 版本。

三個平台安裝後都能用同一個指令確認版本:

bash
llmfit --version

一般啟動只要輸入 llmfit。它會自動在背景開啟 Web Dashboard;我這次只想錄終端機畫面,所以改用:

bash
llmfit --no-dashboard

這個參數會關掉預設的 Dashboard,不在 0.0.0.0:8787 啟動服務。錄製純終端機 Demo 時,畫面也比較乾淨。

主畫面先看硬體與執行後端

llmfit 在 Apple M4、16GB RAM 的 Mac 上顯示硬體資訊,並依 Score 排列本機模型候選清單

上方是硬體與推論後端,下方預設依綜合 Score 排序

主畫面最上方先列硬體。這次抓到 Apple M4 10 核心、16GB 共享記憶體,以及約 11.8GB GPU 可用空間;下一列則顯示 Ollama、MLX、llama.cpp、Docker、LM Studio、vLLM 與 RamaLama 等後端目前有沒有被偵測到。

下面的每一列才是模型。這幾個欄位最值得先看:

  • Score:品質、速度、Fit 與 context 組成的綜合評分。
  • tok/s*:預估每秒輸出的 token 數,星號表示估算。
  • Quant:llmfit 依這台硬體建議的量化格式。
  • Mem %:預估會吃掉多少可用記憶體。
  • Ctx:模型 context,以及依硬體估算後實際可用的範圍。
  • Fit:Perfect、Good、Marginal 等硬體適配等級。
  • Use Case:Reasoning、General、Embedding 等用途。

Perfect 指的是硬體適配,不代表這個模型的回答品質一定最好。看模型時還是要把 Score、用途與授權一起看。

按 s 是切換排序依據

我原本想把影片裡這個動作叫做「切換 Select」,但比較準確的說法是「切換排序依據」。英文可以寫成 cycle through sort options,也可以說 switch the sort key

在我安裝的 1.1.12 裡,Normal mode 按小寫 s,會在 Scoretok/sProvider 等排序欄位之間切換。這和大寫 V 的 Select mode 是兩個不同功能,不要混在一起。

llmfit 按下 s 後改用 tok/s 排序,速度欄位顯示由高到低排列

按 `s` 改成依 tok/s 排序,速度快的小型與特殊用途模型會先跑到上面

Score 排序比較像是在找整體適合的模型;依 tok/s 排序則是直接看預估速度。差別從截圖就很明顯:切到 tok/s 後,前幾名會出現很小的模型、Embedding 模型或其他特殊用途模型。數字很高,不等於它適合一般文字對話。

這時要先看用途,再看速度。想找 Coding、Reasoning 或 Embedding,先用 U 開啟 Use Case 篩選,再用 s 排序,會比只追最高 tok/s 更有意義。

用方向鍵或 j、k 選模型

基本操作很接近 Vim:方向鍵上、下,或 jk 都能移動目前選取的模型。按 Enter 後,表格會切到詳細頁。

llmfit 模型詳細頁顯示參數量、量化、context、用途、授權、預估 tok/s、Score Breakdown 與 Notes

詳細頁會把模型條件、評分拆解與估算依據放在同一個畫面

這張詳細頁裡可以看到模型名稱、Provider、參數量、原始量化、針對這台硬體建議的 Best Quant、context、用途、能力、授權與 Runtime。下面的 Score Breakdown 則把 Quality、Speed、Fit、Context 分開列出。

右邊的 Notes 很實用。這次它提醒 Apple Silicon 使用的是 unified memory,CPU 與 GPU 共用同一個記憶體池,也列出建議的 mlx-8bit660.0 tok/s baseline estimate。這裡的 660 仍是估算,不是我在這支影片裡真的把模型跑到每秒 660 tokens。

常用按鍵先記這些

按鍵用途
jk上下選擇模型
s切換排序依據
Enter開啟或關閉模型詳細頁
/依名稱、Provider、參數量或用途搜尋
f切換 All、Runnable、Perfect、Good、Marginal
a切換全部、可取得 GGUF、已安裝
U依 Use Case 篩選
P依 Provider 篩選
d下載目前選取的模型
b開啟社群 Benchmark 排行榜
I對正在執行的本機模型做 Inference Bench
h查看完整快捷鍵
q離開

新版的 benchmark 與社群分享

我這次實測的重點只有排序和詳細頁。1.1.x 的 README 還介紹了 benchmark、社群分享、硬體模擬、比較與下載等功能。

最重要的新功能是 benchmark 與社群分享。選到已安裝、而且推論後端正在執行的模型後,按 b 會先詢問是否測試。llmfit 會跑三次真實推論,測量 tok/s 與 TTFT;結果會先存在 ~/.config/llmfit,就算不分享也會保留,而且自己的實測結果可以取代表格裡原本的估算值。

如果願意把結果回傳社群,可以在 benchmark 詢問畫面按 Spaces 開啟分享。在這個畫面,s 的作用改成分享開關。完成後,llmfit 會透過 GitHub device flow 自動 fork、commit 並建立 Pull Request,不需要另外安裝 gh CLI。PR 合併後,資料會跟著後續版本提供給相同硬體的使用者。

其他功能我這次沒有逐一實測:

  • Community Leaderboard:按 b 查看其他使用者的實測結果,也能切換到不同 GPU。
  • Inference Bench:按大寫 I,對 Ollama、vLLM、MLX 等正在執行的本機模型測 TTFT、tok/s 與延遲。
  • Hardware Simulation:按大寫 S,暫時改 RAM、VRAM 與 CPU 核心數,查看換硬體後哪些模型能跑。
  • Plan mode:按 p,反過來估算指定模型需要多少 RAM、VRAM 與 CPU。
  • Compare:用 m 標記模型、c 比較,也能用 Visual mode 一次選多個模型。
  • Download Manager:按 d 下載模型,按大寫 D 查看進度、紀錄與設定。
  • Web Dashboard:一般執行 llmfit 時會自動啟動;只需要終端介面就加上 --no-dashboard

實際定位:先縮小清單

這次操作最直接的用途就是做第一輪排除。先確認硬體、用途、記憶體與建議量化,再從跑得動的模型裡比較 Score 和預估速度,至少不用把幾十 GB 的模型下載完才發現不適合。

這支 15 秒影片沒有執行 benchmark,所以文章裡所有帶星號的 tok/s 都只當估算。真正要在幾個模型之間做決定,下一步仍是啟動 Ollama、llama.cpp 或 MLX,跑一次自己的 benchmark。