News
量子コンピュータ関連銘柄 更新: 10/20 23:30(日本時間)
%は前日比・グラフは直近10営業日の推移 — 株価とニュースの突き合わせ / 業界の関係図
特集 AI

ベンチマークは何を測っているのか――ローカルLLM「Strata」の速度・量子化・SWE-benchの数字を読む

要約

125BパラメータのMoEモデルを家庭用GPUで動かす推論エンジン「Strata」の資料には、毎秒トークン数、量子化の名前、SWE-bench Verifiedの「91%」など多くの数字が並びます。それぞれが何をどの条件で測った数字なのかを、一次資料に沿って整理します。条件の違う数字を並べて比べないための読み方と、自分で測るときの要点もまとめます。

数字が多いエンジン

Strataは、Qwen3.8-Flash-Next(総パラメータ125B、1トークンあたりに使うのは6B)を、VRAM 12GB以上のGPUとRAMを組み合わせて動かすオープンソースの推論エンジンです。READMEと技術資料には「毎秒94トークン」「毎秒2,650トークン」「SWE-bench Verifiedで91%」といった数字が並びます。どれも誤りではありませんが、測っている対象と条件がそれぞれ違います。ここでは数字の種類ごとに、何を測っているのかを整理します。

生成速度と読み込み速度は別の量

READMEの表には2種類の速度があります。「Writes answers」は返答を1トークンずつ生成する速さで、一般にデコード速度と呼びます。「Reads your prompt」は送った文章を取り込む速さで、プリフィル速度と呼びます。RTX 5070(12GB)・Ryzen 5 7600・RAM 64GBのPCでQ2_0を使った場合、前者は毎秒94トークン、後者は32Kトークンの入力で毎秒2,650トークンと、およそ28倍の差があります。

差が生まれる理由は計算の形にあります。デコードでは1トークンを出すたびに、そのトークンが使う重みをすべてメモリから読み出します。読み出した重みで行う計算は1トークン分しかないため、速さはおもにメモリの帯域(1秒に読める量)で決まります。プリフィルでは何千トークンもまとめて処理できるので、一度読んだ重みを多くのトークンで使い回せ、計算量の側が支配的になります。

StrataではMoE(多数の専門家ネットワーク=エキスパートのうち一部だけを使う構造)の性質から、この構図がさらに変わります。1トークンが使うエキスパートは各層512個のうち10個です。GPUにキャッシュされているエキスパートならVRAMから高速に読めますが、ないものはCPUがRAM上で計算するか、PCIe経由でGPUへ送ります。つまりデコード速度は、GPUの性能よりも「必要なエキスパートがGPUにある割合(ヒット率)」と、RAMやPCIeの帯域に左右されます。資料は、単体GPUでのヒット率を75〜90%、Coder版を12GBのGPUで使った場合を72%と記しています。VRAMが1GB増えるごとに約700個多くエキスパートを置けるとし、GPUの速さよりVRAMの量が効くと説明しています。

帯域だけで速度が決まるわけでもありません。QUANTS.mdは、Radeon AI PRO R9700とEPYC 7452の機材でUD-Q4_K_XLを動かした内訳として、1回の検証(後述の投機的デコードの1サイクル)に読む量から計算した下限が約12.5ミリ秒、実測が34.3ミリ秒で、帯域上の限界の35〜40%で動いていると分析しています。残りは小さな計算の起動待ちや予想用の層の処理に使われています。

プリフィルの側では、Strataは最大8,192トークンずつ処理し、次の層のエキスパートをPCIeでGPUへ送りながら計算します。このため短い入力では送るコストを薄めきれず、DETAILS.mdの表(エンジン0.1.26)ではQ2_0の読み込みが1Kトークンで毎秒536、4Kで1,299、32Kで2,171トークンと、入力が長いほど速くなります。READMEの「2,650」は32Kトークンの入力で測った値で、数千トークンの入力ならこれより遅くなります。

