0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

llmfitで手元のサーバーを診断したら「Perfect」が0/4476だった

0
Last updated at Posted at 2026-07-22

はじめに

ローカルLLMを試すとき、「このモデルは今の自分のマシンで動くのか」という判断はだいたい勘に頼ることになる。パラメータ数だけを見て「7Bなら大丈夫だろう」と実行してみたら、メモリ不足でプロセスが落ちた——という経験をした人は少なくないはずだ。

この判断を一つのコマンドで機械的に出す、と謳うOSSツールがある。Rust製のllmfitだ。MITライセンスで公開され、GitHubで3万スターを超えるトレンド入りを継続している。Ollama・llama.cpp・MLX・LM Studio・Docker Model Runnerといった主要なローカル実行環境に対応し、数百モデルを手元のRAM・CPU・GPUに照らしてスコアリングする。

謳い文句どおりの精度が出るのか、実際にクラウド実行環境(GPUなし・Intel Xeon 4コア・RAM 15.7GB)にインストールして確かめた。

TL;DR

  • llmfit は system/fit/info/plan/recommend などのサブコマンドで、手元のハードウェアに対して4,000種類超のモデルを一括スコアリングするRust製CLI
  • 実機(GPUなし・RAM 15.7GB)で fit を実行すると、互換モデル4,476件のうち「Perfect」評価は 0件、大半が「Good」(3,206件)か「Marginal」(628件)だった
  • --memory/--ram でハードウェアを仮想的に差し替えられる。同じモデルで24GBのGPUを想定すると、推定速度が2.1 tok/s→21.5 tok/sまで伸び、「Perfect」評価も3,786件に増えた
  • plan コマンドでモデル・コンテキスト長からVRAM/RAM要件を逆算できるため、GPU購入前のシミュレーションに使える

「Perfect」評価は本当に出ないのか

llmfitのインストール方法は複数用意されている。Homebrew・Scoop・MacPorts・curlのインストールスクリプト・Python(uv/pip)・Docker、そしてソースからの cargo install だ。今回はクラウド実行環境にRustツールチェーンが入っていたため、cargo install を選んだ。

cargo install llmfit --locked

これは一度失敗した。

error: rustc 1.94.1 is not supported by the following package:
  sysinfo@0.39.3 requires rustc 1.95
Either upgrade rustc or select compatible dependency versions with
`cargo update -p sysinfo@0.39.3 --precise <version>`
where `<version>` is the latest version supporting rustc 1.94.1

依存クレートの sysinfo(ハードウェア検出ライブラリ)がRust 1.95以上を要求しており、環境のrustc(1.94.1)が古かった。rustup update stable でrustc 1.97.1に更新すると、2分32秒でビルドが通った。

rustup update stable
cargo install llmfit --locked
llmfit --version
# llmfit 1.1.6

まず system サブコマンドでハードウェア検出結果を確認する。

$ llmfit system
=== System Specifications ===
CPU: Intel(R) Xeon(R) Processor @ 2.80GHz (4 cores)
Total RAM: 15.70 GB
Available RAM: 15.01 GB
RAM Bandwidth: ~35 GB/s (measured)
Backend: CPU (x86)
GPU: Not detected

RAM帯域まで実測している。次に fit で、この環境に合うモデルを一覧化する。

$ llmfit fit
(896 models hidden — incompatible backend)
Found 4476 compatible model(s)

│ Status       │ Model                                              │ Score │ tok/s est. │ Mem %   │
│ 🟡 Good      │ deepseek-ai/DeepSeek-R1-0528-Qwen3-8B              │ 82    │ 2.1        │ 68.2%   │
...

内訳を数えると、互換モデル4,476件のうち「🟢 Perfect」は 0件。「🟡 Good」が3,206件、「🟠 Marginal」が628件、「🔴 Too Tight」が642件だった。最もスコアの高いモデルでも、推定速度は2.1 tok/s台に留まる。4コア・GPUなしという構成では、快適に動く水準(Perfect判定)に届くモデルが一つもない、という結果になる。

GPUを仮想的に足すと何が変わるか

