Model Compression and Optimization(モデル圧縮と最適化)
量子化・疎性・蒸留・低ランクと kernel/memory/serving 最適化の合成オーケストレーション (FP8/W4A16/MXFP4 × FA-3 × 投機デコード × KV quant)、HW 別 dtype 積、5 パイプライン、10 アンチパターンを整理。
article technology ja 量子化・疎性・蒸留・低ランクと kernel/memory/serving 最適化の合成オーケストレーション (FP8/W4A16/MXFP4 × FA-3 × 投機デコード × KV quant)、HW 別 dtype 積、5 パイプライン、10 アンチパターンを整理。Model Compression and Optimization(モデル圧縮と最適化)
モデル圧縮と最適化は 量子化 × 疎性 × 蒸留 × 低ランク × kernel/memory × serving の合成設計問題で、各ステージの選択が次ステージの実行可能集合を制約する。圧縮要素技術は tech-79、学習最適化は tech-51、kernel/memory は tech-76、推論サービングは tech-69、デプロイは tech-85。本記事は オーケストレーション層 として「どれを・どの順序で・どう組み合わせるか」を整理。confidence: medium は情報カットオフ ~2025-08 で固定。
オーケストレーション層の必要性
FlashAttention + AWQ は 直交 (相乗)、GPTQ + 投機的デコードは 乗算 (TPOT 2–4×)、FP8 活性化 + W4A16 重みは同一 GEMM 経路で衝突する。合成は単純な性能加算ではなく (1) 数値精度 dtype、(2) カーネル (FA-2/FA-3/Triton/cuBLAS)、(3) メモリ階層 (SRAM/HBM/PCIe)、(4) サービングランタイム (vLLM/TRT-LLM/llama.cpp)、(5) HW 世代 (Ampere/Hopper/Blackwell) の 5 軸積で実行可能性が決まる。要素技術が成立しても合成失敗は production で頻発し、決定フレームワーク + 順序 + アンチパターンを認識せずに圧縮を組むと 精度劣化なき性能劣化 が生じる。
ハードウェア対応 dtype 積
Ampere (A100) は INT8 Tensor Core + 2:4 SpTC が成熟、W4A16 (g=128) + KV-INT8 + FA-2 が標準。Hopper (H100/H200) は FP8 (E4M3/E5M2) + Transformer Engine + WGMMA/TMA + FA-3 (Shah 2024, arXiv:2407.08608) で FP8 PTQ がほぼ無損失、W4A8 (QuaRot/SpinQuant) が中間最適点 [要確認]。Blackwell (B100/B200) は MXFP4/NVFP4 ネイティブ + 第 2 世代 Transformer Engine [要確認]。Apple Silicon MLX と CPU llama.cpp (GGUF Q4_K_M) は INT4 が実用上限。世代跨ぎ移植 (A100 W4A16 GPTQ → H100 FP8) は 再 PTQ を要する。
決定フレームワーク
| 技術 | ステージ | Acc 損失 | Lat 改善 | Mem 改善 | 組合せ注記 |
|---|---|---|---|---|---|
| FP8 PTQ (E4M3) | post-train | MMLU | 1.5–2× | 2× | + FA-3、W4 と同一層併用不可 |
AWQ W4A16 g=128 | post-train | 2–4× decode | 4× | + KV-INT8 + 投機デコード | |
GPTQ W4A16 g=128 | post-train | 2–4× | 4× | AWQ と排他、+ 2:4 sparsity | |
| SmoothQuant W8A8 | post-train | 1.3–1.6× | 2× | Hopper では FP8 推奨 | |
| KV-cache INT4/INT8 | serving | PPL | throughput | 2–4× KV | + W4 重み量子化と対で使用 |
| 2:4 Structured Sparsity | post-train | (TRT-LLM) | — | Ampere/Hopper SpTC + INT4 [要確認] | |
| FA-2 / FA-3 | kernel | 2–4× prefill | SRAM 局所 | + 任意量子化 (A100→FA-2, H100→FA-3) | |
| PagedAttention | serving | throughput↑ | KV waste | + KV quant + continuous batching | |
| Speculative Decoding | serving | (exact) | 2–3× decode | +draft 小 | tokenizer/vocab 一致必須 |
| QLoRA → merge → PTQ | fine-tune→post | vs FP16 LoRA | — | 4–8× train VRAM | merge 後 に PTQ。unmerge スタック禁止 |
| BitNet b1.58 ネイティブ | from-scratch pretrain | [要確認] | [要確認] 3–5× | [要確認] 4–8× | 標準 PTQ パイプライン非互換、BitBLAS/T-MAC kernel |
| QuaRot / SpinQuant | post-train | [要確認] GPTQ W4 比低損失 | AWQ 同等 | W4A8 | + KV-INT4 [要確認] |
詳細式と PTQ 本体は tech-79、optimizer は tech-51、カーネルは tech-76。
パイプライン合成順序
[S0] Pretrain (tech-49/51/86): BF16/FP32 master, AdamW/MUON
[S1] Fine-tune (tech-86): LoRA/QLoRA/QAT → adapter merge → BF16 ckpt
[S2] PTQ (tech-79): H100→FP8 / A100→AWQ W4A16 / Blackwell→MXFP4 [要確認]
+2:4 sparsity (TRT-LLM 限定). Gate: ΔPPL≤0.5, ΔMMLU≤1.5%
[S3] Kernel/Memory (tech-76): FA-2(A100)/FA-3(H100)+CUDA Graph+dtype-aware GEMM
Gate: TTFT/TPOT micro-bench
[S4] Serving (tech-69/85): PagedAttn + KV quant(KIVI/FP8) + 投機デコード + continuous batching
Gate: end-to-end SLO + throughput/$
[S5] 監視 (tech-83): Rolling PPL + MMLU/HumanEval snapshot + activation histogram
順序逆転 (S2 後の S1 LoRA 重畳) は 二重量子化ノイズ を生むため不可。
正の合成 / 負の合成
正: (a) AWQ W4A16 + KV-INT8 + PagedAttention は VRAM 帯域と容量を独立削減し Llama-3-70B を A100 80GB 単機実装。(b) GPTQ W4A16 + 同族 draft 投機デコード で TPOT 2–4×、量子化誤差は受諾率を 程度のみ落とす。(c) FP8 PTQ + FA-3 + FP8 KV + CUDA Graph は H100 上で FP16 比 throughput [要確認]。(d) QLoRA → merge → AWQ PTQ は学習 VRAM を 抑えつつ推論側で再量子化。(e) 2:4 sparsity + INT4 (TRT-LLM) は実効 [要確認]。(f) MoE expert quant + GQA KV-INT8 + 投機デコード は DeepSeek-V2 系で expert offload の代替路。
負: (1) FP8 活性化 + W4A16 重みの同層併用 は GEMM 要求 dtype 衝突 (W4A8 化、QuaRot/SpinQuant 系で解決)。(2) QLoRA + PTQ の unmerge スタック で二重量子化ノイズ。(3) GPTQ default C4 キャリブで医療/日本語/コード量子化 はドメイン外 MMLU 悪化、128–512 ドメインサンプル再キャリブ必須。(4) unstructured pruning + vLLM/llama.cpp は対応カーネルなしでゼロ速度改善。(5) KIVI + StreamingLLM eviction は KV 分布破壊で KIVI キャリブ無効化。(6) MoE CPU offload + 厳格 TTFT SLO は PCIe 取得 10–50 ms スパイク [要確認] で throughput 専用扱い。
参照: QuaRot (Ashkboos 2024, arXiv:2404.00456)、SpinQuant (Liu 2024, arXiv:2405.16406)、OmniQuant (arXiv:2308.13137)、LoftQ (arXiv:2310.08659)、Mamba (arXiv:2312.00752)、Mixture-of-Depths (arXiv:2404.02258)、BitNet b1.58 (Ma 2024, arXiv:2402.17764)、KIVI (arXiv:2402.02750)。
5 つの合成パイプライン例
(A) Llama-3-70B → AWQ W4A16 + KV-INT8 + vLLM PagedAttn + Llama-3.2-1B 投機デコード → A100 80GB ×1: VRAM GB、TPOT ms、MMLU [要確認]。AutoAWQ → vLLM 0.5+。
(B) Llama-3-8B → FP8 PTQ (TRT-LLM E4M3) + FA-3 + FP8 KV + CUDA Graph → H100 80GB: throughput FP16 [要確認]、MMLU 。Triton IS deploy。
(C) Mistral-7B → QLoRA (NF4 + BF16 adapter) → merge → llama.cpp Q4_K_M → Apple M2 Pro: GB RAM、 tok/s [要確認]、domain degrade。unsloth → llama.cpp。
(D) DeepSeek-V2 MoE (236B/21B active) → INT8 per-expert AWQ + GQA KV-INT8 + TP=4 → 4×H100 80GB: 30 GB/GPU、Llama-3-70B 比でコスト効率改善 [要確認]。vLLM EP 統合 [要確認]。
(E) BitNet b1.58 (future): from-scratch pretrain 必須、標準 PTQ と非互換、BitBLAS/T-MAC kernel、70B+ 商用 [要確認 — Azure roadmap]。
能力検証プロトコル
圧縮後検証は 3 階層: Tier-1 必須 = perplexity (Wikitext-103/C4 で at W4)、MMLU ()、HumanEval pass@1 ()。Tier-2 タスク依存 = MT-Bench/GSM8K/ARC-Challenge/JMMLU。Tier-3 本番ドリフト = rolling PPL + activation histogram + LLM-as-judge faithfulness。デファクトは EleutherAI lm-evaluation-harness (Gao 2023, arXiv:2304.01373)。FP8/W4 化後の再評価省略は最頻アンチパターンで、同一 split で取り直さない限り「無損失」主張は無効。
アンチパターン 10 種
| ID | 症状 | 原因 | 対策 |
|---|---|---|---|
| AC-1 ft 前量子化 | task acc 急落 | merge 前 PTQ | LoRA merge → PTQ / QLoRA / LoftQ |
| AC-2 W4 + FP16 KV 長文 | 70B 32K で gain 相殺 | KV dominant | W4A16 + KV-INT8 を対で適用 |
| AC-3 キャリブ domain mismatch | MMLU 悪化 | C4 default | domain 128–512 サンプル再キャリブ |
| AC-4 疎性カーネル未確認 | ゼロ速度改善 | unstructured 非対応 | 2:4 + TRT-LLM 限定 |
| AC-5 QLoRA+PTQ unmerge | 二重量子化ノイズ | merge 抜け | merge → PTQ 順強制 |
| AC-6 非 Hopper で FA-3 | 起動失敗/fallback | WGMMA/TMA Hopper 専用 | A100→FA-2 |
| AC-7 投機 tokenizer 不一致 | 受諾率 0%, 遅化 | 語彙差 | 同族 draft 選定 |
| AC-8 KIVI + StreamingLLM | KIVI 統計無効化 | eviction で KV 破壊 | 統合実装/順序強制 |
| AC-9 MoE offload + TTFT SLO | ms spike [要確認] | PCIe 取得 | throughput 専用扱い |
| AC-10 短文で KV quant | overhead 超過 | seq | K トークンで適用 |
要素ベンチでは検出されず production で顕在化する型。
2026 フロンティア
以下は 2025-08 以降の動向で 2026-05 時点の外部検証未済 [要確認]: (a) Blackwell B100/B200 FP4 TFLOPS と MXFP4 仕様、(b) NVFP4 vs MXFP4 ポジショニング、(c) BitNet b1.58 の 70B+ 商用 (Azure)、(d) QuaRot vs SpinQuant 2025 勝者、(e) AWQ + KV-int4 + 投機の vLLM 0.6+ 統合、(f) Llama 4 / Gemini 2.5 / GPT-5 ネイティブ quant、(g) Mamba/Linear Attention 商用規模、(h) MoD と PTQ ツールチェーン統合、(i) vLLM MoE EP-TP 対応、(j) M3/M4 上の MLX vs llama.cpp Q4_K_M。フロンティアは「ネイティブ FP4 以降はサービングスタック側の再設計を要する」段階。
See also
- tech-46 推論高速化 — 4 ボトルネック × 6 技術系統
- tech-51 学習最適化 — AdamW/Lion/Sophia/Shampoo/MUON
- tech-69 推論サービング — vLLM/TRT-LLM/SGLang
- tech-76 カーネル・メモリ最適化 — FA-2/FA-3/CUDA Graph
- tech-79 モデル圧縮 — 量子化/プルーニング/蒸留/LoRA の要素技術
- tech-85 ML モデルデプロイ — リリース戦略とロールバック
- tech-86 ML 学習手法 — SSL/転移/メタ/MTL/continual
Backlinks
- related MLOps Lifecycle(機械学習ライフサイクル運用)