AlexsJones/llmfit
落としてから「動かない」と分かる前に、載るモデルを絞る
どういうものか
llmfit は、手元のマシンでどの LLM が動くかを、実際に入れる前に見積もるコマンド。走らせると、ハードを調べ、カタログのモデル全部に点を付けて並べる(動かないものは下に沈む)。ローカルで動かすモデル選びは、大きなファイルを落としては消し、量子化を1段落としてまた試す、という繰り返しになりがちで、そこにかかる時間と回線を先に削るための道具だ。
見積もりは3段で進む。まずハードを見る。CPU のコア数、RAM、積んでいる GPU と VRAM、メモリを CPU と GPU で共有する構成(統合メモリ)かどうか、そして NVIDIA CUDA、Apple Silicon、AMD ROCm、Intel OneAPI のどれに当たるか。次に必要な量を出す。モデルのパラメータ数、動かしたい文脈の長さ、量子化の形式(GGUF、AWQ、GPTQ、EXL2)から、占めるメモリを計算する。
面白いのは速度の出し方で、生成の速さを、計算の速さではなくメモリ帯域から見積もっている(プロンプトを読む側は演算性能に縛られるため、別に扱われる)。生成中は毎回モデルの重みを読み出すため、一般に、実際の速さは演算性能よりメモリを読む速さで頭打ちになりやすい。llmfit はこの帯域の見積もりに、実行時のサンプリングとコミュニティから集めた計測値を合わせている。結果は「載るか」「速さ」「品質」「文脈」の4つの軸で点数が付く。見積もるだけでなく、自分のマシンで実際の tok/s を測り、その値をプロジェクトへの pull request として送ることもできる。画面はターミナル版と Web 版があり、REST API も生えているので、別のツールから呼べる。
どんなときに使うか
新しいモデルが出るたび、落としては試して消しているとき
パラメータ数と量子化の組み合わせは多く、試すたびに大きなダウンロードが挟まる。先に落ちる組み合わせを外せるだけで、待ち時間と回線がまとまって減る。
マシンを買う前・増設する前に、どこまで狙えるか知りたいとき
必要なメモリが計算で出るので、「このモデルを文脈32kで動かすには何 GB 要るか」を、買い物の前に逆から確かめられる。
注意点
出るのは見積もりで、保証ではない。 README 自身も estimates と書いている。速さは、GPU が帯域の表にある場合は効率の係数(既定 0.55)を掛けた式で出しているので、実測とはずれる(表に無い GPU では、バックエンドごとの定数に落ちる)。載るかどうかの判定のほうは、付属の説明書き(How it works)によれば使用率98%で線を引いていて、「最後の1%まで埋まった状態では割り当ての余白が残らず、実際には読み込めない」という理由が添えられている。自分の環境で確かめる前提で使う道具で、推定の根拠を出す info と、動かしているランタイムに向けて実測する bench が用意されている。
速さの根拠には、他人の計測値が混ざっている。 README によれば、帯域の見積もりは実行時のサンプリングとコミュニティの計測値をもとにしている。珍しい構成のマシンほど、近い実測が集まっていない可能性は頭に置いておきたい。
「載る」と「使える」は別。 ぎりぎり載る構成は、文脈を伸ばした途端に足りなくなる。実際に使う長さを入れて見積もらないと、意味のある比較にならない。
ライセンスは MIT。