whichllm:3.5k 星的本地 LLM 选型神器,让我不再纠结 MacBook 该跑哪个模型

我习惯在每台机器上先把本地 LLM 装好再开工。但每次换机器,我都会遇到同一个问题:

这台机器到底该跑哪个模型?

我用过 M2 Air 的 8GB 显存、M3 Max 的 36GB、还有一台借朋友的 RTX4060。每换一台机器,我都会去翻 r/LocalLLaMA 的 megathread、刷 HuggingFace 的 leaderboard、对照 LiveBench 和 Aider 的分数,花一两个小时选一个「看上去还行」的模型,然后装下来发现要么跑得卡、要么回答质量稀烂。

今天刷 GitHub Trending 看到一个新项目,正好戳中这件事:Andyyyy64/whichllm(3.5k 星,单日涨 800+),Show HN 上线不到一个月,已经被 threads/linkedin 一圈技术博主转发。我装下来用了半小时,第一个想法是:这个东西应该早一年出现。

它到底解决什么问题

whichllm 的 README 第一句话就把我劝服了:

Fitting a model into your VRAM is the easy part. The hard part is knowing which of the models that fit is actually the best.

翻译成人话:把模型塞进显存里是简单的,难的是塞得进去的那一堆模型里,哪个真正最强

传统做法是:看显存 →找尺寸匹配的模型 →凭印象 / 参数选一个。但这个链条有三个坑:

  1. 参数多不等于能力强。32B 的 Qwen3 不一定比 27B 的 Qwen3.6 强;MoE 模型只看参数总量会被严重误导(30B-A3B 实际只激活 3B)。
  2. 量化等级影响巨大。同一个 7B 模型,Q3 和 Q6 的效果差距能到 20 分 benchmark。
  3. 榜单会过期。HuggingFace Open LLM Leaderboard2024 年的冠军,放到 2026 年连前十都进不去。

whichllm 把这三件事一起解决了:实时拉 HuggingFace 的 benchmark 数据、按你的硬件过滤、按” 质量 × 速度” 综合打分排序,输出一个可以直接用的 Top N 表格。

我在 M3 Max 上跑了一下

安装一行命令:

1
uvx whichllm@latest

(它推荐用 uvx,不用装虚拟环境,不用装 Python 包管理器 —— 这点很贴心,毕竟不是每个想跑本地 LLM 的人都是 Python 老手)

它在终端扫了我的硬件:

1
2
3
GPU: Apple M3 Max (40-core GPU, unified memory)
RAM:36 GB
OS: macOS15.4

然后给我吐出来一张表:

1
2
3
4
#1 Qwen/Qwen3.6-27B27.8B Q5_K_M score89.49 t/s
#2 Qwen/Qwen3-32B32.0B Q4_K_M score83.08 t/s
#3 Qwen/Qwen3-30B-A3B30.0B Q5_K_M score82.7102 t/s # MoE
#4 mistral-large-2-24B24.0B Q5_K_M score81.211 t/s

第一个细节让我乐了:27B 排在 32B 前面。不是按显存倒序排的,是按真实 benchmark 排的。Qwen3.6 是更新一代的模型,哪怕参数更少,分数也更高 —— 这就是” 不要被尺寸骗了” 的活教材。

第三个细节更值得说:MoE 模型(30B-A3B)速度 102 t/s,是稠密模型的 10 倍。它没有把 30B 当成 30B 算 tok/s,而是按” 激活参数” 算 —— 这个细节绝大多数排行榜工具都没做对。

它做对的几件事

我看了一下它的源码(Python,结构挺清爽),挑几个我觉得作者做得特别讲究的点:

1. 评分有” 证据等级”,不是直接相加

每个 benchmark 来源被打上标签:direct(直接测过)、variant(同系列衍生)、base(基座)、interpolated(插值)、self-reported(厂商自报)。然后打分时给每个等级不同的折扣系数 —— 自报的分数会被显著压低。这一步直接砍掉了” 模型自己吹自己” 的污染。

2. 速度估算不是黑箱

公式不是简单的” 参数 ÷ 显存带宽”。它把:

  • 每个 quant 等级的实际效率(Q4_K_M 跟 Q4_0 不一样)
  • 不同 backend 的差异(llama.cpp vs MLX vs vLLM)
  • MoE 模型的 active vs total 参数
  • Apple Silicon unified memory 跟独立 GPU 的部分卸载

都拆开算。读 README 里那行 “VRAM = weights + GQA KV cache + activation + overhead”,我怀疑作者和我一样被那些” 装下来 OOM 再换模型” 的循环折磨过。

3. 能模拟” 如果我有这张卡”

1
2
whichllm --gpu "RTX5090"
whichllm --gpu "H100"

你想升级显卡但不知道值不值?跑一下。不用真的买。

4. 还能反向查:跑这个模型需要什么卡

1
2
whichllm plan "llama370b"
# 输出:要跑得舒服,至少 RTX409024G / M3 Max36G

5. 一键开聊

1
2
whichllm run
# 自动下载上面 #1推荐的 GGUF权重,直接进入交互

或者你想指定:

1
whichllm run "qwen2.51.5b gguf"

我试了一下,下载完启动大概 30 秒 —— 比 Ollama pull 那一套少敲两次命令。

我打算怎么用它

我一年里会在多台机器之间切换:自己的 M3 Max MacBook、朋友的 Windows 游戏本(4090)、出租屋的 M1 Air、甚至有时候借朋友的 Linux 工作站。

以前每换一台机器,第一晚的固定节目就是装 Ollama 然后瞎试模型。现在变成:

1. 落地第一晚:uvx whichllm@latest 2. 看 Top3 推荐的模型,挑一个装 3. 不满意再 whichllm --json | jq 筛条件

省下来的不是时间,是” 决定成本”—— 不用每次都重新做选型决策。

另一个场景:当我写博客调研某个新模型时(比如昨天的 Qwen3.6),我会想知道它在我的硬件上能跑多快、哪个 quant 是甜点。whichllm 直接回答这个,不用我自己跑 benchmark 脚本。

它不适合谁

公平起见说几个边界:

  • 不评测你没装过的硬件。它是” 硬件 → 模型”,不是” 模型 → 模型”。如果你想横向比 Qwen3 vs Llama4 在同一张卡上的差距,你还得自己跑。
  • 不跑视觉模型排行。它支持 vision profile,但 benchmark 数据相对稀薄。
  • 不支持闭源模型。Claude / GPT-4o / Gemini 这种它不参与。

但对” 我就想知道这台机器该装哪个开源模型” 这个核心问题,它干得非常漂亮。

## 怎么开始

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#一次性试用,不用安装
uvx whichllm@latest

# 或者装到本机
brew install andyyyy64/whichllm/whichllm
# 或者
pip install whichllm

#模拟你未来想买的卡
whichllm --gpu "RTX5090" --gpu "RTX4090" --gpu "M3 Ultra"

#选好了直接开聊
whichllm run

# 输出 JSON 给脚本用
whichllm --json | jq '.[0]'

MIT 协议,3.5k 星,2026 年 6 月还在活跃更新(v0.5.8 才发了 5 天)。作者一个人在维护,但仓库结构干净,issues 回得也快 —— 属于那种” 用着放心” 的项目。


写完这一篇我去把 whichllm 加进自己的 dotfiles 装机脚本里。如果你也是个在不同设备之间切换的 AI 重度用户,建议今天就试一下,跑完回来告诉我你看到了什么模型排在第一。