コンテキストが長いと生成が遅くなる理由

MODELS.mdは、同じRTX 5070のPCでの生成速度を「短い会話」と「128Kトークンのコンテキスト」で分けて載せています。Q2_0は94から76、IQ3_Sは53から46に下がります。

長い会話では、過去のトークンの計算結果を保存するKVキャッシュが大きくなり、1トークンごとにそれを読む量が増えます。Qwen3.8-Flash-Nextは48層のうち4層に1層だけがKVキャッシュを使うアテンション(Qwen Sparse Attention)で、残りは1トークンあたりの計算量が文脈の長さによらないGated DeltaNetという線形アテンションです。そのため影響は限られますが、Strataではもう一つ、KVキャッシュがVRAMを占めるぶんエキスパートを置ける数が減るという効果があります。資料によれば、64K以上ではKVキャッシュの大部分をRAMに置く設定により、262KのコンテキストでGPUに置けるエキスパートが1,589個から3,872個に増え、Q2_0の生成が毎秒50.9から62.6トークンに上がりました。速度の数字を見るときは、何トークンの文脈で測ったかを必ず確かめる必要があります。

投機的デコードの「1.6〜1.8倍」は何で決まるか

投機的デコードは、軽い仕組みが次の数トークンを予想し、本体のモデルがそれを1回の計算でまとめて検証する方式です。予想が当たったぶんだけ1回の計算で複数トークンが確定し、外れたところからは本体が自分で決めるので、出力の内容は変わりません。Strataではモデル自身のMTP層が最大3トークンを予想し、1回の検証で平均2.4〜3.2トークンが確定します。READMEはこれで「同じ答えが1.6〜1.8倍早く出る」としています。

この倍率は予想の当たる割合(受理率)で変わります。DETAILS.mdは、同じプロンプトでも答えの文面が違えば速度が数%動くと書いています。日本語では特に差が出ます。予想用の層が提案できる語彙は一部に限られており、0.1.27で中国語・日本語・韓国語のトークン10万6,299個を加えたところ、これらの言語の返答が15〜38%速くなったと記録されています。英語やコードで測った速度を、日本語の用途にそのまま当てはめることはできません。

量子化の名前とビット数

Q2_0、IQ2_XS、IQ3_XXS、IQ3_Sは、llama.cppのGGUF形式で使われる量子化(重みを少ないビット数で表す手法)の型の名前です。ただしStrataが使うISTA-DASLabのファイルは、テンソル(重みの行列)ごとに違う型を割り当てた混合構成で、名前は「どの系統か」を示すにすぎません。ISTA-DASLabのモデルカードに書かれた、Transformer部分の重み1個あたりの平均ビット数はQ2_0が2.40、IQ2_XSが2.50、IQ3_XXSが3.00、IQ3_Sが3.50です。

「IQ」で始まる型は、大きな参照表を引いて重みを復元する形式です。同じビット数でより多くの情報を詰められる一方、復元に時間がかかります。ISTA-DASLabは、llama.cppで55個のプロンプトを使った測定で、Q2_0がIQ2_XSに対して読み込みで3.4倍(毎秒367.49対108.19トークン)、生成で毎秒93.79対70.30トークンだったとしています。ビット数がほぼ同じでも、形式によって速さは変わります。なお、この測定の機材はモデルカードに書かれていません。

Coder版の「IQ1_M」は特に注意が必要です。1.89ビットという値は、各層512個のエキスパートを256個に減らしたうえで、取り除いた分も含む元のパラメータ数で割った実効値です。残った重みは3.5ビットで保存されています。

「品質の低下」はどう測るか

量子化による劣化の測り方には、主に3通りあります。一つはパープレキシティで、決まった文章を読ませたときにモデルが次のトークンをどれだけ迷うかを表し、小さいほど文章をよく予測できています。二つ目はKLダイバージェンスで、基準のモデルと量子化したモデルが出す次トークンの確率分布のずれを測ります。三つ目は、数学やコードなどの課題ベンチマークの点数を比べる方法です。

