AI・機械学習
4

FLAP(特徴量ベースプルーニング)(ふらっぷ とくちょうりょうべーすぷるーにんぐ)

FLAP(Fluctuation-based Adaptive Structured Pruning)は2024年にAn et al.が発表したLLM向け構造化プルーニング手法。特徴量の変動(fluctuation)を重要度指標とし、Attention headとFFNの中間ニューロンを再学習なしで構造的に削除する。LLaMA-2 7Bで20〜30%削除しながらperplexityの上昇をSparseGPT並みの1〜2ptに抑えられる。

0 回閲覧
0 いいね
2026/6/1 更新

FLAPとは

FLAP(Fluctuation-based Adaptive Structured Pruning)は2024年にAn et al.が発表したLLM向け構造化プルーニング手法です。WandaやSparseGPTの非構造化プルーニングと異なり、Attention頭(head)やFFNの中間ニューロンを丸ごと削除するため、削除後のモデルは標準的な密行列として動作します。再学習は不要で、128サンプルのキャリブデータのみで動作します。

重要度指標:Fluctuation(変動)

FLAPの名前の由来でもある「fluctuation(変動)」は、特徴量の入力分散です。

Fluctuation score(j) = Var(X_j)

考え方: キャリブレーションデータでの活性化がほぼ常に同じ値(分散が低い)のニューロンは、入力に関係なく固定的な出力を返すため情報価値が低く、安全に削除できます。

これはWandaの重み×活性化ノルム方式と異なり、活性化の一貫性に着目する点がユニークです。

アダプティブ構造削除の流れ

1. キャリブレーションデータ128サンプルを各レイヤーに通す
2. 各Attention head / FFNニューロンの活性化変動を計算
3. 変動が低いhead/ニューロンをターゲット削除率まで削除
4. 削除後のバイアス補正(削除したニューロンの平均活性化を残留ニューロンに加算)
5. 新しいアーキテクチャとして保存

ステップ4のバイアス補正がFLAPの精度維持の鍵で、削除したニューロンが持っていた定数的な寄与を残留ニューロンに転嫁します。

主要モデルでの性能比較

モデル/手法削除率Perplexity(WikiText2)BoolQARC-E平均
LLaMA-2 7B 元0%5.4771.076.373.7
FLAP 20%20%6.3468.272.170.2
SliceGPT 20%20%6.5167.871.569.7
LLM-Pruner 20%20%7.2264.368.966.6
SparseGPT 50%50%6.5168.173.270.7
Wanda 50%50%6.8366.971.469.2

FLAPの構造化20%削除はWandaの非構造化50%と同程度の性能を維持しながら、モデルが物理的に小さくなる利点があります。

Attention ヘッド削除とFFNニューロン削除の配分

FLAPはAttention headとFFNニューロンを同じ変動スコアで統一的に評価し、削除先を自動的に配分します(adaptive)。例えば20%削除指定時:

LLaMA-2 7B(20%削除時の典型的配分):
- Attention heads: 32heads/層 → 平均25〜26head/層
- FFN中間次元: 11008 → 約8800
- 総パラメータ: 6.74B → 約5.4B(約20%削減)

従来の手法では「headを何%削除、FFNを何%削除」と個別設定が必要でしたが、FLAPは変動スコアの統一指標でワンショット最適化します。

実装とHugging Face対応

公式コード CASIA-IVA-Lab/FLAP(GitHub)。LLaMA-2 7Bを20%削除する場合:

git clone https://github.com/CASIA-IVA-Lab/FLAP && cd FLAP && pip install -r requirements.txt
python flap.py --model meta-llama/Llama-2-7b-hf --pruning_ratio 0.20 --device cuda --eval_device cuda --save_model ./flap_llama2_7b_20/

出力は通常のHugging Faceモデルとして保存され、AutoModelForCausalLM.from_pretrained()でロードできます。

実用選択ガイド

FLAPを選ぶべき場面:

  • 20〜25%の構造化削減が必要でdeployが標準環境
  • SliceGPTより実装が単純なものが必要
  • LLaMA/Mistral系の効率的なエッジ展開

FLAPより他を選ぶ場面:

  • 50%以上の大幅削減 → SparseGPTやWanda(非構造化)
  • 精度最優先の80%削減 → Sheared LLaMA(ファインチューン必要)

FAQ

Q: FLAPとSliceGPTはどちらが良いですか? A: ベンチマーク上はほぼ同等ですが、FLAPはPCA変換なしで実装がシンプルです。SliceGPTは理論的基盤が厚く、大きいモデル(70B以上)での安定性が研究されています。

Q: 削除率20%と30%で効果はどう変わりますか? A: LLaMA-2 7Bでperplexityは20%で+0.9pt、30%で+2.1ptと急増します。実用上は20〜25%が精度とサイズ削減のバランス点です。

Q: FLAPでLoRAファインチューニングは改善しますか? A: はい。削除後に数百Mトークンのfine-tuningを加えるとperplexityが元の+0.3〜0.5pt程度まで回復するとの報告があります。

この記事について
カテゴリーAI・機械学習
難易度4
作成日2026/6/1