Model Compression and Optimization(モデル圧縮と最適化)

article technology medium #model-compression#model-optimization#quantization-pipeline#w4a16#fp8-ptq#mxfp4#awq-kv-quant#speculative-decoding#pagedattention#flashattention3#n-m-sparsity#qlora-merge-ptq#bitnet-b158#quarot#spinquant#omniquant#moe-quantization#mixture-of-depths#anti-patterns#integration-overview
Created: 2026-05-29 Updated:

量子化・疎性・蒸留・低ランクと 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-train0%\approx 0\% MMLU1.5–2×+ FA-3、W4 と同一層併用不可
AWQ W4A16 g=128post-train0.51.5%-0.5{-}1.5\%2–4× decode+ KV-INT8 + 投機デコード
GPTQ W4A16 g=128post-train0.52%-0.5{-}2\%2–4×AWQ と排他、+ 2:4 sparsity
SmoothQuant W8A8post-train0.5%\sim 0.5\%1.3–1.6×Hopper では FP8 推奨
KV-cache INT4/INT8servingPPL +0.10.5+0.1{-}0.5throughput +1030%+10{-}30\%2–4× KV+ W4 重み量子化と対で使用
2:4 Structured Sparsitypost-train0.51%-0.5{-}1\%2×\leq 2\times (TRT-LLM)Ampere/Hopper SpTC + INT4 [要確認]
FA-2 / FA-3kernel0%0\%2–4× prefillSRAM 局所+ 任意量子化 (A100→FA-2, H100→FA-3)
PagedAttentionserving0%0\%throughput↑KV waste 30%-30\%+ KV quant + continuous batching
Speculative Decodingserving0%0\% (exact)2–3× decode+draft 小tokenizer/vocab 一致必須
QLoRA → merge → PTQfine-tune→post0%\sim 0\% vs FP16 LoRA4–8× train VRAMmerge 後 に PTQ。unmerge スタック禁止
BitNet b1.58 ネイティブfrom-scratch pretrain[要確認][要確認] 3–5×[要確認] 4–8×標準 PTQ パイプライン非互換、BitBLAS/T-MAC kernel
QuaRot / SpinQuantpost-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×、量子化誤差は受諾率を 510%-5{-}10\% 程度のみ落とす。(c) FP8 PTQ + FA-3 + FP8 KV + CUDA Graph は H100 上で FP16 比 throughput 4×\sim 4\times [要確認]。(d) QLoRA → merge → AWQ PTQ は学習 VRAM を 48×4{-}8\times 抑えつつ推論側で再量子化。(e) 2:4 sparsity + INT4 (TRT-LLM) は実効 45×4{-}5\times [要確認]。(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 25×2{-}5\times 悪化、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 56\sim 56 GB、TPOT 12\sim 12 ms、MMLU 0.8%-0.8\% [要確認]。AutoAWQvLLM 0.5+。

(B) Llama-3-8B → FP8 PTQ (TRT-LLM E4M3) + FA-3 + FP8 KV + CUDA Graph → H100 80GB: throughput 4×\sim 4\times FP16 [要確認]、MMLU 0%\sim 0\%。Triton IS deploy。

(C) Mistral-7B → QLoRA (NF4 + BF16 adapter) → merge → llama.cpp Q4_K_M → Apple M2 Pro: 4.5\sim 4.5 GB RAM、15\sim 15 tok/s [要確認]、domain 2%\leq 2\% degrade。unslothllama.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 で ΔPPL0.5\Delta\text{PPL}\leq 0.5 at W4)、MMLU (Δ1.5%\Delta\leq 1.5\%)、HumanEval pass@1 (Δ2%\Delta\leq 2\%)。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 前 PTQLoRA merge → PTQ / QLoRA / LoftQ
AC-2 W4 + FP16 KV 長文70B 32K で gain 相殺KV dominantW4A16 + KV-INT8 を対で適用
AC-3 キャリブ domain mismatchMMLU 25×2{-}5\times 悪化C4 defaultdomain 128–512 サンプル再キャリブ
AC-4 疎性カーネル未確認ゼロ速度改善unstructured 非対応2:4 + TRT-LLM 限定
AC-5 QLoRA+PTQ unmerge二重量子化ノイズmerge 抜けmerge → PTQ 順強制
AC-6 非 Hopper で FA-3起動失敗/fallbackWGMMA/TMA Hopper 専用A100→FA-2
AC-7 投機 tokenizer 不一致受諾率 0%, 0.81.5×0.8{-}1.5\times 遅化語彙差同族 draft 選定
AC-8 KIVI + StreamingLLMKIVI 統計無効化eviction で KV 破壊統合実装/順序強制
AC-9 MoE offload + TTFT SLO105010{-}50 ms spike [要確認]PCIe 取得throughput 専用扱い
AC-10 短文で KV quantoverhead 超過seq <512<5122\geq 2K トークンで適用

要素ベンチでは検出されず 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

Local graph