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.
翻译成人话:把模型塞进显存里是简单的,难的是塞得进去的那一堆模型里,哪个真正最强。
传统做法是:看显存 →找尺寸匹配的模型 →凭印象 / 参数选一个。但这个链条有三个坑:
- 参数多不等于能力强。32B 的 Qwen3 不一定比 27B 的 Qwen3.6 强;MoE 模型只看参数总量会被严重误导(30B-A3B 实际只激活 3B)。
- 量化等级影响巨大。同一个 7B 模型,Q3 和 Q6 的效果差距能到 20 分 benchmark。
- 榜单会过期。HuggingFace Open LLM Leaderboard2024 年的冠军,放到 2026 年连前十都进不去。
whichllm 把这三件事一起解决了:实时拉 HuggingFace 的 benchmark 数据、按你的硬件过滤、按” 质量 × 速度” 综合打分排序,输出一个可以直接用的 Top N 表格。
我在 M3 Max 上跑了一下
安装一行命令:
1 | uvx whichllm@latest |
(它推荐用
uvx,不用装虚拟环境,不用装 Python 包管理器 —— 这点很贴心,毕竟不是每个想跑本地 LLM 的人都是 Python 老手)
它在终端扫了我的硬件:
1 | GPU: Apple M3 Max (40-core GPU, unified memory) |
然后给我吐出来一张表:
1 | #1 Qwen/Qwen3.6-27B27.8B Q5_K_M score89.49 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 | whichllm --gpu "RTX5090" |
你想升级显卡但不知道值不值?跑一下。不用真的买。
4. 还能反向查:跑这个模型需要什么卡
1 | whichllm plan "llama370b" |
5. 一键开聊
1 | whichllm run |
或者你想指定:
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 | #一次性试用,不用安装 |
MIT 协议,3.5k 星,2026 年 6 月还在活跃更新(v0.5.8 才发了 5 天)。作者一个人在维护,但仓库结构干净,issues 回得也快 —— 属于那种” 用着放心” 的项目。
写完这一篇我去把 whichllm 加进自己的 dotfiles 装机脚本里。如果你也是个在不同设备之间切换的 AI 重度用户,建议今天就试一下,跑完回来告诉我你看到了什么模型排在第一。