Skip to content

Latest commit

 

History

History
249 lines (187 loc) · 8.17 KB

File metadata and controls

249 lines (187 loc) · 8.17 KB

whichllm

手元のハードウェアで実際に動くローカルLLMを探すCLIです。

whichllm は GPU / CPU / RAM / ディスクを検出し、HuggingFace 上のモデルを 取得して、実行できる候補をランキングします。単に「VRAMに入る最大モデル」を 選ぶのではなく、ベンチマーク、量子化、速度、実行形態、モデル世代をまとめて 評価します。

English version

demo

インストール

uv

一度だけ試す場合:

uvx whichllm@latest

継続して使う場合:

uv tool install whichllm
uv tool upgrade whichllm  # 既存インストールを更新

Homebrew

brew install andyyyy64/whichllm/whichllm

pip

pip install whichllm

余裕を持って動く候補だけ見たい場合

whichllm のデフォルトは少し攻めた推薦です。RAMへのpartial offloadや、 VRAMぎりぎりの候補も、動きそうならランキングに入れます。

LM Studioなどで余裕を持って動かしたい場合は、まずこれを使ってください。

uvx whichllm@latest --gpu-only --speed usable --vram-headroom 1GB

GPUのVRAMに全部載る候補だけに絞り、遅い推定速度の候補を外し、実行時の 余白も1GB残します。

それでもLM Studio側で少しはみ出す場合は、余白を増やします。

uvx whichllm@latest --gpu-only --speed usable --vram-headroom 1.5GB

開発用

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

まず使う

# 自動検出しておすすめモデルを表示
whichllm

# GPUをシミュレートする
whichllm --gpu "RTX 4090"
whichllm --gpu "Apple M3 Max"

# 複数GPUをシミュレートする
whichllm --gpu "2x RTX 4090"
whichllm --gpu "RTX 4090" --gpu "RTX 3090"

# GPUのVRAMに全部載る候補だけを見る
whichllm --gpu-only
whichllm --fit gpu

# 速度の最低ラインを指定する
whichllm --speed usable
whichllm --speed fast
whichllm --min-speed 4

# GitHubやSlackに貼りやすいMarkdown表で出力する
whichllm --markdown

# 実行時のメモリ余白やRAM使用量を指定する
whichllm --vram-headroom 1.5GB
whichllm --ram-budget available

# CPUのみとして評価する
whichllm --cpu-only

# JSONで出力する
whichllm --json

JSONの各モデルには estimated_tok_per_sec に加えて、fit_typevram_required_bytesvram_available_bytesuses_multi_gpumulti_gpu_effective_vram_bytesspeed_confidencespeed_range_tok_per_secspeed_notesbenchmark_sourcebenchmark_confidence が入ります。 速度は実測値ではなく、ハードウェア情報とモデル情報からの推定です。 通常の表には必要メモリ、推定生成速度、Fit種別、Published が表示されます。 Downloads まで見たい場合は --details を使います。 GitHub issue、README、Slack、Discord へ貼る場合は --markdown / -m でMarkdown表として出力できます。

主なコマンド

# 推薦ランキング
whichllm --top 20
whichllm --quant Q4_K_M
whichllm --min-speed 30
whichllm --speed usable
whichllm --speed fast
whichllm --markdown
whichllm --profile coding
whichllm --context-length 64k
whichllm --details
whichllm --gpu-only

# ベンチ根拠の厳しさ
whichllm --evidence strict
whichllm --evidence base
whichllm --direct

# モデルから必要GPUを逆算
whichllm plan "llama 3 70b"
whichllm plan "Qwen2.5-72B" --quant Q8_0
whichllm plan "mistral 7b" --context-length 32768

# 今のマシンと購入候補GPUを比較
whichllm upgrade "RTX 4090" "RTX 5090" "H100"

# モデルをダウンロードしてチャット
whichllm run "qwen 2.5 1.5b gguf"
whichllm run

# 実行用Pythonコードを表示
whichllm snippet "qwen 7b"

