Hacker News 热门(buzzing.cc 中文翻译)
精选
78AI 编辑部评分,满分 100

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

2026-05-15 20:00· 91天前· andyyyy64
AI 导读

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

推荐理由

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

正文 · 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 参考
  • 工作原理
  • 评分
  • 硬件检测与模拟
  • 运行与代码片段
  • 故障排除

工作原理

数据管道

  1. 模型获取 — 从 HuggingFace API 获取流行模型:

    • 文本生成(按下载量 + 最近更新排序)
    • GGUF 过滤(单独查询以扩大覆盖范围)
    • 视觉模型(图像-文本到文本),当使用 `--profile vision` 或 `any` 参数时
  2. 基准测试来源 — 当前层级(LiveBench, Artificial Analysis Index, Aider)在可访问时实时合并,外加一个精选的多模态/视觉索引;冻结层级(Open LLM Leaderboard v2, Chatbot Arena ELO)。各层级有独立的上限和基于谱系的时效性降权机制,使得过时的排行榜不再过度奖励旧代模型。

  3. 基准测试证据 — 五个解析级别,折扣程度递增:

    • 直接 — 精确的模型 ID 匹配
    • variant — 去除后缀或 -Instruct 变体
    • base_model — 来自 cardData 的基础模型
    • line_interp — 模型家族内考虑规模的插值
    • self_reported — 上传者声称的评测(权重极低)

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

  4. Cache — ~/.cache/whichllm/:

    • models.json — 6 小时 TTL
    • benchmark.json — 24 小时 TTL

排名引擎

  1. 硬件检测 — NVIDIA(nvidia-ml-py)、AMD(dbgpu/ROCm)、Apple Silicon(Metal)、CPU 核心数、内存、磁盘
  2. 显存估算 — 权重 + KV cache + 激活值 + 框架开销(约 500MB)
  3. 兼容性 — 全 GPU / 部分卸载 / 仅 CPU;计算能力和操作系统检查
  4. 速度 — 基于 GPU 内存带宽、量化方式、后端、适配类型和 MoE 活跃参数得出的 tok/s
  5. 评分 — 评测(带置信度衰减)、规模、量化惩罚、适配类型、速度、流行度、来源可信度(官方 vs 重新打包者)
  6. 后端过滤 — 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%

来源:Hacker News 热门(buzzing.cc 中文翻译) · github.com

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

Hacker News 热门(buzzing.cc 中文翻译)·2026-05-15 20:00·91天前·andyyyy64
AI 导读

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

正文 · 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 参考
  • 工作原理
  • 评分
  • 硬件检测与模拟
  • 运行与代码片段
  • 故障排除

工作原理

数据管道

  1. 模型获取 — 从 HuggingFace API 获取流行模型:

    • 文本生成(按下载量 + 最近更新排序)
    • GGUF 过滤(单独查询以扩大覆盖范围)
    • 视觉模型(图像-文本到文本),当使用 `--profile vision` 或 `any` 参数时
  2. 基准测试来源 — 当前层级(LiveBench, Artificial Analysis Index, Aider)在可访问时实时合并,外加一个精选的多模态/视觉索引;冻结层级(Open LLM Leaderboard v2, Chatbot Arena ELO)。各层级有独立的上限和基于谱系的时效性降权机制,使得过时的排行榜不再过度奖励旧代模型。

  3. 基准测试证据 — 五个解析级别,折扣程度递增:

    • 直接 — 精确的模型 ID 匹配
    • variant — 去除后缀或 -Instruct 变体
    • base_model — 来自 cardData 的基础模型
    • line_interp — 模型家族内考虑规模的插值
    • self_reported — 上传者声称的评测(权重极低)

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

  4. Cache — ~/.cache/whichllm/:

    • models.json — 6 小时 TTL
    • benchmark.json — 24 小时 TTL

排名引擎

  1. 硬件检测 — NVIDIA(nvidia-ml-py)、AMD(dbgpu/ROCm)、Apple Silicon(Metal)、CPU 核心数、内存、磁盘
  2. 显存估算 — 权重 + KV cache + 激活值 + 框架开销(约 500MB)
  3. 兼容性 — 全 GPU / 部分卸载 / 仅 CPU;计算能力和操作系统检查
  4. 速度 — 基于 GPU 内存带宽、量化方式、后端、适配类型和 MoE 活跃参数得出的 tok/s
  5. 评分 — 评测(带置信度衰减)、规模、量化惩罚、适配类型、速度、流行度、来源可信度(官方 vs 重新打包者)
  6. 后端过滤 — 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%

来源:Hacker News 热门(buzzing.cc 中文翻译)· github.com