跑本地大模型的人大概都有过这种经历:打开某个排行榜,看到一堆模型名,然后开始心算——这个参数量多大?我的显存/内存够不够?量化选 Q4 还是 Q6?最后要么保守选了个小模型,要么激进下了个大模型结果跑起来卡成幻灯片。
我之前选模型基本靠”社区 consensus”——大家说什么好就试什么。能跑起来就算成功,好不好用全凭体感。直到最近发现 whichllm 这个项目,才意识到选模型这件事其实可以不靠猜。

一行命令出答案
whichllm 是个 CLI 工具,干的事很简单:自动检测你的硬件配置(GPU 型号、显存、内存、CPU),然后从 HuggingFace 上拉取模型列表和 benchmark 数据,综合评分后告诉你哪个模型最适合你的机器。
# 不安装直接运行 uvx whichllm@latest # 或者装上长期使用 uv tool install whichllm whichllm
第一次运行它会检测硬件、拉取模型数据(缓存到本地),然后输出一个排名表:

表格里每列都有信息:模型名、量化方案、显存占用、预估推理速度、发布日期、综合得分。速度用颜色标注——红色低于 4 tok/s(基本不可用),黄色 4-10(勉强能用),绿色 10-30(流畅),30+ 以上亮绿。
它凭什么说哪个最好
这工具最让我觉得靠谱的地方是它的评分不是按参数量排的。
很多”模型推荐”工具的逻辑是:你的显存能塞下最大的那个 → 推荐最大的。但 whichllm 的评分体系综合考虑了好几个维度:
- Benchmark 分数(核心权重)——从 LiveBench、Artificial Analysis、Aider、Chatbot Arena 等多个排行榜拉取真实评测分数,而且带置信度衰减。2024 年的老榜单分数会被打折,防止旧模型靠过时高分刷榜
- 运行适配度——完全 GPU 运行得满分;部分 offload 到内存会扣分;纯 CPU 模式扣更多。因为实际体验差距确实大
- 推理速度——基于 GPU 内存带宽和模型大小估算 tok/s,慢于 4 t/s 的模型会被降权
- 证据等级——如果 benchmark 数据是模型作者自己声称的(self-reported),分数打五折;如果是权威榜单直接测的(direct),全额计入
所以会出现这种情况:RTX 4090 上它能塞下 32B 的模型,但最终推荐的是 27B 的 Qwen3.6——因为后者 benchmark 更高、更新、量化质量更好。能跑 ≠ 值得跑,这区分很关键。
几个我觉得实用的功能
GPU 模拟。还没买显卡可以先试试效果:--gpu "RTX 4090" 或 --gpu "M4 Max",它会用预设参数模拟那块卡的 VRAM 和带宽来给推荐。买显卡之前跑一下,比看论坛帖子靠谱得多。
反向查询。whichllm plan "qwen 3.6 27b" 告诉你跑这个模型需要什么级别的显卡,每种量化方案各占多少显存。
一键启动聊天。whichllm run "qwen 7b" 直接下载模型、创建隔离环境、进入交互对话。不需要手动配 llama.cpp 或 Ollama,适合想快速体验某个模型的场景。

还有 whichllm snippet 能输出可直接运行的 Python 代码片段(基于 llama-cpp-python),--json 输出方便接管道脚本。
在 Mac 上跑的效果
我的主力机是一台统一内存的 Mac,没有独立显卡。这类机器跑本地模型的特点是:VRAM 和系统内存共享,带宽比 NVIDIA 独显低不少(400-800 GB/s vs RTX 4090 的近 1000 GB/s)。所以同样一个模型,Mac 上能跑但速度偏慢。
whichllm 对 Apple Silicon 做了专门处理——识别 Metal 后端、考虑统一内存特性、默认只推荐 GGUF 格式(在 macOS 上稳定性最好)。我跑了一下,它推荐的模型比我自己凭直觉选的小一号,但实测下来响应速度确实更合理。之前我贪大下了个 MoE 模型,看着参数量吓人,实际生成速度不到 5 tok/s,体验很差。换成了 whichllm 推荐的方案之后,速度翻了一倍还多。
还有一个细节:它支持通过 --vram 和 --ram-bandwidth 手动覆盖检测结果。这对统一内存的 Mac 很有用——自动检测有时候偏保守,手动调一下能得到更准确的推荐。
一些踩过的坑
- 首次运行需要联网拉取 HuggingFace 数据,国内网络可能需要配代理或者设置
HF_ENDPOINT指向镜像站 - 模型数据有 6 小时 TTL 缓存,benchmark 数据 24 小时。如果想强制刷新加
--refresh - Python 要求 3.11+,macOS 自带的 Python 版本如果太老需要先升级或用 uv 管理
whichllm run默认用 uv 创建隔离环境再装依赖,第一次会比较慢(要下载 llama-cpp-python 编译),之后就快了
项目目前 5800+ 星,MIT 协议,最近还在活跃迭代(v0.5.15 是 7 月初发的)。如果你也在折腾本地模型,花 10 秒跑一下 uvx whichllm@latest,说不定会发现你一直在跑的那个模型并不是最优解。
GitHub 地址:Andyyyy64/whichllm