推論LLMは枝刈りで遅くなる?Reasoning-Aware Compression論文解説

推論LLMの思考過程を参照しながらニューラルネットワークを枝刈りするRACのイメージ

推論LLMの思考過程を参照しながらニューラルネットワークを枝刈りするRACのイメージ

LLM(大規模言語モデル)の重みを半分に枝刈りすれば、推論も単純に半分近く軽くなる。そう考えたくなりますが、推論過程を長く生成するreasoning model(推論モデル)では成立しない場合があります。枝刈りでモデルの判断が不安定になると、答えにたどり着くまでの思考トークンが増え、圧縮前より実行時間が長くなるためです。

ICLR 2026採択論文のReasoning Models Can be Accurately Pruned Via Chain-of-Thought Reconstructionは、この問題に対してReasoning-Aware Compression(RAC)を提案しました。RACの要点は、枝刈りアルゴリズムを一から作り直すことではありません。入力プロンプトだけでなく、対象モデルが実際に生成したChain-of-Thought(CoT、答えに至るまでの推論列)の活性値も使って、削除する重みを決めます。

論文では50%のsparsity(重みのうちゼロにする割合)でも高い精度を残した例が報告されています。ただし、50% sparsityは「モデルサイズ半減」や「処理時間半減」と同義ではありません。RACを理解するには、精度、生成トークン数、疎な計算に対応するハードウェアの3点を分けて読む必要があります。

今回扱う論文

項目 内容
論文 Reasoning Models Can be Accurately Pruned Via Chain-of-Thought Reconstruction
著者 Ryan Lucas、Kayhan Behdin、Zhipeng Wang、Shao Tang、Qingquan Song、Rahul Mazumder
採択 ICLR 2026
原論文 ICLR Proceedings PDF
プレプリント arXiv:2509.12464
公式実装 RyanLucas3/Reasoning-Aware-Compression

公式実装のリポジトリには、確認時点で明示的なLICENSEが見当たりませんでした。本記事ではコードを転載せず、論文で確認できる仕組みと結果だけを独自に整理します。

RACはAI軽量化のどこに位置するか

AIモデルの軽量化には複数の方法があります。RACが扱うのは、そのうちpruning(枝刈り)です。

方法 主に変えるもの 狙い 主な注意点
量子化 重みや活性値の数値精度 メモリ使用量と計算量を減らす 低bit化による誤差、対応演算の有無
枝刈り 不要と判断した重みをゼロにする 疎なモデルにして保存量や演算量を減らす 疎な演算に対応するkernelが必要
知識蒸留 大きい教師モデルの知識を小さい生徒モデルへ移す より小さな別モデルを学習する 学習データと再学習コストが必要

RACは蒸留のように小さなモデルを再学習する方法ではなく、既存モデルをone-shotで枝刈りする枠組みです。基盤となるSparseGPTなどの枝刈り手法を利用しつつ、どの活性値を見て圧縮誤差を抑えるかを変えています。

量子化のcalibration(代表データを流して量子化誤差を調整する工程)との違いも押さえておきたいところです。どちらも代表データの選び方が結果に影響しますが、RACは重みを疎化するときの層出力再構成を対象にしています。量子化側の例は、過去記事のSARQCによるLLM量子化calibrationで扱っています。

通常の枝刈りが推論モデルで失敗する理由

Decoder-only Transformerの推論は、入力をまとめて処理するprefillと、出力を1トークンずつ生成するdecodeに分かれます。一般的な質問応答では入力側の比重も大きい一方、数学やコード問題を解くreasoning modelは、decode中に長い推論列を生成します。

従来のone-shot pruningでは、Webテキストや問題文などの入力をモデルへ渡し、そのとき得た活性値を使って削除後の重みを調整します。ここで観測しているのは、主にprefill時の分布です。しかし実際の推論では、モデル自身が直前までに生成したCoTを入力としてdecodeを繰り返します。prompt時にうまく出力を再現できても、decode時に同じ精度で再現できるとは限りません。

論文の分析では、このactivation distribution shift(活性値の分布ずれ)がreasoning modelの枝刈りを難しくしていました。誤差は次のトークン選択へ伝わり、その出力が次の入力になります。小さなずれが反復されると、モデルが解法を見失ったり、同じ検討を長く続けたりします。

