はじめに
ローカル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購入前のシミュレーションにも使える。
関連記事
参考リンク
- AlexsJones/llmfit(GitHub) — 本記事のコマンド実行結果はすべてこのリポジトリのv1.1.6に基づく