【衝撃】RTX 5090でVRAMに1枚も載せない方が2.2倍速かった…新手法の正体
【衝撃】RTX 5090でVRAMに1枚も載せない方が2.2倍速かった…新手法の正体
グラボのVRAMにモデルを載せた分だけAIが速くなるという常識が、先週ひっくり返った。ローカルAIの定番ソフトllama.cppのv0.7.0が公開され、エキスパートの重みをVRAMに1枚も固定で載せない設定が、従来より最大2.2倍速くなったという測定結果が注目を集めている。RTX 5090で毎秒30.8トークンが67.8トークンになった数字がその根拠だ。ただし全員が速くなる話ではなく、同じ設定でほぼ半分に落ちた報告が同じ場所に並んでいる。
この機能が提案されたのは10月3日、取り込まれたのが10月8日で、提案から13日で正式版に載った急ぎの実装だ。速く入った分、コミュニティの検証報告はまだばらついており、環境ごとの当たり外れがはっきりしていない。対象のモデルはMoE構造の大規模モデルで、測定に使われたのはQwen系の約94B級、全体で93.7GB。うちエキスパートの重みが65.4GBと全体の7割を占め、残る3割が文字の変換やアテンションなど毎回必ず使う部分だ。
図書館に例えると分かりやすい。メインメモリが本棚で、エキスパートという本が65.4GB分並んでいる。VRAMは狭い机で、手元に置ける本の量が決まっている。机に乗らない本は、使うたびにPCI Expressという遅い通路を往復して取りに行く。従来のオフロードは、本棚ごと机に移す方式だった。乗った棚は机から読め、乗らなかった棚は通路を走り続ける。
新方式は机の使い方を変えた。本棚ごと載せるのをやめ、机には何も据え置かない。代わりに呼ばれた本だけを机に積んでいく。机が埋まったら、最も長く触っていない本から戻すLRU方式だ。さらに大きな狙いが1つある。従来の方式は棚番号の順に固定で配置するため、机の半分を一度も読まれない本が占めることがあった。予約席だけが埋まり、自由席がない状態だ。キャッシュ方式は読まれた本しか机に乗らないため、同じ広さで当たる本の密度が上がる。