その結果、「1トークン当たりの計算は減ったのに、生成トークンが増えて全体では遅い」という現象が起こります。これは枝刈り率だけでは推論コストを判断できない理由です。

RACは「思考中」の活性値も使って枝刈りする

通常の層単位の枝刈りは、元の重みを \(W\)、枝刈り後の重みを \(W_c\)、calibrationで得た活性値を \(X\) とすると、概念的には次の出力差を小さくする問題です。

\[
\min_{W_c} \left\lVert (W-W_c)X \right\rVert_F^2
\]

同時に、\(W_c\)には指定した割合の重みをゼロにする制約を課します。ここで\(X\)が問題文だけなら、最適化されるのも問題文を処理したときの再現性に偏ります。

RACは\(X\)を次の2種類から作ります。

  • \(X_{prompt}\):問題文をprefillしたときの活性値
  • \(X_{decode}\):対象モデル自身がCoTを生成しているときの活性値

この2つを結合した\(X_{RAC}=[X_{prompt}, X_{decode}]\)を使い、同じ層単位の再構成を行います。処理の流れは次の通りです。

従来のprompt-only calibrationと、promptおよびCoTのdecode活性値を使うRACの処理フロー比較

  1. 圧縮対象のモデル自身に数学・コード問題を解かせる。
  2. promptと、生成したCoTの両方から活性値を収集する。
  3. 収集量を所定のtoken budgetにそろえる。
  4. SparseGPTなどへ活性値を渡し、各層を枝刈りする。
  5. 圧縮後モデルを、精度だけでなく出力長と実行時間でも評価する。

「対象モデル自身」の出力を使う点も意味があります。論文のablation(構成要素を変えて影響を見る実験)では、別モデルのCoTを使うoff-policyより、自分のCoTを使うon-policyの方が良い結果でした。DeepSeek-R1-Distill-Qwen-7Bを50%枝刈りしたMATH500の例では、正答率がoff-policyの0.876に対してon-policyは0.900です。著者らは、この差をモデル固有のactivation patternを使う効果として分析しています。出典は原論文のAblation Studyです。

実験結果は精度と生成時間を分けて読む

論文では、DeepSeek-R1のdistilled Qwen系列、Qwen3系列などを、数学のMATH500やAIME-25、コード生成のLiveCodeBenchで評価しています。主なunstructured pruning実験は20〜50% sparsity、100万calibration token、最大32K出力tokenという条件です。MATH500は1回生成した答えの正否、コード評価は複数回生成したpass@1を使うため、表同士の数値を直接混ぜて比較はできません。

代表例として、MATH500を50% sparsityで評価した結果を抜き出します。

モデル 条件 正答率 実行時間
DeepSeek-R1-Distill-Qwen-7B dense 0.936 23.3分
同上 C4でcalibration 0.744 135.0分
同上 問題文だけでcalibration 0.812 115.6分
同上 RAC 0.900 35.3分
Qwen3-8B dense 0.962 41.3分
同上 RAC 0.862 17.1分
Qwen3-14B dense 0.972 論文表の精度比較を参照
同上 RAC 0.962 論文表の精度比較を参照

出典:Reasoning Models Can be Accurately Pruned Via Chain-of-Thought Reconstruction

7Bの例では、通常のcalibrationが生成時間を5倍前後まで延ばしたのに対し、RACは精度と時間の悪化を大きく抑えています。一方、Qwen3-8BのRACがdenseより短時間になった結果を、そのまま「RACなら常に高速化できる」と読むのは危険です。モデル、問題、最大生成長、生成した解答の長さ、疎な演算の実装が変われば、実行時間も変わります。

論文の「50% sparsityまででdense精度の最大95%を維持」「既存の枝刈り設定より最大17ポイント改善」という要約も、最大値を含む表現です。全モデル、全benchmarkで95%を維持したわけではありません。たとえばDeepSeek-R1-Llama-70BのMATH500・50% sparsityでは、dense 0.954に対してRACは0.904でした。

AIME-25にも改善例はありますが、問題数が少なく標準誤差が大きいと論文自身が注意しています。少数問題の数ポイント差より、複数モデル・複数sparsityで傾向が続くかを重視した方が妥当です。

