Model Compression Techniques(モデル圧縮)

article technology medium #model-compression#quantization#ptq#qat#gptq#awq#smoothquant#llm-int8#bitnet#fp8#mxfp4#kv-cache-quantization#pruning#sparsegpt#wanda#n-m-sparsity#knowledge-distillation#distilbert#lora#qlora#dora#low-rank#peft
Created: 2026-05-27 Updated:

量子化 (PTQ/QAT, GPTQ/AWQ/SmoothQuant/BitNet, FP8/MXFP4, KV cache), プルーニング (SparseGPT/Wanda, 2:4), 蒸留, 低ランク (LoRA/QLoRA) と組合せパイプラインを俯瞰。

Model Compression Techniques(モデル圧縮)

モデル圧縮は 推論コスト・VRAM・レイテンシ・電力 を削減する技術群。中核は 量子化 (PTQ/QAT)、プルーニング (N:M)、知識蒸留 (Hinton 2015)、低ランク分解 (LoRA/QLoRA)、組合せパイプライン。LLM では bit 幅削減 (FP16→INT4→1.58-bit) と KV cache 量子化が主戦場。推論は tech-46、運用は tech-64confidence: medium は訓練データ (~2025-08) 依存。

モデル圧縮の動機

LLM 推論は メモリ帯域幅 + VRAM に律速。FP16 で Llama-3-8B=16 GB、70B=140 GB、405B=810 GB。INT4 化で 70B が 約 35 GB に縮み A100/H100 80GB 1 枚で動作可能 (KV 別)。エッジは Apple Silicon (MLX) と CPU (llama.cpp GGUF Q4_K_M) が INT4 を実用上限。Pareto frontier: INT8 PTQ で PPL +<0.1+<0.1 / MMLU <0.5%-<0.5\%、INT4 PTQ で PPL +0.31.0+0.3{-}1.0 / MMLU 0.52%-0.5{-}2\%、sub-4-bit は急劣化で専用手法必要。INT4 は FP16 比 4-8× 省電力 [要確認]。動機は TCO・TPOT・デバイス展開・電力。

量子化の基礎分類

PTQ は 128-1024 サンプルキャリブで事後量子化、コスト低・損失中。QAT は fake-quant で量子化を模擬しつつ学習、コスト高・損失小。Weight-only vs +Activation: W8A16 (LLM.int8())、W4A16 (GPTQ/AWQ — 最普及)、W8A8 (SmoothQuant)、W4A8 (QuaRot)、W1.58A8 (BitNet)。Granularity: per-tensor / per-channel (重み標準) / per-group (gg=32/64/128, W4 標準) / per-token (活性化動的)。Symmetric vs Asymmetric (ReLU 後有利)。LLM では W4A16 + gg=128 + symmetric が de facto。

PTQ アルゴリズム

GPTQ (arXiv:2210.17323) は OBQ 派生 Hessian-aware: argminW^WXW^X2\arg\min_{\hat W}\|WX-\hat WX\|^2 を Cholesky で逆 Hessian 計算し層を逐次量子化、gg=128 W4A16 で Llama-2-70B PPL 3.84\approx 3.84 (FP16 比 +0.3+0.3 [要確認])、AutoGPTQAWQ (arXiv:2306.00978) は活性化 salience で重み 0.1% を保護スケーリング、AutoAWQ + vLLM/TensorRT-LLM 統合、GPTQ より低キャリブ + HW 効率高傾向。SmoothQuant (arXiv:2211.10438) は 活性化外れ値 を重みに移動 X=X/s,W=WsX'=X/s, W'=Ws (α=0.5\alpha=0.5) で W8A8 実現、A100 で 1.56× [要確認]。LLM.int8() (arXiv:2208.07339) は vector-wise + outlier 行/列 FP16 fallback、bitsandbytesSpQR (arXiv:2306.03078) は外れ値疎行列 FP16 + 残り W3-4。HQQ は L1 最適化でキャリブ不要 [要確認]。外れ値特徴 は特定次元に集中 (100×100\times) し、対処が PTQ の中心課題。

Sub-4-bit 量子化フロンティア

