LLMスパース化技術(エルエルエムスパースカギジュツ)
LLMの重みの多くをゼロにすることでメモリ削減・推論高速化を図る技術群。非構造化・半構造化・構造化の3カテゴリが存在する。
LLMスパース化技術 — 3カテゴリの体系的整理
LLMスパース化(Sparsity)技術はモデルの重み行列の多くの要素をゼロにすることで、モデルサイズの削減・メモリ帯域の節約・推論速度の向上を図る手法の総称です。量子化(Quantization)と並んでLLM推論効率化の主要な柱を成しています。
3カテゴリの整理
1. 非構造化スパース(Unstructured Sparsity)
重み行列の任意の位置の要素をゼロにします。理論的に最も柔軟でプルーニング精度が高い一方、実際の推論高速化には専用のスパース行列演算ライブラリが必要です。
代表手法:SparseGPT(ヘッシアン近似ワンショット)・Wanda(重み × 活性化スコア)・Magnitude Pruning(重み絶対値)
推論支援:cuSPARSE(CUDA)、torch.sparse、OpenSPARSE
2. 半構造化スパース(Semi-Structured Sparsity)
特定のパターン制約を持つスパースです。最も重要なのはN:Mスパース(別名:Fine-grained Structured Sparsity)で、M個の連続する要素のうちN個をゼロにするルールです。
2:4スパース(NVIDIA Ampere以降):4要素中2要素をゼロにする2:4パターンが最も普及しています。NVIDIAはAmpere(A100)以降のアーキテクチャにSparse Tensor Coreを搭載しており、2:4スパースの行列乗算を理論上2倍の速度で実行できます。
通常の4要素: [w1, w2, w3, w4]
2:4スパース: [w1, 0, w3, 0] # 4要素中2要素がゼロ
SparseGPTやWandaも2:4スパースモードをサポートしており、A100/H100での実推論高速化が可能です。
3. 構造化スパース(Structured Sparsity)
フィルター・チャネル・アテンションヘッド・Transformerブロック単位など構造的な単位を丸ごと除去します。
代表手法:フィルタープルーニング(CNNのチャネル除去)・ヘッドプルーニング(Transformerのアテンションヘッド除去)・レイヤープルーニング(Transformerブロック全体の除去)
利点:除去後のモデルが密な(Dense)行列演算のままなので、特殊ハードウェアなしで通常のGPU/CPU上で直接速度向上が得られます。
スパース率と精度のトレードオフ
一般的な経験則(Llama系7B):
- 10〜30%スパース:精度劣化ほぼなし、Magnitude/Wanda推奨
- 50%スパース:軽微(~1-2pt perplexity)、Wanda/SparseGPT推奨
- 70%以上:顕著(fine-tuning必須)、SparseGPT + fine-tuning推奨
量子化との組み合わせ(スパース量子化)
スパース化と量子化を組み合わせることでさらなる圧縮が可能です:
- SparseGPT + GPTQ:重みをプルーニングした後に量子化
- Wanda + LLM.int8():スパース化と8bit量子化の組み合わせ
ただし二段階の精度劣化が重なるため、各段階での品質確認が重要です。
推論フレームワークのサポート状況
- TensorRT-LLM:2:4スパースをネイティブサポート(A100/H100向け)
- vLLM:2:4スパースのサポートが進行中
- llama.cpp:構造化スパースの一部をサポート
- DeepSparse(Neural Magic):CPUでの非構造化スパース推論に特化
まとめ
LLMスパース化技術は非構造化・半構造化・構造化の三層で発展しています。実用化の観点ではNVIDIA 2:4スパースが最もハードウェア加速の恩恵を受けやすく、TensorRT-LLMを使ったプロダクション環境での採用が増えています。一方、研究面ではWanda・SparseGPTなどの非構造化手法が高スパース率での精度維持のフロンティアを切り拓いています。