50%枝刈りしても50%速くなるとは限らない

重みの50%をゼロにしても、通常の密行列演算がゼロを含めて計算すれば速度は上がりません。unstructured sparsity(ゼロの位置を自由に選ぶ疎化)は精度を残しやすい一方、不規則なメモリアクセスを効率よく処理するkernelが必要です。

これに対して2:4 structured sparsityは、連続する4重みのうち2つをゼロにするような規則を持たせます。自由度は下がりますが、対応ハードウェアでは計算を省きやすくなります。論文の一部設定では、2:4 sparsityとFP8を組み合わせ、精度0.940、throughput 1,675 token/sを記録しました。比較対象は1,426 token/sです。この結果は原論文のStructured Sparsity and Quantization実験によるもので、特定の層、モデル、GPU、実装条件で得られています。50%枝刈りによる一律の高速化率ではありません。

推論時間は、大まかに次の要素で決まります。

\[
\text{total latency} \approx \text{time per token} \times \text{generated tokens} + \text{overhead}
\]

枝刈りで1トークンの処理が軽くなっても、モデルが2倍以上長く考えれば総時間は悪化し得ます。逆に、RACが解答経路を保ち、不要な長いCoTを減らせれば、疎なkernelの効果とは別に総時間が短くなる場合があります。RACが直接最適化しているのはruntimeではなく層出力の再構成誤差なので、この2つを混同しないことが大切です。

decode長と実測レイテンシが単純比例しない別の例は、Apple MPSのKV Cacheと非単調レイテンシでも扱っています。

導入前に確認したい5つの指標

ここからは論文の結果を基にした、筆者の実務上の整理です。RACを自分のモデルへ適用するなら、枝刈り率だけでなく次の5項目を同じ評価セットで測る必要があります。

指標 確認する理由
タスク精度 benchmark平均だけでなく、失敗が許されない問題群の劣化を確認する
平均・上位出力token数 一部の問題だけCoTが極端に長くなっていないかを見る
end-to-end latency tokenizeや転送を含む利用者視点の待ち時間を測る
throughput 同時実行時に1秒当たり何token処理できるかを見る
メモリとsparse kernel対応 重みがゼロでも、保存形式とhardwareが対応しなければ効果が限定される

calibrationには、本番で扱う問題に近いpromptだけでなく、対象モデル自身が生成した推論列が必要です。数学で作ったCoTだけを使い、別分野の対話性能まで維持できるとは限りません。本番のタスク分布ごとに評価セットを分けるべきです。

RACの限界と向いている用途

RACが向いているのは、既存のreasoning modelを再学習せずに枝刈りしたい場合です。すでにSparseGPT、WANDA、ALPSのようなone-shot pruningを検討しており、prompt-only calibrationで精度低下や出力長の増加が起きているなら、decode activationを加える理由があります。

一方、次の条件では追加検証が欠かせません。

  • 数学・コード以外のタスクへ使う
  • 日本語を含む多言語で長い推論を行う
  • unstructured sparsity非対応の実行基盤で速度向上を狙う
  • CoTを収集・保存できない運用環境で使う
  • 最大出力長を短く制限している

論文ではCoTの最大長を変えると、denseとRACの精度・実行時間の関係も変わりました。RACは万能な圧縮設定ではなく、「実際のdecode分布を枝刈り時に見せる」という設計原則です。CoT収集はprompt-onlyより高コストですが、再学習や蒸留を行うよりは小さい、という位置づけになります。

まとめ

Reasoning-Aware Compressionは、推論モデルの枝刈りで見落とされていたdecode時の活性値をcalibrationへ取り込みます。通常の枝刈りで精度が落ち、思考トークンが増える問題に対して、対象モデル自身のCoTを使って層出力を再構成するのが中心的な発想です。

ただし、RACが保つのは主に枝刈り後の推論挙動であり、実機速度を直接保証するわけではありません。導入判断では、sparsityだけでなく精度、生成token数、レイテンシ、throughput、疎な演算へのhardware対応をセットで確認する必要があります。

参考資料

コメント

タイトルとURLをコピーしました