チャットの速度を決めるのは演算性能ではなく帯域幅
モデルが答えるとき、トークンは1つずつ生成され、トークンごとにアクティブな重みをすべてメモリから読む必要があります。4ビットの32Bモデルは重みが約19GBなので、1,000GB/sで転送できるGPUでも、読めるのは最大で1秒に約50回です。これが上限です。演算性能が効くのは、プロンプトの読み込み(1回のパスで済むので速い)と、多人数への同時提供(読み込みをバッチにまとめられる)のときです。
同じメモリ量の2枚のGPUで体感がまったく違うのも、同じモデルで5090が4090のほぼ2倍速いのも、MoEモデルが速く感じるのも、これが理由です。MoEモデルは使うエキスパートだけを読みます。
数字の読み方
- 25トークン/秒以上なら、チャットではすぐに返ってくる感覚です。人が読む速さは1秒に5〜8語(英語の場合)ほどです。
- 12〜25なら、たいていの人には十分ですが、長いコードの出力では少し遅く感じます。
- 5未満は、放っておけるバッチ処理でしか使う価値がありません。
- モデルがGPUに収まらない場合、速度は無視してください。システムメモリへのオフロードは10〜50倍遅くなります。
まずはVRAM計算ツールで収まるかを確かめるか、ローカルLLM動作チェッカーで両方を一度に確かめてください。量子化の選び方の考え方はセルフホストLLMのガイド(英語)にあります。