# Show HN： 根据基准测试排名，为您的硬件寻找最适合的本地 LLM

- 来源：Hacker News 热门（buzzing.cc 中文翻译）
- 作者：andyyyy64
- 发布时间：2026-05-15 20:00
- AIHOT 分数：78
- AIHOT 标记：精选
- AIHOT 链接：https://aihot.virxact.com/items/cmp6wbid805g6slnzngow8zgr
- 原文链接：https://github.com/Andyyyy64/whichllm

## 精选理由

选本地 LLM 不再靠猜，这个工具把基准测试和硬件匹配做得像查配置表，刚接触端侧的人也能立刻上手。

## AI 摘要

一个名为“WhichLLM”的开源工具已在GitHub发布，可根据用户硬件配置推荐最适合的本地大语言模型。该工具通过基准测试对各类模型进行排名，帮助用户依据自身设备的性能指标选择最优模型。项目在Hacker News上获得116点热度，显示出社区对本地化AI部署效率工具的积极关注。

## 正文

whichllm

找到能在你硬件上实际运行的最佳本地大语言模型。

自动检测你的 GPU/CPU/内存，并对 HuggingFace 上适配你系统的顶尖模型进行排名。

快速开始

无需项目设置，运行一次推荐命令即可。

uvx whichllm@latest

在购买硬件前模拟 GPU 性能。

uvx whichllm@latest --gpu "RTX 4090"

如果经常使用，可以安装它。

uv tool install whichllm uv tool upgrade whichllm # update an existing install

其他安装方式。

brew install andyyyy64/whichllm/whichllm pip install whichllm

常见工作流程

安装后，直接运行 whichllm。如需单次运行，用 `uvx whichllm@latest` 替代 whichllm。

# Best models for this machine whichllm

# Pretend you have a specific GPU whichllm --gpu "RTX 4090"

# Compare upgrade candidates whichllm upgrade "RTX 4090" "RTX 5090" "H100"

# Find the GPU needed for a model whichllm plan "llama 3 70b"

# Start a chat with a model whichllm run "qwen 2.5 1.5b gguf"

# Print copy-paste Python whichllm snippet "qwen 7b"

# Return JSON for scripts whichllm --top 1 --json

查看效果

$ 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 模型完全适配你的显卡——但 whichllm 仍将 27B 模型排在第一，因为它在真实基准测试中得分更高，且属于新一代模型。如果仅凭“能装多大”来判断，工具会推荐更大的那个。而这之间的差距正是 whichllm 的核心价值所在。（注 #3：MoE 模型速度为 102 token/秒——速度按激活参数排名，质量按总参数排名。）

我能运行什么？

真实最佳推荐（2026 年 5 月快照——你的结果会追踪 HuggingFace 实时数据，这不是静态列表）：

硬件 显存 最佳推荐 速度

RTX 5090 32 GB Qwen3.6-27B · Q6_K · 得分 94.7 ~40 token/秒

RTX 4090 / 3090 24 GB Qwen3.6-27B · Q5_K_M · 得分 92.8 ~27 token/秒

RTX 4060 8 GB Qwen3-14B · Q3_K_M · 得分 71.0 ~22 token/秒

Apple M3 Max 36 GB Qwen3.6-27B · Q5_K_M · 得分 89.4 ~9 token/秒

仅 CPU — gpt-oss-20b (MoE) · Q4_K_M · 得分 45.2 ~6 token/秒

运行 `whichllm --gpu "<你的显卡>"` 可在购买前模拟任意上述配置。

为什么选择 whichllm？

将模型塞进显存是容易的部分。困难的是知道哪些能装下的模型实际上是最好的——而这正是 whichllm 要解决的核心问题。

基于证据的排名，而非大小启发式——最佳推荐来自合并的真实基准测试（LiveBench、Artificial Analysis、Aider、多模态/视觉、Chatbot Arena ELO、Open LLM Leaderboard）——绝不推荐“恰好能装下的最大模型”。

时效性感知——过时的排行榜会沿着每个模型的迭代路径被降级，因此 2024 年的模型不可能凭借过时的分数超越当前一代模型。基准测试快照日期会打印在每个排名下方，这样过时的推荐便一目了然，而不会被默默信任。

基于证据的分级与审慎评估——每项评分均标注为直接/变体/基础/自报/插值，并根据置信度进行折扣。对于捏造的上传者声明以及跨模型族系的继承（即一个小型分支借用其更大基础模型的评分），系统会主动拒绝。

架构感知估算——显存占用 = 权重 + GQA KV 缓存 + 激活值 + 开销；速度受带宽限制，并考虑每量化效率、每后端因子、MoE 活跃参数与总参数的分割，以及统一内存与离散 PCIe 部分卸载建模。

单命令，可脚本化——`whichllm` 直接打印答案；添加 `--json | jq` 可用于管道处理。无 TUI，无需记忆快捷键。

实时数据——模型直接从 HuggingFace API 获取，并配有精选的冻结回退数据，供离线或限速场景使用。

