Wanda(LLMプルーニング)(わんだ えるえるえむぷるーにんぐ)
Wandaは2023年にSun et al.(Carnegie Mellon University)が発表したLLM向けプルーニング手法。重みの絶対値と入力活性化のノルム積を重要度スコアとして使い、キャリブレーションデータ128サンプルのみで再学習なしにLLaMA-2 7B〜65Bなどを50〜60%スパース化できる。
Wandaとは
Wanda(Pruning by Weights AND Activations)は2023年にSun et al.がCMUで発表したポストトレーニングプルーニング手法です。SparseGPTと同様に再学習不要でLLMを50〜60%スパース化できますが、Hessian行列の計算が不要なため計算コストが大幅に低く、高速に処理できる点が特徴です。
重要度スコアの設計
Wandaの核心は重み×活性化ノルムを重要度指標とする点です。
重要度スコア(W_ij) = |W_ij| x ||X_j||_2
W_ij:重み行列の(i,j)番目の要素X_j:j番目の入力特徴量の2-ノルム(キャリブレーションデータの平均)
マグニチュードプルーニング(重みの絶対値のみ)と違い、活性化の大きさを考慮することで、小さい重みでも大きな活性化と乗算される重要な重みを保護します。これがLLM特有の「外れ値活性化問題」への対処になっています。
SparseGPTとの比較
| 指標 | Wanda | SparseGPT |
|---|---|---|
| Hessian計算 | 不要 | 要(近似) |
| 処理速度 | 速い(2〜5倍) | 遅い |
| LLaMA-2 7B perplexity(50%スパース) | 6.83 | 6.51 |
| LLaMA-2 13B perplexity(50%スパース) | 6.31 | 6.14 |
| 実装の複雑さ | 低 | 中 |
| 2:4スパーシティ対応 | 可 | 可 |
perplexityはSparseGPTが若干優位ですが、差は0.2〜0.5pt程度で、処理速度の優位性からWandaが実用上選ばれるケースも多いです。
インストールと実行
公式リポジトリ locuslab/wanda(PyTorch)。LLaMA-2 7Bを50%非構造化スパース化する場合:
git clone https://github.com/locuslab/wanda && cd wanda && pip install -r requirements.txt
python main.py --model meta-llama/Llama-2-7b-hf --prune_method wanda --sparsity_ratio 0.5 --sparsity_type unstructured --save out/llama2_7b_unstructured0.5/
2:4構造化スパーシティを適用する場合:
python main.py --model meta-llama/Llama-2-7b-hf --prune_method wanda --sparsity_ratio 0.5 --sparsity_type 2:4
キャリブレーションデータの影響
128サンプルのキャリブレーションデータ(デフォルトはC4データセット)の選択が精度に影響します。研究によると:
- C4 128サンプル:汎用タスクで最も安定
- タスク固有データ:特定ドメイン(コード/数学)ではドメインデータが有利
- サンプル数増加:512→2048でperplexityが0.1〜0.3pt改善するが処理時間も増加
実用上の注意点
適している用途:
- 研究・実験での素早いモデル圧縮検証
- LLaMA/Mistral/Falconなど汎用モデルの50%スパース化
- A100/H100での2:4スパーシティ高速化
制限事項:
- 非構造化スパース化はCPU実行時はランタイム削減に直結しない
- fine-tunedモデルや特殊アーキテクチャでは活性化統計が異なり調整が必要
- 60%以上のスパーシティでは急激にperplexityが悪化する傾向
FAQ
Q: WandaはMistral/Gemmaにも使えますか? A: はい。Transformer自己注意+FFNの標準アーキテクチャであれば動作します。ただしGQA(グループクエリアテンション)構造のモデルは一部手動調整が必要です。
Q: Wandaで圧縮したモデルをllama.cppで動かせますか? A: llama.cppはGGUF形式の非構造化スパースを密行列として処理するため、そのままでは高速化されません。2:4スパーシティはNVIDIAのcutlass経由でのみ恩恵があります。
Q: SparseGPTよりWandaを選ぶべき場面は? A: 研究での探索的実験や、処理速度が重要なケースではWandaが適切です。本番デプロイで最大限の精度を求める場合はSparseGPTが有利です。