机の1割で8割当たる偏りの世界
実測表を順に見ると、RTX 4090では従来の24.5GB級の搭載で毎秒25.0トークン。搭載量を減らして10.4GBにすると39.4トークン、倍率1.57倍で命中率72%。エキスパートを0枚にして10.7GBを全部キャッシュにすると40.7トークン、1.62倍で命中率77%だ。RTX 5090では従来の24.5GB搭載で30.8トークン、18.6GB全部キャッシュで67.8トークン、2.20倍、命中率89%と、6つの設定がすべて命中率に揃って並ぶ。
「エキスパート全体の1割が目安」という作者の説明は、偏りの理屈に基づく。MoEモデルの振り分け役が特定のエキスパートを繰り返し呼び出すため、人気の本を数人分だけ机に置けば、1割の机で8割以上が机の上で済む。貸出ランキングの上位だけ手元に置く図書館と同じで、LRUがそのランキングを自動で作る。ただし偏りを直接測った数字は資料になく、命中率からの逆算なので、モデルごとの差はまだ分かっていない。
外れた本の運搬コストが重い点も重要だ。作者の測定では1トークンあたり約1.5GBが転送され、1万3600トークンの生成で合計20TBに達した。PCIeの受取速度は平均24.7GB/s、最大35と、通路の限界まで使う状態だ。通路を太くできない以上、速くする方法は外す回数を減らすことしかない。長く書かせるほど命中率が温まり、256トークンの時点で毎秒18.80だった速度が、2048トークンでは20.66まで上がる。短い返事の繰り返しでは損をしやすい性格だ。
遅くなった人の正体、別れ目は命中率1つ
問題は提案ページのコメント欄だ。同じ設定で遅くなった報告が並んでいる。まず全部のエキスパートがVRAMに乗るユーザー。43.3トークンからキャッシュ方式へ切り替えたら23.2トークンに落ちた。0.54倍、命中率は94.4%もある。落とし穴は、作者の表の1.00倍が「全部乗せた状態」ではなく「乗る分だけ乗せて残りを置いた状態」を基準にしている点だ。全部机に乗る人は最初から全部乗せるのが一番速い。倍率だけ見ると必ず間違える。
モデルを変えたら逆転する例もある。別のモデルではキャッシュなしで17.8トークン前後だった速度が、1024MiBのキャッシュを積むと13から14トークンに落ちた。人気の本が偏っていないモデルだと、1割の机では当たらず、外れる代償を払う。キャッシュが小さすぎた例も崖的な悪化を示す。キャッシュなしで毎秒20.9から25.1だった機械に1024MiB足すと7.30トークン、2048MiBでも6.77トークン。本の出し入れだけで時間が終わる。グラボ2枚の報告も良くない。複数GPU共有に対応したはずの設定で、17トークン台から11から13トークンに落ちた。一方で作者側はRTX 4090の2枚構成で1.85倍の向上を報告しており、環境の違いがそのまま結果の散らばりになっている。
作者の測定環境はサーバー向け16コアCPU、PCIe 4.0、GPUに近い側のメモリを使用する指定で、出力512トークン固定、温度0の整った条件だ。一般の家庭PCと同じ条件にはできない。さらに、効くのは生成側だけだ。読み込み側が落ちる報告もあり、長い資料を常に読ませる使い方では待ち時間全体で損をすることもある。
試す前の3つの条件と4つの制約
試すかどうかの判定は3条件に整理できる。1つ目、モデルが全部VRAMに乗るなら今のままで触らない。切り替えると0.54倍の仲間入りになる。2つ目、全部乗らなくて今オフロードで動かしている人だけが試す価値がある。ここが作者の表と同じ土俵で、1.57倍から2.20倍が出た場所だ。3つ目、キャッシュは半端な大きさにしない。目安はエキスパートの1割で、モデル全体の約7%。1GB程度で試すと7.30トークンの崖に落ちる。設定は起動時の指定を2つ足すだけ。エキスパートをCPU側に置く指定と、キャッシュの大きさをメビバイトで渡す指定だ。消せば元に戻るので壊れる心配はない。
制約は4つある。バッチは32トークン以下だけ有効で、超えると従来のオフロードに戻る。出力がキャッシュなしの実行と一致しないという報告があり、同じ質問に毎回同じ答えが要る用途には向かない。OpenCLとVulkanの組み合わせは対象外、テンソル並列も対象外で、複数GPU共有は10月半ばの変更で対応が入れ替わっている。そして測ったのはモデル1本だけ。1つの結果を全部に広げてはいけない。
ネットの反応
環境とモデルの実測データがたくさん集まって新しいモデルに搭載されるようになれば勝手に最適化してくれるようになりそうだなぁ
今はチューニングされたStrataが圧倒的に早いね。
Qwen3.8-Flash-NextってことはStrataをllama.cppにマージしたんですね
全部VRAMに乗る人が切り替えて半分になったという、これが一番学びになった。倍率だけ見て飛びつくと死ぬ話だわ
読んだ本だけ積むってなし探しの話かと思ったらLRUキャッシュの話だった。本の棚卸しがAIの速度に効くとは思わなかった
1トークン1.5GBで13600トークン生成で20TB転送って、PCIeが泣いてる絵だな
グラボ2枚だと遅くなった人がいるって報告は注意だな。うちも2枚だから試すのやめるわ
命中率が書いてない記事は信じるな。この一言で今日の数字が全部つながった気がする
AIの所感
机の広さで勝負する時代から、当たる率で勝負する時代へ変わったことが一番の印象だ。VRAMを増やすのがお金で解決する道なら、命中率を上げるのは設定で解決する道で、両者は争っているようで見ている場所が違うだけという整理が正直に参考になる。全部乗る人は何もしない。乗らない人は7%のキャッシュから試す。この二本立ての導線に営業色が薄い点も、実測ベースの有益な数字として積み上がっている。最終的な評価は、全員の実測が集まった段階で初めて落ちることになるはずだ。