功能特性

自动检测硬件——NVIDIA、AMD、Apple Silicon、仅 CPU

智能排序——根据显存适配度、速度和基准测试质量对模型进行评分

单命令聊天——`whichllm run` 立即下载并启动聊天会话

代码片段——`whichllm snippet` 为任意模型打印可直接运行的 Python 代码

实时数据——直接从 HuggingFace 获取模型（已缓存以提升性能）

基准感知——集成真实评测分数，并采用基于置信度的衰减机制

任务画像——可按通用、编程、视觉或数学用例进行筛选

GPU 模拟——使用任意 GPU 进行测试：`whichllm --gpu "RTX 4090"`

硬件规划——反向查询：`whichllm plan "llama 3 70b"`

升级规划——将当前机器与候选 GPU 进行对比

JSON 输出——便于管道处理：`whichllm --json`

运行与代码片段

使用单条命令即可尝试任意模型。无需手动安装——`whichllm` 通过 uv 创建隔离环境，安装依赖项，下载模型，并启动交互式聊天。

# Chat with a model (auto-picks the best GGUF variant) whichllm run "qwen 2.5 1.5b gguf"

# Auto-pick the best model for your hardware and chat whichllm run

# CPU-only mode 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"])

使用方法

# Auto-detect hardware and show best models whichllm

# Simulate a GPU (e.g. planning a purchase) whichllm --gpu "RTX 4090" whichllm --gpu "RTX 5090" # Specify variant whichllm --gpu "RTX 5060 16"

# CPU-only mode whichllm --cpu-only

# More results / filters whichllm --top 20 whichllm --quant Q4_K_M whichllm --min-speed 30 whichllm --evidence base # allow id/base-model matches whichllm --evidence strict # id-exact only (same as --direct) whichllm --direct

# JSON output whichllm --json

# Force refresh (ignore cache) whichllm --refresh

# Show hardware info only whichllm hardware

# Plan: what GPU do I need for a specific model? whichllm plan "llama 3 70b" whichllm plan "Qwen2.5-72B" --quant Q8_0 whichllm plan "mistral 7b" --context-length 32768

# Upgrade: compare your current machine against candidate GPUs whichllm upgrade "RTX 4090" "RTX 5090" "H100" whichllm upgrade "Apple M4 Max" --top 5

# Run: download and chat with a model instantly whichllm run "qwen 2.5 1.5b gguf" whichllm run # auto-pick best for your hardware

# Snippet: print ready-to-run Python code whichllm snippet "qwen 7b" whichllm snippet "llama 3 8b gguf" --quant Q5_K_M

JSON 模型行包含 estimated_tok_per_sec、speed_confidence、speed_range_tok_per_sec 和 speed_notes。速度范围是一个规划范围，而非实时基准测试。

集成

Ollama

使用 JSON 输出来为脚本提供数据，这些脚本可将 HuggingFace ID 映射到你本地的 Ollama 模型名称。

# Pick the top HuggingFace model ID whichllm --top 1 --json | jq -r '.models[0].model_id'

# Find the best coding model ID whichllm --profile coding --top 1 --json | jq -r '.models[0].model_id'

Ollama 的模型名称并不总是与 HuggingFace 仓库 ID 一致，因此在执行 `ollama run` 之前，通常需要一个小型的映射步骤。

Shell 别名

添加到你的 .bashrc / .zshrc 文件中：

alias bestllm='whichllm --top 1 --json | jq -r ".models[0].model_id"' # Usage: ollama run $(bestllm)

评分

每个模型都会获得一个 0-100 的分数。基准测试质量和模型大小构成核心分数；证据置信度和运行时适配性随后对其进行缩放，而速度、来源可信度和流行度则作为调整因子。

因子 影响 描述

基准测试质量 核心 合并了 LiveBench / Artificial Analysis / Aider / Vision / Arena ELO / Open LLM Leaderboard，并按来源置信度加权

模型大小 最高 35 分 基于 log2 缩放的世界知识代理指标（MoE 使用总参数量）

量化 × 惩罚系数 低位宽量化版本会以乘法方式打折

证据置信度 ×0.55–1.0 无证据 / 仅自报 ×0.55，继承自同系列 ×0.78，直接完整匹配

运行时适配性 ×0.50–1.0 部分卸载 ×0.72，仅 CPU ×0.50

速度 -8 到 +8 基于可用性门槛与适配性相关的 token/秒下限；附带置信度和范围元数据报告

来源可信度 -5 到 +5 官方组织加分，已知重新打包者扣分

流行度 打破平局 下载量/点赞数；随着证据增强，其权重会缩小

分数标记：

~（黄色）— 无直接基准测试；分数从模型家族继承/插值得到

!sr（亮黄色）— 仅上传者报告的基准测试，未经独立验证

?（红色）— 无可用基准测试数据

--status 中的速度标记：

~（黄色）— 有估计的 token/秒范围