QuIP (arXiv:2307.13304) / QuIP# (arXiv:2402.04396) は Hadamard 回転で等方化 + lattice codebook の 2-bit 量子化、QuIP# は E8 lattice で SOTA [要確認]。AQLM (arXiv:2401.06118) は Additive Quantization WkCk[ik]W\approx\sum_k C_k[i_k] で 2-bit で GPTQ 3-bit 超え [要確認]。BitNet b1.58 (arXiv:2402.17764) は重み {1,0,+1}\{-1,0,+1\} (log23=1.58\log_2 3=1.58-bit) + 活性化 INT8、GEMM が 加算のみ に縮退。学習段階から 1.58-bit 前提の QAT で 70B で FP16 匹敵を主張 [要確認 — 商用規模ベンチ待ち]。BitNet a4.8 は活性化も 4-bit。Sub-4-bit は カスタムカーネル必須 (BitBLAS, T-MAC) で採用障壁。

新フォーマット (FP8 / MXFP4 / KV cache)

FP8: E4M3 (±448\pm 448, 重み/活性化) と E5M2 (±57344\pm 57344, 勾配)。H100/Hopper が Tensor Core で HW サポート、vLLM 0.4+ / TensorRT-LLM が FP8 PTQ [要確認]、FP16 比 2× スループット / 50% メモリ。MXFP (OCP Microscaling 2023) は MXFP4/6/8 がグループ (kk=32) ごとに shared exponent、Blackwell B200 ネイティブ対応 [要確認 — 出荷]、MXFP4 は FP8 比 2× 密度。KV cache 量子化 は長 context で KV が VRAM 大半を占有 (70B 32K で 170\approx 170 GB [要確認]) する問題に対処: KIVI (arXiv:2402.02750) は Key per-channel + Value per-token INT2/INT4、KVQuant (arXiv:2401.18079) は per-channel Key + outlier-aware Value で 3-bit 以下。tech-46 の FlashAttention/PagedAttention と組合せ。

プルーニング

Unstructured Magnitudew<τ|w|<\tau をゼロ化。Lottery Ticket (arXiv:1803.03635) はランダム初期化に独立学習可能な「当たりくじ」存在を主張。OBD/OBS (LeCun 1989/Hassibi 1993) は Hessian で削除損失最小化、LLM 規模困難。SparseGPT (arXiv:2301.00774) は OBS を LLM に拡張、175B を 20-30 分で 50% sparsity、PPL +<0.5+<0.5 [要確認]、量子化と同時可。Wanda (arXiv:2306.11695) は WijXj2|W_{ij}|\cdot\|X_j\|_2 スコア、128 サンプルで SparseGPT 相当 + 実装単純。構造的: head 剪定、layer dropping、LLM-Pruner (arXiv:2305.11627) は gradient-based importance + post-LoRA で LLaMA-7B 20% 削減 / 1-3% 低下 [要確認]、Sheared LLaMA (arXiv:2310.06694) は structured pruning + 継続学習で LLaMA-2-7B → 2.7B 実現 [要確認 — トークン数]。N:M sparsity: 2:4 は Ampere/Hopper Sparse Tensor Core で加速、理論 2× (memory-bound では限定的)、TensorRT-LLM/DeepSpeed 対応。Movement Pruning (arXiv:2005.07683) は fine-tune 中の重み変化方向でスコア、抽象タスクで magnitude を上回る。

知識蒸留

Hinton 2015 (arXiv:1503.02531) は soft targets (T=48T=4{-}8 軟化) + dark knowledge 転移、L=αLCE+(1α)T2KL(pTpS)\mathcal{L}=\alpha\mathcal{L}_\text{CE}+(1-\alpha)T^2\text{KL}(p_\text{T}\|p_\text{S})。BERT 系: DistilBERT (arXiv:1910.01108) は 66M40M66M\to 40M / 推論 60% 高速 / GLUE 97% 保持、TinyBERT は attention map + 隠れ状態 MSE、MiniLM (arXiv:2002.10957) は self-attention 関係を最終層から転移、BERT-base の 99% GLUE。LLM 時代: Alpaca/Vicuna は GPT-3.5/4 出力で LLaMA SFT (Vicuna-13B ChatGPT 92%\approx 92\% [要確認])、Orca (arXiv:2306.02707) は GPT-4 CoT 説明、Zephyr (arXiv:2310.16944) は dDPOMiniLLM (arXiv:2306.08543) は reverse KL で mode-averaging 回避、GKD (arXiv:2306.13649) は on-policy で分布シフト緩和。DeepSeek-R1 蒸留 (arXiv:2501.12948) は長 CoT を Qwen-7B/14B/32B, Llama-8B/70B に SFT、RL なしで推論能力の大部分転移 [要確認 — 評価詳細]。

低ランク分解と PEFT

