FP4量子化とactivation sparsityを両立するSharQを解説

SharQがactivationを疎なFP4本体と密なFP4残差へ分けるイメージ

SharQがactivationを疎なFP4本体と密なFP4残差へ分けるイメージ

LLMをFP4(4bit浮動小数点)で動かし、さらにstructured sparsity(決められた規則で値を疎にする方式)も使えば、計算を大きく減らせそうに見えます。しかし、activation(層の途中で生じる中間値)には入力ごとに位置が変わる大きな外れ値があり、単純なFP4量子化と疎化を重ねると誤差が増えます。

SharQは、この衝突を「重要な値だけを残して他を捨てる」のではなく、「疎なFP4本体と密なFP4残差へ振り分ける」ことで解く手法です。残差は量子化前の疎な値ではなく、量子化後の疎な近似値を基準に作ります。これが、maskによる欠落と疎経路の量子化誤差を同時に補う要点です。

本記事では、2026年6月公開のSharQ原論文を基に、4:8 in-pairs、2経路のGEMM(行列積)、実験結果、Blackwell依存の制約まで整理します。

先に結論:SharQはsparsityを「削除」ではなく「routing」に使う

SharQの計算は、概念的には次の4段階です。

  1. 現在のactivationから、大きな値を含むpairを選ぶ4:8 maskをonlineで作る
  2. 選んだ値をsparse backbone(疎な本体)としてFP4量子化する
  3. 元のactivationから、量子化済みsparse backboneを引いてdense residual(密な残差)を作る
  4. sparse FP4 GEMMとdense FP4 GEMMを実行し、出力を足す

大切なのは、4:8 maskから外れた値も密な残差経路へ送られることです。半分のactivationをゼロにして捨てる方式ではありません。一方でdense GEMMも残るため、「50% sparseだから計算時間も半分」とは言えません。速度は2本のGEMM、準備kernel、fusion、hardware対応を含むend-to-end実測で判断する必要があります。

論文情報と3行要約

3行でまとめると、次の研究です。

  • 入力ごとのactivation outlierをhardware互換の疎なFP4経路へ集める
  • 量子化済み疎経路との差を密なFP4残差として計算し、疎化と量子化の誤差を補う
  • calibrationや再学習なしで、Blackwell上のFP4・structured sparsity対応kernelへ接続する

なぜFP4量子化とactivation sparsityは単純に足せないのか

FP4のblock scaleを外れ値が支配する

NVFP4では、16個のE2M1値が1個のFP8-E4M3 scaleを共有します。16×4bitと8bit scaleで計72bit、平均4.5bit/valueです。NVIDIAのNVFP4解説が示すように、BlackwellのTensor CoreでFP4演算を使える一方、少数の大きな値がblock scaleを決めると、通常の値へ割り当てられる刻みが粗くなります。

たとえば同じblockに0.2前後の値が多く、1つだけ12があるとします。最大値12を表すscaleを選ぶため、0.2付近の差がFP4の離散値へ丸められやすくなります。activation outlierは入力やtokenで位置が変わるため、重みのような固定maskだけでは扱いにくい問題です。

直接4:8 maskをかけると中程度の値を落とす

NVFP4の4:8 in-pairsで8要素中2 pairを残す仕組み

NVFP4のBlackwell向けsparse pathは、論文の記述では4:8 in-pairsです。連続8要素を4つのpairとして扱い、そのうち2 pair、計4要素を残します。これは「連続4重みのうち2つを残す」一般的な2:4 weight sparsityと、粒度も対象も異なります。

大きな値を含むpairを選べばoutlierは残せます。しかし、選ばれなかったpairにある中程度の値をすべてゼロにすると、総和として無視できない情報が失われます。さらに、残した値にもFP4量子化誤差が乗ります。疎化誤差と量子化誤差は独立ではありません。

論文解説:量子化済みの疎な近似から残差を作る

SharQのsparse FP4経路とdense FP4残差経路の処理フロー

1. 入力ごとにsparse backboneを選ぶ

元のactivationをX、入力から作るN:M maskをM(X)とすると、疎な本体は次の形です。

X_sp = M(X) ⊙ X

は要素ごとの積です。SharQではmaskをmodelごとにoffline固定せず、現在のactivationからonline生成します。NVFP4版では4:8 in-pairsのhardware制約を満たしながら、大きな値を含むpairを選びます。

