フィルタープルーニング(フィルタープルーニング)
CNNやTransformerの不要なフィルター・チャネル・アテンションヘッドをまとめて除去する構造的プルーニング手法。非構造化プルーニングよりハードウェア加速が容易。
フィルタープルーニング — 構造的ニューラルネットワーク圧縮
フィルタープルーニング(Filter Pruning / Channel Pruning)はCNNやTransformerの構成要素をまとめて除去する構造的プルーニング(Structured Pruning)の主要な手法です。非構造化プルーニングとは異なり、除去後もモデルの密な行列構造が保たれるため、特殊なスパースライブラリなしに既存のハードウェアで推論を高速化できます。
非構造化 vs 構造化プルーニング
非構造化プルーニング(例:SparseGPT、Wanda)は重み行列の個々の要素をゼロにします。スパース率は高くできますが、実際の推論高速化にはSparse Tensor Coreなどスパース計算に対応したハードウェアが必要です。
構造化プルーニング(フィルタープルーニング)はフィルター・チャネル・アテンションヘッドなど「まとまった単位」を除去します。除去後のモデルは小さいが密な行列を持つため、通常のCPU/GPUで直接高速化できます。
CNN でのフィルタープルーニング
畳み込みレイヤーでは各フィルター(カーネル)が特徴マップ1チャネルを生成します。重要性の低いフィルターを除去することで出力チャネル数が減少し、後続レイヤーの入力チャネル数も連動して減少します。
重要性評価の代表的手法:
- Lp-ノルム:フィルターの重みのL1またはL2ノルムが小さいものを除去
- 平均活性化:特定データに対する出力活性化の平均が小さいものを除去
- 勾配情報:損失関数への勾配寄与が小さいフィルターを除去
- Taylor展開:除去後の損失変化をTaylor展開で近似
Transformer でのヘッドプルーニング
TransformerのMulti-Head Attentionではアテンションヘッド単位でプルーニングするヘッドプルーニングが構造化プルーニングに相当します。Michel et al.(2019)「Are Sixteen Heads Really Better than One?」ではBERTの大半のアテンションヘッドが除去可能であることが示されています。
LLM向けには:
- アテンションヘッドの除去
- FFN(Feed-Forward Network)のニューロン除去
- Transformerブロック全体の除去(レイヤープルーニング)
などが研究されています。
代表的な研究
- Li et al. 2017 (ICLR):L1ノルムによるフィルタープルーニングの体系的研究
- Molchanov et al. 2017:Taylor展開を用いた重要度推定
- He et al. 2019 (AMC):強化学習で各レイヤーのプルーニング率を自動決定
- LLM-Pruner(2023):構造的プルーニングをLlamaなど大規模LLMに適用
精度とプルーニング率のトレードオフ
構造化プルーニングは非構造化プルーニングより同じスパース率での精度劣化が大きい傾向があります。30〜50%のヘッド除去でも比較的精度を維持できますが、70%以上の除去は大きな劣化を招くことが多いです。再学習(Fine-tuning)との組み合わせ(Prune-then-Fine-tune)で精度を回復させるのが一般的なワークフローです。
まとめ
フィルタープルーニングは構造を保ちながらモデルを小型化できるため、エッジデバイスや低スペックサーバーへのデプロイに適した圧縮手法です。ハードウェア効率を優先する場面で選択されます。