マグニチュードプルーニング(マグニチュードプルーニング)
LLMの重みの絶対値(マグニチュード)の大きさを重要度指標としてプルーニングする最もシンプルな手法。計算コストが低く実装が簡単だが、アクティベーション依存性を無視するため精度劣化がやや大きい。
マグニチュードプルーニングとは
マグニチュードプルーニング(Magnitude Pruning)は、ニューラルネットワークの重み(Weight)の絶対値(Magnitude)を重要度の指標として、絶対値が小さい重みをゼロに設定することでモデルを軽量化する最もシンプルなプルーニング手法です。
基本アルゴリズム
- 全重みの絶対値を計算
- 閾値
θを設定(例: 上位50%を残す場合、50パーセンタイルの絶対値) |w_ij| < θの重みをゼロに設定(マスク)- (オプション)スパースモデルをファインチューニングで性能回復
コードとしては w = w * (abs(w) > threshold) という簡単なマスク操作で実装できます。
LLMへの適用の課題
従来の小型CNNや埋め込みモデルではマグニチュードプルーニングが比較的うまく機能していましたが、LLMへの適用では以下の問題が明らかになりました:
Outlier重みの問題
LLM(特にOPT・LLaMA系)の重みには、他の重みより桁違いに大きな外れ値(Outlier)が存在します。これらのOutlier重みは絶対値が大きいため除去されませんが、実際の推論への貢献度はそれほど高くない場合があります。
アクティベーション依存性の無視
重みの絶対値だけでは、その重みが実際の推論においてどれほど活性化しているかを考慮できません。あまり活性化されない重みが大きな絶対値を持つ場合、誤って「重要な重み」と判断されます。
改良手法との比較
- マグニチュード: 指標=|w|、計算コスト低、精度低
- Wanda: 指標=|w|×活性化ノルム、計算コスト中、精度高
- SparseGPT: 指標=ヘッシアン逆行列近似、計算コスト高、精度最高
Wanda(2023)はマグニチュードに加えアクティベーションノルムを掛け合わせた指標を使用し、同じスパース比率でLLaMAのPerplexityを大幅に改善しました。
非構造的 vs 構造的
マグニチュードプルーニングは基本的に非構造的(Unstructured)プルーニングで、スパース行列を生成します。GPU上での実際の高速化には専用ライブラリ(cuSPARSE等)が必要ですが、標準的な密行列演算ではスパース化のメリットを享受できません。
実用上の位置づけ
マグニチュードプルーニングは研究ベースラインとして広く使われますが、本番LLM展開では精度対スループットのトレードオフからWandaやSparseGPT、または構造的プルーニングが選好されます。50%スパース化でパープレキシティが2-5倍悪化するケースも多く、実用的なプルーニング率は10-20%程度に留まることが多いです。