# ハードウェア情報だけ表示
whichllm hardware

スコアの見方

各モデルには 0 から 100 のスコアが付きます。中心になるのはベンチマークと モデルサイズですが、実行時に遅すぎる候補や、CPUオフロードが大きい候補は 下がります。

要素 役割
ベンチマーク LiveBench、Artificial Analysis、Aider、Vision、Arena、Open LLM Leaderboard を統合
モデルサイズ 知識量の近似。MoEは総パラメータを使う
量子化 Q4 / Q5 / Q6 / Q8 などの品質低下を反映
実行形態 Full GPU、Partial Offload、CPU-only を区別
速度 tok/s が実用ラインを下回ると減点。表示時は推定の信頼度と幅も出す
根拠の強さ direct、base_model、variant、line_interp、self_reported を区別
世代補正 古い凍結ベンチだけで新世代を上回らないよう調整

スコア横のマーカー:

  • ~: 直接ベンチではなく、系列や派生から推定したスコア
  • !sr: アップローダー自己申告の評価値だけに基づくスコア
  • ?: 利用できるベンチマーク根拠がないスコア

速度表示:

  • 赤: 4 tok/s 未満の遅い生成速度
  • 黄: 4-10 tok/s のぎりぎり使える生成速度
  • 緑: 10-30 tok/s の実用的な生成速度
  • 明るい緑: 30 tok/s 以上の高速なローカル生成速度
  • ~: 速度推定の幅がある通常の推定値
  • ?: backend や runtime の影響が大きい低信頼の推定値

仕組み

  1. ハードウェアを検出します。NVIDIA、AMD、Intel、Apple Silicon、CPU、RAM、 ディスク空き容量を見ます。
  2. HuggingFace APIからモデルを取得します。人気モデル、GGUF、最近更新された GGUF、trending、重要な frontier モデルを組み合わせます。
  3. ベンチマークを読み込みます。現在系の LiveBench / Artificial Analysis / Aider / Vision と、凍結系の Arena / Open LLM Leaderboard を分けて扱います。
  4. base_model とモデル名からファミリーを作り、同じモデルの派生やGGUFを束ねます。
  5. 候補ごとに VRAM、互換性、速度、速度推定の信頼度、スコアを計算します。
  6. ファミリーごとに最も良い候補を残して表示します。

通常は full GPU、partial offload、CPU-only の候補をまとめて見ます。GPUの VRAMに全部載るモデルだけを見たい場合は --gpu-only--fit gpu を使います。遅い候補を最初から除外したい場合は --speed usable--speed fast を使います。 それぞれ 10 tok/s30 tok/s が最低ラインです。 もっと低いラインを指定したい場合は --min-speed 4 のように数値で指定します。

キャッシュは通常 ~/.cache/whichllm/ に保存されます。XDG_CACHE_HOME が 絶対パスで設定されている場合は、その配下の whichllm/ を使います。

  • models.json: 6時間
  • benchmark.json: 24時間

プロジェクト構成

src/whichllm/
├── cli.py              # Typer CLI: main, plan, upgrade, run, snippet, hardware
├── constants.py        # 互換用のregistry再export
├── data/               # GPU、量子化、framework、lineageのregistry
├── hardware/           # ハードウェア検出とGPUシミュレーション
├── models/             # HuggingFace取得、ベンチ、キャッシュ、グルーピング
├── engine/             # VRAM、互換性、速度、ランキング
└── output/             # Rich表示、JSON、plan/upgrade表示

詳細ドキュメント

動作環境

  • Python 3.11+
  • NVIDIA GPU検出は nvidia-ml-pynvidia-smi fallback
  • AMD GPU検出は Linux / ROCm / sysfs / lspci と Windows fallback
  • Intel GPU検出は Linux / sysfs / lspci と Windows fallback
  • Strix Halo、Ryzen AI MAX、Radeon 890M 系は shared memory APU として扱う
  • Apple Silicon検出は macOS / system_profiler

ライセンス

MIT