Strataの資料(QUANTS.md)は、8ビット版のQ8_0を基準に、コード・英文・日独仏中の文章などを合わせた4,995か所で比べています。最も確率の高い次トークンがQ8_0と一致した割合は、IQ3_Sが87.69%、IQ3_XXSが84.46%、Q2_0が80.60%です。平均KLはそれぞれ0.144、0.202、0.315、パープレキシティはQ8_0の4.052に対して4.097、4.119、4.475でした。基準は元の16ビットモデルではなくQ8_0で、推奨のIQ2_XSはこの表に入っていません。同じ表でUnslothのUD-IQ4_XSは、一致率88.91%とIQ3_Sより高い一方、パープレキシティは4.120とIQ3_Sより悪く、指標によって順位が入れ替わることもわかります。

課題ベンチマークで元のモデル(BF16)と比べた結果は、ISTA-DASLabのモデルカードにあります。Q2_0はAIME25(米国の数学招待試験AIMEの2025年の問題)で96.67(BF16は100.00)、GPQA-Diamondで89.39(同91.92)、LiveCodeBench v6で81.14(同87.43)でした。IQ3_Sは3つの平均で93.26と、BF16の93.12を上回っていますが、カードは標準誤差の範囲内で「同等と読むべき」と注記しています。

もう一つ見落としやすい点があります。ISTA-DASLabが測ったのはファイル自体の性能で、Strataの実行時の設定は含みません。Strataは0.1.42から、NVIDIAのGPUで、GPUにない順位の低いエキスパートを省く設定を既定にしています。資料はその影響を平均KL 0.003〜0.006程度、最も確率の高い次トークンの一致率97.5〜98.2%と示しています。

SWE-bench Verifiedの「91%」

READMEはCoder版について「元のモデルのSWE-bench Verifiedの点数の91%に届く(作成者の測定)」と書いています。

SWE-benchは、2023年の論文で提案された評価で、12のPythonリポジトリの実際のGitHub issueと対応するプルリクエストから集めた2,294問で構成されます。モデルはコードベースとissueの説明を受け取り、問題を直す変更(パッチ)を作ります。判定は単体テストで行い、修正に対応するテスト(FAIL_TO_PASS)が通り、もともと通っていたテスト(PASS_TO_PASS)も通り続ければ「解決」です。点数は解決できた問題の割合(% Resolved)です。SWE-bench Verifiedは、このうち人が確認して解ける問題だと判断した500問の部分集合で、2024年8月に公開されました。点数はモデルだけでなく、モデルにファイル操作やコマンド実行をさせる外側の仕組み(ハーネス)や思考の量にも左右されます。

ISTA-DASLabのモデルカードの数字は、BF16の元モデルが82.80、Coder版が75.60で、比率が91.3%です。つまり「91%」は正答率ではなく、元のモデルに対する相対値です。Coder版の絶対的な点数は75.60で、500問に換算すると元モデルが約414問、Coder版が約378問を解いた計算になります。測定は思考量を最大(xhigh)にした条件で行われていますが、使ったハーネスはカードに書かれていません。同じカードのLiveCodeBench v6では98.7%(87.43対86.28)を保っており、カードは複数手順にわたる作業ほど容量削減の影響を受けやすいと説明しています。

Qwenのモデルカード自体にはSWE-bench Verifiedの値は載っていません。82.80はISTA-DASLabが測った元モデルの値です。

モデルカードに並ぶベンチマーク

Qwen3.8-Flash-Nextのモデルカードは、言語分野で次の値を載せています。