?（红色）— 低置信度的速度估计；后端/运行时敏感性较高

文档

CLI 参考

工作原理

评分

硬件检测与模拟

运行与代码片段

故障排除

工作原理

数据管道

模型获取 — 从 HuggingFace API 获取流行模型：

文本生成（按下载量 + 最近更新排序）

GGUF 过滤（单独查询以扩大覆盖范围）

视觉模型（图像-文本到文本），当使用 `--profile vision` 或 `any` 参数时

基准测试来源 — 当前层级（LiveBench, Artificial Analysis Index, Aider）在可访问时实时合并，外加一个精选的多模态/视觉索引；冻结层级（Open LLM Leaderboard v2, Chatbot Arena ELO）。各层级有独立的上限和基于谱系的时效性降权机制，使得过时的排行榜不再过度奖励旧代模型。

基准测试证据 — 五个解析级别，折扣程度递增：

直接 — 精确的模型 ID 匹配

variant — 去除后缀或 -Instruct 变体

base_model — 来自 cardData 的基础模型

line_interp — 模型家族内考虑规模的插值

self_reported — 上传者声称的评测（权重极低）

当某个模型的参数量与其家族主要成员的差异超过 2 倍时，继承关系会被拒绝，这能捕获那些与规模大得多的基础模型共享同一 family_id 的草稿 / MTP / abliterated 分支。

Cache — ~/.cache/whichllm/：

models.json — 6 小时 TTL

benchmark.json — 24 小时 TTL

排名引擎

硬件检测 — NVIDIA（nvidia-ml-py）、AMD（dbgpu/ROCm）、Apple Silicon（Metal）、CPU 核心数、内存、磁盘

显存估算 — 权重 + KV cache + 激活值 + 框架开销（约 500MB）

兼容性 — 全 GPU / 部分卸载 / 仅 CPU；计算能力和操作系统检查

速度 — 基于 GPU 内存带宽、量化方式、后端、适配类型和 MoE 活跃参数得出的 tok/s

评分 — 评测（带置信度衰减）、规模、量化惩罚、适配类型、速度、流行度、来源可信度（官方 vs 重新打包者）

后端过滤 — Apple Silicon 和仅 CPU 模式限制为 GGUF 以保证稳定性；Linux+NVIDIA 允许 AWQ/GPTQ

项目结构

src/whichllm/ ├── cli.py # Typer CLI: main, plan, run, snippet, hardware ├── constants.py # GPU bandwidth, quantization bytes, compute capability ├── hardware/ │ ├── detector.py # Orchestrates GPU/CPU/RAM detection │ ├── nvidia.py # NVIDIA GPU via nvidia-ml-py │ ├── amd.py # AMD GPU (Linux) │ ├── apple.py # Apple Silicon (Metal) │ ├── cpu.py # CPU name, cores, AVX support │ ├── memory.py # RAM and disk free │ ├── gpu_simulator.py # --gpu flag: synthetic GPU from name │ └── types.py # GPUInfo, HardwareInfo ├── models/ │ ├── fetcher.py # HuggingFace API, model parsing, evalResults │ ├── benchmark.py # Arena ELO, Leaderboard (parquet/rows API) │ ├── grouper.py # Family grouping by base_model and name │ ├── cache.py # JSON cache with TTL │ └── types.py # ModelInfo, GGUFVariant, ModelFamily ├── engine/ │ ├── vram.py # VRAM = weights + KV cache + activation + overhead │ ├── compatibility.py# Fit type, disk check, compute/OS warnings │ ├── performance.py # tok/s from bandwidth │ ├── quantization.py # Bytes per weight, quality penalty, non-GGUF inference │ ├── ranker.py # Scoring, evidence filter, profile/match │ └── types.py # CompatibilityResult └── output/ └── display.py # Rich table, JSON output, hardware/plan displays

开发

git clone https://github.com/Andyyyy64/whichllm.git cd whichllm uv sync --dev uv run whichllm uv run pytest

贡献

欢迎贡献！请参阅 CONTRIBUTING.md 了解指南。

支持

如果 whichllm 帮你找到了合适的模型，或避免了一次错误的硬件猜测，欢迎赞助。这有助于维持项目的维护：硬件报告、打包、测试用例、评测更新以及对更多机器的支持。

无论是否赞助，whichllm 都将保持开源。Issues 和 PR 始终欢迎。

觉得有用？在 GitHub 上点个星标可以帮助其他人发现它，我也很想知道它为你的设备推荐了什么。欢迎在 Issues 中留言。

Star 历史

系统要求

Python 3.11+

通过 nvidia-ml-py 检测 NVIDIA GPU（默认包含）

AMD / Apple Silicon 自动检测

许可证

关于

找到真正能在你硬件上运行且性能最佳的本地大语言模型。基于真实且考虑时效性的评测进行排名，而非参数量。一条命令，即刻运行。

发布版本 11

软件包

贡献者

编程语言

Python 100.0%