2. residualの基準を量子化後へ置く

X_spをFP4量子化し、計算上の近似値へ戻したものをX̃_spとします。SharQのresidualは次です。

R = X - X̃_sp

この式を分けると、設計意図が見えます。

R = (X - X_sp) + (X_sp - X̃_sp)
    maskで外れた値   sparse pathの量子化誤差

もしR = X - X_spとすると、maskから外れた値しか補えません。SharQは量子化後のX̃_spを引くため、sparse backbone自身の丸め誤差もdense residualへ移します。論文が「sparsificationをdroppingではなくroutingとして扱う」と説明する理由です。

3. sparseとdenseの2本のFP4 GEMMを足す

出力は次の2経路で近似します。

Y_SharQ = SparseFP4GEMM(Q(X_sp), Q_w,sp(W))
         + DenseFP4GEMM(Q(R), Q_w,dn(W))

sparse pathはoutlier中心のbackboneをhardware対応のstructured sparsityで処理します。dense pathはresidualをFP4で処理します。2経路は単一のFP4 weight payloadを共有しつつ、経路ごとのscale viewを使います。重みを2組丸ごと持つ設計ではありません。

ただし、dense residualがある以上、演算量はsparse GEMMだけでは決まりません。SharQの利点は「dense FP16を丸ごと残す」のではなく、両経路を低bit Tensor Core演算へ載せる点にあります。

4. preparationをfusionしてoverheadを抑える

入力適応maskは推論のcritical path上で毎回作ります。mask生成、sparse dataの圧縮、残差作成、per-tensor scaling、layer normalizationが別kernelなら、launchとmemory trafficが増えます。

論文はこれらをfused preparation kernelへまとめ、RMSNormやepilogueも実装条件に応じてfusionしています。このため、手法の式だけをPyTorchで再現したaccuracy simulationと、実kernelのlatencyは分けて評価すべきです。公式repositoryにも、accuracy参照用のSHARQ_SIMと、Blackwell向けkernelを使うSHARQが用意されています。

実験結果:平均は改善するが、全taskで勝つわけではない

Language modelとVLMの精度

原論文の代表値を抜粋します。Languageの「5-task Avg.」はARC-C、HellaSwag、LAMBADA、PIQA、WinoGrandeの平均です。

Model 指標 FP16 NVFP4 SharQ
Llama-3.1-8B 5-task Avg. 72.50 70.32 71.55
Llama-3.1-8B MMLU 65.24 61.93 63.76
Qwen2.5-7B 5-task Avg. 70.94 69.43 70.38
Qwen2.5-7B MMLU 74.16 72.06 72.83
Qwen3-30B-A3B 5-task Avg. 70.07 68.40 69.17
Qwen3-30B-A3B MMLU 79.64 77.72 78.79
Qwen3-VL-8B 5-task Avg. 81.37 79.97 80.57

SharQは多くの平均値でNVFP4からFP16側へ戻しています。論文abstractはlanguageとVLMでNVFP4-to-FP16 accuracy gapの43〜63%を回復したと要約します。

一方、個別taskを見れば常に改善するわけではありません。Qwen3-30B-A3BのARC-CはNVFP4の54.52に対しSharQが53.92です。「すべてのtaskでFP16へ近づく」とは読めません。また、perplexity(次token予測の不確かさ、低いほど良い)のWikiText2では、3 modelすべてでSharQがNVFP4より改善していますが、FP16には届いていません。

RTX 5090での速度

論文はRTX 5090上で、language model servingにおいてFP16比2.2〜2.4倍のlatency reduction、FP8比1.2〜1.4倍のthroughput improvementを報告しています。これはBlackwell世代のFP4 Tensor Coreとsparse instruction、fused kernelを使った結果です。

「2.4倍」は全GPU、全batch、全sequence長で保証される値ではありません。Hopper以前のGPU、異なるserving engine、fusionのないsimulationへそのまま当てはめないことが重要です。

Video generationではattention最適化との併用が効く

Wan2.2-T2V-A14Bの生成時間は次のとおりです。

Method 480P 720P
FP16 223.41秒 717.88秒
SharQ 182.21秒(1.23倍) 648.04秒(1.11倍)
SharQ + SageAttention 141.63秒(1.58倍) 457.88秒(1.57倍)