ベンチマーク何を測るか値
SWE-bench Pro41リポジトリ・1,865問の長期的なソフトウェア修正。Claude Codeのハーネスで評価62.5
SWE-bench Multilingual9言語・42リポジトリの300問のissue解決。mini-SWE-agentで評価81.0
DeepSWE 1.1エージェント型のコーディング。2つのハーネスの高い方58.7
LiveCodeBench v6LeetCode・AtCoder・Codeforcesの競技問題1,055問。生成コードをテストで判定91.9
GPQA Diamond生物・物理・化学の大学院レベルの多肢選択問題91.7
HLE数十分野・2,500問の専門的な問題。GPT-4oで採点35.9
IFBench58種類の検証可能な出力制約に従えるか81.3

このほか、Qwenの社内ベンチマークであるCoWorkBench(73.9)や、JobBench(55.7)、Toolathlon Verified(73.5)、画像・動画を含む課題(AndroidWorld 84.5、OSWorld 2.0など)が並びます。これらはすべてBF16の元モデルで、Qwen側の設定で測った値です。同じGPQA-DiamondでもQwenのカードは91.7、ISTA-DASLabのBF16測定は91.92、LiveCodeBench v6は91.9と87.43で、評価する側の条件で数字が変わります。出どころの違う点数を並べて差を論じることはできません。

公平に読むための確認点

まず、速度の表は機材の組み合わせごとの値です。READMEのNVIDIAの表はRTX 5070・Ryzen 5 7600・DDR5 64GB、AMDの表はRX 9070 XT・Ryzen 9 3900X・47GBで、CPUもRAMも違います。Strataの速度はCPUの計算とRAMの帯域にも強く依存するため、2つの表の差をGPUの性能差として読むことはできません。RTX 3090やRTX 5060 Tiの数字は、測定ではなく±20%の推定です。

次に、条件をそろえて確かめるべき項目は、入力の長さ(1K、32K、128K)、生成するトークン数、言語(英語・コード・日本語)、思考の量、同時に処理する要求の数(既定は1件)、エンジンの版です。READMEの表はエンジン0.1.26と0.1.36で、その後の既定設定の変更は反映されていません。

最後に、自分の用途で測るのが最も確実です。StrataにはBENCH.bat(Linuxはbench.sh)があり、5〜10分で会話、4K・16Kの入力、エージェント風のやり取りの速度を測ってレポートにします。日本語で使うなら日本語のプロンプトで、品質が気になるなら同じ質問を量子化の異なるサイズで比べると、手元の条件での差が見えます。

主な数字と条件の一覧

数字内容条件・出典
毎秒94トークンQ2_0の生成(短い会話)RTX 5070・Ryzen 5 7600・64GB、エンジン0.1.36(README)
毎秒2,650トークンQ2_0の読み込み同上、32Kトークンの入力(README)
毎秒79/62/53トークンIQ2_XS/IQ3_XXS/IQ3_Sの生成同じPC、エンジン0.1.26(README)
毎秒76トークンQ2_0の生成、128Kコンテキスト同じPC(MODELS.md)
毎秒60トークンQ2_0の生成RX 9070 XT・Ryzen 9 3900X・47GB、Linux(README)
1.6〜1.8倍投機的デコードによる短縮MTPで最大3トークン予想、1回平均2.4〜3.2トークン(README・HOW_IT_WORKS.md)
2.40/2.50/3.00/3.50ビットQ2_0/IQ2_XS/IQ3_XXS/IQ3_Sの平均ビット数Transformerの重み(ISTA-DASLab)
80.60%/87.69%Q8_0と次トークンが一致した割合(Q2_0/IQ3_S)4,995か所、R9700の機材(QUANTS.md)
89.39(BF16 91.92)Q2_0のGPQA-DiamondISTA-DASLabの評価
91.3%(75.60/82.80)CoderのSWE-bench Verified、元モデル比思考量xhigh、ISTA-DASLabの評価
毎秒7〜8.5トークンUD-Q4_K_XLの生成、SSDから読む構成RTX 5070・64GB(README)

続きはメールでも受け取れます

新着記事のまとめを、毎日・週1回・月1回から選んでお届けします。 対談と教えて先生の続きも読めるようになります。登録も閲覧も無料です。

ログインしてメール配信を設定