古典は SVD (W=UΣVTW=U\Sigma V^T truncated)、Tucker/CP — Conv に有効だが Transformer は精度損失大。LoRA (arXiv:2106.09685) は W=W+BAW'=W+BA (rmin(d,k)r\ll\min(d,k)) で 基底凍結 + 低ランク更新、rr=8-64 典型、0.1-1% パラメータで full fine-tune 同等、推論時 WW merge 可でコスト増ゼロ。適用は Q/K/V/O + Gate/Up/Down。QLoRA (arXiv:2305.14314) は NF4 (正規分布最適 4-bit) + Double Quantization + Paged Optimizers65B を 48GB 単一 GPU で fine-tune、FP16 LoRA 比 0.1% 損失 (Guanaco)。派生: DoRA (arXiv:2402.09353) は magnitude+direction 分解で FP16 fine-tune 級、AdaLoRA は rank 動的調整、PiSSA (arXiv:2404.02948) は SVD 主成分初期化、LoftQ (arXiv:2310.08659) は量子化誤差を LoRA 補正、VeRA は共有ランダム行列 + スケールのみ学習。境界: LoRA は fine-tune 効率化が主、QLoRA は fine-tuned + compressed を同時達成、merge 後の通常量子化で展開。

組合せパイプラインと運用

標準スタック: 学習 (BF16) → 蒸留 (任意) → PTQ (GPTQ/AWQ W4A16) → デプロイ (vLLM/TensorRT-LLM/llama.cpp)最高圧縮TensorRT-Model-Optimizer2:4 + INT4 で理論 8× (実効果 [要確認])。QAT サブ-INT4 は BitNet 系 + BitBLAS/T-MAC カーネル。QLoRA パス: FP16 → QLoRA → merge → GPTQ/AWQ INT4 → vLLMフォーマット: GGUF K-quants (Q4_K_M: gg=32, 4/6-bit mixed — FP16 比 25% / PPL +<0.5+<0.5 [要確認])、EXL2safetensors+AutoGPTQ/AutoAWQ、bitsandbytes NF4、MLXAQLM HF 公開。ライブラリ: bitsandbytes, AutoGPTQ, AutoAWQ (vLLM), llama.cpp (CPU/GGUF), TensorRT-LLM, vLLM (Marlin INT4 — GPTQ 2× [要確認])。落とし穴: (1) tokenizer ドリフト (必テスト), (2) キャリブドメインミスマッチ (C4 → 医療 QA 劣化 → 再キャリブ), (3) post-quant LoRA fine-tune で精度回復, (4) GPTQ 再現性 (実装差で PPL 0.10.30.1{-}0.3 ブレ [要確認])。運用は tech-64、最適化は tech-46

トレードオフと未確認事項

精度劣化典型値 (FP16 比, タスク依存ブレ大):

手法MMLU 低下PPL 増加
INT8 PTQ (LLM.int8())<0.5%<0.5\%<0.1<0.1
INT4 PTQ (GPTQ W4A16)0.52%0.5{-}2\%0.31.00.3{-}1.0
INT4 PTQ (AWQ)0.31.5%0.3{-}1.5\%0.20.80.2{-}0.8
2-bit (QuIP#/AQLM)38%3{-}8\%151{-}5
50% unstructured pruning210%2{-}10\%0.530.5{-}3
20% structured + LoRA 回復13%1{-}3\%0.210.2{-}1
7B ← 70B 蒸留25%2{-}5\%

HW ギャップ: FP8 は H100/Hopper+ のみ HW (A100/4090 は SW)、MXFP4 は Blackwell B200+ [要確認]、2:4 は Ampere+、BitNet 1.58 はカスタムカーネル必須。キャリブ感度: 128-1024 サンプル依存、ドメインミスマッチが劣化主因。アンチパターン: (a) 量子化前評価省略、(b) tokenizer 特殊トークン未テスト、(c) BitNet を本番実用と誇張、(d) 2:4 を memory-bound で向上期待、(e) calibration ドメイン未調整、(f) QLoRA 後の re-quantize 省略。

未確認事項 (2026-05): (1) BitNet b1.58 商用規模ベンチ (70B+), (2) MXFP4 Blackwell B200 出荷, (3) QuIP#/AQLM 最新 SOTA, (4) vLLM 量子化マトリクス, (5) llama.cpp K-quants 命名改訂, (6) DeepSeek-R1 distill 評価, (7) Sheared LLaMA トークン数, (8) TensorRT-Model-Optimizer 2:4+INT4 統合, (9) KV cache 量子化 production 採用, (10) PiSSA/DoRA 比較研究。high 昇格時は要再検証。

See also

Local graph