SharQ単独の改善より、SageAttention併用時の改善が大きい結果です。線形層だけを速くしてもattentionがbottleneckならend-to-end speedupが限られる、という読み方ができます。

既存の量子化・sparsityとの違い

方式 主に圧縮する対象 mask・補償 計算経路 主なtrade-off
NVFP4 baseline 重みとactivation denseのままblock scale dense FP4 GEMM outlierで量子化誤差が増える
2:4 weight pruning 重み offlineの固定maskが中心 sparse GEMM activation outlierは直接扱わない
mixed precision sensitiveなchannelなど 高精度経路へ分離 FP4 + FP8/FP16など 異precisionのstorageとkernelが増える
SharQ 入力ごとのactivation online 4:8 mask + quantized sparse基準のresidual sparse FP4 + dense FP4 2 GEMMとpreparation overhead、Blackwell依存

既存のReasoning-Aware Compression解説は、推論LLMの重みを枝刈りしたときの能力と生成時間を扱っています。SharQの中心は、毎回変化するactivationの値を2経路へ振り分けることです。

また、SARQC解説はweight-only PTQのcalibrationと再構成が中心です。SharQはweightとactivationの両方をFP4で扱うW4A4寄りの実行経路であり、解決する問題が異なります。

公式実装を試す前に確認したい条件

SharQ公式repositoryには、NVFP4SHARQSHARQ_SIMの3 modeがあります。

Mode 用途 CUDA extension 速度評価
NVFP4 dense FP4 baseline 必要 baselineとして可
SHARQ fused sparse-residual kernel 必要 Blackwell対応環境で可
SHARQ_SIM fake quantization・fake sparsityによるaccuracy参照 不要 実速度の根拠には不可

READMEはPython 3.10、CUDA 12.8を推奨し、RTX 50 series向けのdefault architectureをsm_120a、B200ではsm_100aへ変更するよう説明しています。少なくとも次を分けて確認してください。

  • GPUがBlackwell世代で、目的のFP4・sparse instructionを使えるか
  • build targetが実GPUと一致しているか
  • accuracy evaluationとbenchmarkでfusion設定が同じか
  • model familyが公式実装の対応範囲にあるか
  • baselineと同じbatch、sequence長、sampling条件で比較しているか

通常のNVFP4量子化pipelineとSharQも同一ではありません。vLLM LLM CompressorのNVFP4例はactivation global scaleのためにcalibration sampleを使いますが、SharQ論文はcalibration data不要を主張します。既存toolchainへflagを1つ加えるだけの置換とは限りません。

限界:結果を読むときの注意点

  1. arXiv v1の新しい研究です。 2026年8月30日時点で、独立した大規模追試や査読済み採択を本記事では確認していません。
  2. 実速度はhardwareとkernelに依存します。 数値は主にRTX 5090のBlackwell実装で、別GPUへ外挿できません。
  3. dense residualは消えません。 sparsity率だけからFLOPsやlatencyを計算できません。
  4. 全taskで精度が上がるわけではありません。 平均改善と個別taskの悪化を分けて見る必要があります。
  5. 公式repositoryの明示的LICENSEを確認できませんでした。 本記事ではcodeや図を転載せず、利用時は最新のLICENSEと依存libraryの条件を確認してください。
  6. 量子化後の総応答時間は生成挙動にも左右されます。 1 tokenあたりが速くても生成tokenが増える可能性は、Reasoning Token Inflation解説で別途扱っています。

まとめ

SharQの新規性は、activation outlierをsparse FP4 pathへ集めるだけではありません。量子化済みsparse backboneとの差をdense FP4 residualとして作り、maskで外れた値と量子化誤差を同じ経路で補う点にあります。

論文の結果は、複数のlanguage modelとVLMでNVFP4から失われた精度の一部を回復し、RTX 5090ではFP16やFP8に対する速度改善を示しています。ただし、dense residualとpreparation kernelがあるため、sparsity率をそのまま速度へ読み替えることはできません。

実装を評価するときは、SHARQ_SIMのaccuracyとSHARQ kernelのlatencyを分け、GPU architecture、fusion、batch、sequence長を揃えて比較するのが安全です。

参考資料

コメント

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