whichllm 是什么
whichllm 是一个开源的 CLI 工具,核心功能就一句话:检测你的硬件配置,从 HuggingFace 实时抓取模型数据,用真实基准评测分数而非参数量来排名,告诉你哪个本地大模型最适合你的机器。
| 项目信息 | 数据 |
|---|---|
| GitHub 仓库 | https://github.com/Andyyyy64/whichllm |
| Stars | 3,081 |
| Forks | 176 |
| 语言 | Python |
| 许可证 | MIT |
| 创建时间 | 2026-03-04 |
| Python 版本要求 | 3.11+ |
GIF 演示效果:
$ whichllm --gpu "RTX 4090"
#1 Qwen/Qwen3.6-27B 27.8B Q5_K_M score 92.8 27 t/s
#2 Qwen/Qwen3-32B 32.0B Q4_K_M score 83.0 31 t/s
#3 Qwen/Qwen3-30B-A3B 30.0B Q5_K_M score 82.7 102 t/s
这个输出揭示了一个重要洞察:32B 模型明明能塞进 24GB 显存,但 whichllm 仍然把 27B 排在第一,因为它基准评分更高、是更新一代的模型。参数量最大 ≠ 综合体验最好,这正是 whichllm 的核心设计哲学。
核心特性
| 特性 | 说明 |
|---|---|
| 自动硬件检测 | 支持 NVIDIA、AMD、Apple Silicon、CPU-only |
| 智能排名 | 综合 VRAM 适配性、推理速度和基准评分 |
| 一键运行 | whichllm run 自动下载并启动聊天 |
| GPU 模拟 | --gpu "RTX 4090" 无需实际硬件即可模拟 |
| 硬件规划 | whichllm plan "llama 3 70b" 反向查找所需 GPU |
| 升级对比 | whichllm upgrade "RTX 4090" "RTX 5090" "H100" |
| 代码片段 | whichllm snippet "qwen 7b" 输出可复用的 Python 代码 |
| JSON 输出 | --json 管道友好,方便集成到脚本 |
| 任务筛选 | --profile 按通用/编程/视觉/数学任务筛选 |
快速上手
一行命令运行
# 自动检测硬件并推荐(无需安装,临时运行)
uvx whichllm@latest
安装后使用
# 使用 uv 安装
uv tool install whichllm
uv tool upgrade whichllm # 更新
# 或使用 Homebrew
brew install andyyyy64/whichllm/whichllm
# 或使用 pip
pip install whichllm
常用命令一览
# 检测当前硬件并推荐最佳模型
whichllm
# 模拟特定 GPU
whichllm --gpu "RTX 4090"
# CPU-only 模式
whichllm --cpu-only
# 只显示最佳结果,输出 JSON
whichllm --top 1 --json
# 控制排名数量
whichllm --top 20
# 筛选量化级别
whichllm --quant Q4_K_M
# 按任务筛选
whichllm --profile coding
各硬件平台的最佳推荐
以下数据基于 2026 年 5 月的实时 HuggingFace 数据(whichllm 始终拉取最新数据,此表仅为快照参考):
| 硬件 | 显存 | 最佳推荐 | 速度 |
|---|---|---|---|
| RTX 5090 | 32 GB | Qwen3.6-27B · Q6_K · score 94.7 | ~40 t/s |
| RTX 4090 / 3090 | 24 GB | Qwen3.6-27B · Q5_K_M · score 92.8 | ~27 t/s |
| RTX 4060 | 8 GB | Qwen3-14B · Q3_K_M · score 71.0 | ~22 t/s |
| Apple M3 Max | 36 GB | Qwen3.6-27B · Q5_K_M · score 89.4 | ~9 t/s |
| CPU only | — | gpt-oss-20b (MoE) · Q4_K_M · score 45.2 | ~6 t/s |
为什么需要 whichllm
传统方法的问题
把模型塞进显存只是第一步。更难的是知道「塞进去的那么多模型里,哪个体验最好?」 传统做法是看参数量——「32B 比 27B 大,所以更好」——但这个假设在现实中经常失效。
whichllm 的设计目标就是解决这个问题。
基于证据的排名引擎
| 特性 | whichllm 的做法 | 传统做法 |
|---|---|---|
| 排名依据 | 合并多个真实基准的评分 | 只看参数量 |
| 时效性 | 基准数据带时间衰减,旧模型分数自动降低 | 新旧模型一视同仁 |
| 置信度 | 每个分数标记证据等级(直接/派生/自报)并打折 | 不区分来源 |
| 硬件适配 | 考虑显存、带宽、量化效率、MoE 激活参数 | 只看「能不能装下」 |
| 数据来源 | 实时从 HuggingFace API 拉取 | 依赖静态列表 |
引入新视角:whichllm 让本地大模型的选择从「能不能跑」进化到了「哪个最好」,这对日益丰富的本地模型生态来说意义重大。
评分机制
每个模型获得 0-100 的综合评分。评分由多个因素加权计算:
| 因素 | 影响 | 说明 |
|---|---|---|
| 基准质量 | 核心 | LiveBench、Artificial Analysis Index、Aider、Arena ELO 等多源融合 |
| 模型大小 | 最高 +35 | log2 缩放的世界知识代理(MoE 用总参数量) |
| 量化损失 | × 惩罚 | 低比特量化按比例打折 |
| 证据置信度 | ×0.55–1.0 | 自报 ×0.55、继承 ×0.78、直接匹配满分 |
| 运行适配 | ×0.50–1.0 | 部分卸载 ×0.72、CPU-only ×0.50 |
| 推理速度 | -8 ~ +8 | 可用性门槛,含置信度和范围元数据 |
| 来源可信度 | -5 ~ +5 | 官方机构加分、已知封装者减分 |
| 流行度 | 破平 | 下载量和点赞数,证据越强权重越低 |
分数标记系统
输出中每个分数旁附带一个标记,提示用户该分数的证据强度:
| 标记 | 颜色 | 含义 |
|---|---|---|
| 无标记 | — | 直接匹配,最可靠 |
~ | 黄色 | 无直接基准,从模型家族继承/插值 |
!sr | 亮黄 | 仅由上传者自报,未独立验证 |
? | 红色 | 无可用基准数据 |
深入玩法
GPU 模拟
购买硬件前,先用 whichllm 看看不同 GPU 的推荐效果:
# 模拟不同显卡的推荐结果
whichllm --gpu "RTX 4090"
whichllm --gpu "RTX 5090"
whichllm --gpu "RTX 5060 16" # 指定具体变体
硬件升级规划
对比当前机器和候选升级 GPU 的表现差距:
# 对比三种升级候选
whichllm upgrade "RTX 4090" "RTX 5090" "H100"
# 显示 Top 5 升级对比
whichllm upgrade "Apple M4 Max" --top 5
反向规划:模型到 GPU
想知道跑某个模型需要什么显卡?用 plan:
whichllm plan "llama 3 70b"
whichllm plan "Qwen2.5-72B" --quant Q8_0
whichllm plan "mistral 7b" --context-length 32768
一键运行模型
whichllm 可以自动下载模型并启动交互式聊天:
# 按名称搜索并运行
whichllm run "qwen 2.5 1.5b gguf"
# 自动选择当前硬件最好的模型来聊天
whichllm run
# CPU-only 模式下运行
whichllm run "phi 3 mini gguf" --cpu-only
支持所有流行的模型格式:
- GGUF — 通过
llama-cpp-python运行 - AWQ / GPTQ — 通过
transformers+autoawq/auto-gptq - FP16 / BF16 — 通过
transformers
获取 Python 代码片段
whichllm snippet "qwen 7b"
输出示例:
from llama_cpp import Llama
llm = Llama.from_pretrained(
repo_id="Qwen/Qwen2.5-7B-Instruct-GGUF",
filename="qwen2.5-7b-instruct-q4_k_m.gguf",
n_ctx=4096,
n_gpu_layers=-1,
verbose=False,
)
output = llm.create_chat_completion(
messages=[{"role": "user", "content": "Hello!"}],
)
print(output["choices"][0]["message"]["content"])
Ollama 集成
结合 JSON 输出和 jq,可以无缝集成到 Ollama 工作流:
# 获取最佳模型的 HuggingFace ID
whichllm --top 1 --json | jq -r '.models[0].model_id'
# 获取最佳编程模型的 ID
whichllm --profile coding --top 1 --json | jq -r '.models[0].model_id'
Shell alias 一键运行最佳模型:
alias bestllm='whichllm --top 1 --json | jq -r ".models[0].model_id"'
# ollama run $(bestllm)
技术架构
数据管道
- 模型抓取 — 从 HuggingFace API 拉取热门模型(文本生成、GGUF 过滤、视觉模型)
- 基准数据 — 分层策略:当前层(LiveBench、Artificial Analysis Index、Aider)实时可获取时优先使用;冻结层(Open LLM Leaderboard v2、Chatbot Arena ELO)作为兜底,带时间衰减
- 证据解析 — 五级分辨率:
direct→variant→base_model→line_interp→self_reported,逐级打折 - 缓存 —
~/.cache/whichllm/下:模型缓存 6h TTL,基准缓存 24h TTL
排名引擎
- 硬件检测 — NVIDIA(nvidia-ml-py)、AMD(dbgpu/ROCm)、Apple Silicon(Metal)、CPU(核心数、AVX 支持)、内存和磁盘
- VRAM 估算 — 权重 + KV Cache + 激活内存 + 框架开销(~500MB)
- 兼容性 — 全 GPU / 部分卸载 / CPU-only;计算能力和操作系统检查
- 速度预测 — 基于 GPU 内存带宽、量化类型、后端、适配类型和 MoE 激活参数
- 评分 — 基准(置信度打折)+ 大小 + 量化惩罚 + 适配类型 + 速度 + 流行度 + 来源可信度
- 后端过滤 — Apple Silicon 和 CPU-only 限制为 GGUF;Linux + NVIDIA 允许 AWQ/GPTQ
项目结构
src/whichllm/
├── cli.py # 主 CLI 入口
├── hardware/
│ ├── detector.py # 硬件检测编排
│ ├── nvidia.py # NVIDIA GPU 检测
│ ├── amd.py # AMD GPU 检测
│ ├── apple.py # Apple Silicon 检测
│ ├── cpu.py # CPU 信息
│ ├── memory.py # 内存和磁盘
│ └── gpu_simulator.py# GPU 模拟器
├── models/
│ ├── fetcher.py # HuggingFace API 抓取
│ ├── benchmark.py # 基准数据处理
│ ├── grouper.py # 模型家族分组
│ └── cache.py # 缓存管理
├── engine/
│ ├── vram.py # VRAM 估算
│ ├── compatibility.py# 兼容性检查
│ ├── performance.py # 速度预测
│ ├── quantization.py # 量化处理
│ └── ranker.py # 评分排名
└── output/
└── display.py # 输出格式化
优劣势分析
| 优势 | 劣势 |
|---|---|
| 一行命令即可使用(uvx),零安装复杂度 | 需要 Python 3.11+,部分依赖 nvidia-ml-py(自动安装) |
| 基于真实基准评分,比纯参数量排名更可靠 | 部分稀有模型可能无基准数据(标记为 ?) |
| 实时从 HuggingFace 拉取数据,无需手动更新 | 首次运行需下载缓存(后续使用极快) |
| GPU 模拟功能对硬件选购极有实用价值 | AMD GPU 检测在 Windows 环境下有限制 |
| 开源 MIT 许可证,可以自由集成到其他工具 | 排名结果受 HuggingFace API 返回质量影响 |
| 支持 LLM 的各类格式(GGUF/AWQ/GPTQ/FP16) | — |
适合谁用
- 本地大模型玩家 — 想找到自己机器上能跑的最佳模型,不用自己逐个测试
- 硬件选购者 — 买显卡前先用
--gpu模拟不同配置的推荐结果 - 应用开发者 — 需要脚本化选择模型的集成场景(
--json输出) - LLM 应用快速原型者 — 用
run和snippet快速测试模型效果 - AI 研究者 — 需要批量对比不同硬件配置上的模型表现
总结
whichllm 解决了本地大模型选择中的核心矛盾:能跑的不一定最好,最大的不一定最适合。 它用基于证据的排名引擎,让用户说出「我有什么硬件」就能得到「我应该装哪个模型」的答案。
无论是购买前的硬件规划,还是日常的模型选择,whichllm 都能帮上忙。对于本地 AI 生态来说,它填补了一个有价值的小角落。
项目地址
| 资源 | 链接 |
|---|---|
| GitHub 仓库 | https://github.com/Andyyyy64/whichllm |
| PyPI 包 | https://pypi.org/project/whichllm/ |
| 安装命令 | pip install whichllm 或 uv tool install whichllm |
参考资料
- whichllm GitHub 仓库:项目源代码、README 和全部文档。→ https://github.com/Andyyyy64/whichllm
- HuggingFace 模型中心:whichllm 的模型数据来源。→ https://huggingface.co/models
- PyPI 包:Python 安装来源。→ https://pypi.org/project/whichllm/
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/ai/whichllm.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)