llmfitは --memory(GPU VRAM)と --ram(システムRAM)をグローバルフラグとして持ち、実機のハードウェアを一時的に上書きしてシミュレーションできる。24GBのGPUと64GBのRAMを積んだ場合を試した。

$ llmfit --memory 24G --ram 64G fit
(550 models hidden — incompatible backend)
Found 4822 compatible model(s)

│ 🟢 Perfect   │ deepseek-ai/DeepSeek-R1-0528-Qwen3-8B  │ 93 │ 21.5 │ GPU │ 42.6% │

CPUのみでは82点・2.1 tok/sだった同じモデル(deepseek-ai/DeepSeek-R1-0528-Qwen3-8B)が、24GB GPU想定では93点・21.5 tok/sまで伸びた。約10倍の速度差になる。「Perfect」判定の件数も0件から3,786件に増えた。GPUを買う前に、どの程度の投資でどこまで速度が伸びるかを、実機を用意せずに数字で見積もれる。

モデル1件を掘り下げる

info サブコマンドで特定モデルの詳細を見ると、スコアの内訳まで開示される。

$ llmfit info "unsloth/DeepSeek-R1-0528-Qwen3-8B-unsloth-bnb-4bit"
Score Breakdown:
  Overall Score: 81.5 / 100
  Quality: 91  Speed: 8  Fit: 100  Context: 100

Resource Requirements:
  Min VRAM: 4.3 GB
  Min RAM: 4.7 GB (CPU inference)
  Recommended RAM: 7.8 GB

速度スコアだけが8点と極端に低く、総合点を引き下げている。品質・適合・コンテキストのスコアが高くても、CPU推論では実用速度に届かないという構造が数値で見える。

ハードウェア購入の判断材料にする

plan サブコマンドは、モデル名とコンテキスト長を指定すると必要なVRAM/RAMを逆算する。モデル指定は完全一致ではなく検索になっており、曖昧だと候補一覧を返してくる。

$ llmfit plan "llama-3.1-8b" --context 8192
Error: Model selector 'llama-3.1-8b' is ambiguous. Matches: unsloth/Llama-3.1-8B-Instruct-GGUF, ...

Hugging Face上のリポジトリパスをそのまま指定すると解決する。

$ llmfit plan "unsloth/Llama-3.1-8B-Instruct-bnb-4bit" --context 8192
Minimum Hardware:
  VRAM: 5.8 GB
  RAM: 8.0 GB
Recommended Hardware:
  VRAM: 7.7 GB
  RAM: 12.0 GB
Feasible Run Paths:
  GPU: Yes

--json を付ければ構造化出力になり、AIエージェントからの呼び出しも想定されている。実際 plan --help には llmfit plan "qwen-72b" --context 4096 --quant Q4_K_M --target-tps 15 --json というAgent向けの実行例が明記されていた。Claude CodeのようなエージェントハーネスからMCP経由ではなくCLI直叩きで組み込む設計だ。

著者視点の発見ポイント

実際に動かして分かったのは、llmfitが「動く/動かない」の二値判定ではなく、メモリ使用率(Mem %)と推定tok/sという具体的な数字でハードウェアの限界を可視化する点だ。--memory/--ram でハードウェアを差し替えて fit を再実行できるため、「今の環境では2 tok/sしか出ないが、24GB積めば21 tok/sまで伸びる」という比較を、実機を買う前にシミュレーションできる。単なる互換性チェッカーではなく、購入判断のための見積もりツールとして機能していた。

一方で、cargo install でのビルドがRustのマイナーバージョン差で失敗した点は、ドキュメントに明記されていない実運用上の注意点だった。ソースからインストールする場合は、事前に rustup update stable でツールチェーンを最新化しておくとよい。

まとめ

「7Bなら大丈夫だろう」という勘に頼らず、llmfit fit と llmfit plan を使えば、tok/s推定値とメモリ使用率という具体的な数字でモデルとハードウェアの適合度を判断できる。GPUなしの環境でもモデル選定に迷わなくなり、GPU購入前のシミュレーションにも使える。

関連記事

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?