AI・機械学習
上級
プルーニング蒸留(プルーニングジョウリュウ)
プルーニング蒸留とは、モデルの冗長なパラメータを除去するプルーニング(枝刈り)と、教師モデルの知識を転移する蒸留を組合せたLLM圧縮技術で、単体手法より高い圧縮率と性能維持を両立する。
0 回閲覧
0 いいね
プルーニング蒸留は、LLMのモデル圧縮において「プルーニング(枝刈り)」と「知識蒸留」を組合せることで、どちらか単体では達成できない圧縮率と精度のトレードオフを実現する技術である。70Bパラメータモデルを7B相当まで圧縮しつつ、元モデルの90%以上の性能を維持できることが実証されている。
プルーニングの基本分類
LLMのプルーニングには大きく2つの方式がある:
- 非構造化プルーニング(Unstructured Pruning): 個々の重みをゼロに設定。圧縮率は高い(90%以上)が、専用ハードウェア(スパース演算対応GPU)がないと実速度向上しない。SparseGPTが代表例
- 構造化プルーニング(Structured Pruning): Attention Head、FFN層、レイヤー全体を丸ごと削除。汎用GPUでそのまま高速化できる。LLM-Pruner、ShortGPTが代表例
| プルーニング手法 | 方式 | 圧縮率 | 速度向上 | 精度低下 | 特徴 |
|---|---|---|---|---|---|
| SparseGPT | 非構造化 | 50〜60% | 1.5〜2x(A100) | 2〜5% | One-shot、再学習不要 |
| Wanda | 非構造化 | 50% | 1.5x | 3〜7% | 計算コスト極小 |
| LLM-Pruner | 構造化 | 20〜30% | 1.3〜1.5x | 5〜10% | タスク非依存、再学習推奨 |
| ShortGPT | 構造化(層削除) | 25〜50% | 1.5〜2x | 3〜8% | Block Importance Score基準 |
| SliceGPT | 構造化(幅削減) | 25〜30% | 1.3x | 4〜6% | PCA投影で次元削減 |
プルーニング+蒸留の統合パイプライン
プルーニングと蒸留を組合せる典型的なパイプラインは3段階構成である:
- Phase 1 — プルーニング: 元モデルから冗長なパラメータ/層を除去。Block Importance Score、Taylor展開、Magnitude Pruningなどの基準で重要度を評価
- Phase 2 — 蒸留リカバリ: プルーニングで失われた性能を蒸留で回復。元モデル(プルーニング前)を教師として使用。学習率1e-5〜3e-5で5〜20エポック
- Phase 3 — 量子化(オプション): GPTQ/AWQでINT4量子化を追加適用。メモリ使用量をさらに1/2〜1/4に削減
代表的なプルーニング蒸留研究
- LLM-Pruner(Ma et al., 2023): 構造化プルーニング後にLoRA蒸留でリカバリ。LLaMA 7Bを20%プルーニング+蒸留で、元モデルの95%の精度を50時間(A100×1)で達成
- ShortGPT(Men et al., 2024): Block Importance Scoreが低い層を削除。Llama 2 70Bから25%の層を削除してもMMLUスコアが3%しか低下しないことを発見。蒸留リカバリで1%まで回復
- Sheared LLaMA(Xia et al., 2024): 構造化プルーニングで目標サイズを指定し、蒸留を動的に調整。LLaMA 2 7B→1.3Bで既存手法比5%以上の精度改善
- Minitron(Muralidharan et al., 2024): NVIDIAが提案。Width Pruning+Depth Pruningの2段階構造化プルーニング+蒸留。Nemotron 15B→8Bで教師の95%性能を維持。Minitron 4Bも同パイプラインで生成
実運用での圧縮パイプライン事例
| 元モデル | 圧縮後 | 手法 | 圧縮率 | MMLU維持率 | 用途 |
|---|---|---|---|---|---|
| Nemotron 15B | Minitron 8B | Width+Depth Pruning+KD | 47% | 95% | NVIDIA NIM推論 |
| LLaMA 2 7B | Sheared 1.3B | 構造化Pruning+動的KD | 81% | 88% | Edge推論 |
| Llama 2 70B | ShortGPT 52B | 層削除+KDリカバリ | 25% | 97% | サーバー推論コスト削減 |
| Phi-2 2.7B | Pruned 1.5B | SparseGPT+KD | 44% | 92% | モバイルデバイス |
プルーニング蒸留の課題
- プルーニング粒度の選択: 層レベル削除は高速化に直結するが精度劣化が大きい。Head/FFN粒度のプルーニングが精度と速度のバランスに優れるが、実装が複雑
- 蒸留データの品質: プルーニング後のリカバリ蒸留ではデータ品質が精度に直結。RedPajama/SlimPajamaなどの高品質コーパスが推奨
- 反復プルーニング vs 一括プルーニング: 少しずつプルーニング→蒸留を繰返す反復手法は精度が高いが、計算コストが数倍に増加
よくある質問(FAQ)
Q1: プルーニングと蒸留のどちらを先に行うべきですか? A: 一般的にプルーニング→蒸留の順序が推奨される。プルーニングでモデル構造を確定した後、蒸留でプルーニング由来の精度劣化をリカバリする。逆順(蒸留→プルーニング)は、蒸留で獲得した知識がプルーニングで失われるリスクがある。
Q2: プルーニング蒸留と量子化の違いは何ですか? A: プルーニングはパラメータ数自体を削減し、蒸留で性能を回復する。量子化はパラメータの精度を下げる(FP16→INT4等)。両者は相補的であり、プルーニング蒸留後にさらに量子化を適用するのが最も効果的な圧縮パイプラインである。
Q3: プルーニング蒸留にはどれくらいのコストがかかりますか? A: LLaMA 7Bクラスのモデルで、プルーニング(1-2時間)+蒸留リカバリ(50-100時間)がA100 80GB×1基での目安。70Bクラスではプルーニング(4-8時間)+蒸留(200-500時間、A100×8基)。クラウドコストでは$500〜$5,000程度。
まとめ
- プルーニング蒸留はプルーニングで構造を圧縮→蒸留で性能回復の2段階手法
- 構造化プルーニング(層/Head削除)+Logit蒸留の組合せが実用的
- Minitron、Sheared LLaMA等の最新手法で圧縮率50%超+精度維持95%を達成
- 量子化との組合せで、70Bモデルを消費者GPUで動作可能なサイズまで圧縮可能