Pruning
モデルを軽量化するための手法の一つで「巨大なモデルからほとんど使われていないパラメータや層を削除してモデルサイズそのものを小さくする」手法のこと
ただし、下記のように課題も多く、現在のように「ある程度広まったアーキタイプのモデルをいろんな人が推論スクリプトを作って動かす」ような(現在のオープンなモデルの)エコシステムの元では使われづらく、軽量化手法としては量子化や(厳密にはモデルそのものの軽量化ではないが)軽量モデルへの蒸留などのほうが優先されることが多い。 構造化Pruningと呼ばれる手法で層を減らす場合、モデル構造が変わるため基本的に推論スクリプトなども広域に影響を受ける(推論まで全て公式が面倒を見るならともかくサードパーティの開発者が勝手に参加しづらくなる)
特定のパラメーターだけを動的に無効化する非構造化Pruningの場合は(Pytorchモデルなら)推論コードはそのまま使えることも多いが実際の軽量化は限定的。
そもそもどの層を枝刈りするか、と言う選定も難度が大抵とっても高い
そして他の軽量化方法と違って大抵の場合ここから更に「選定された状態で性能を落とさないように(もしくは正常に動作するように)再トレーニングが必要」と言うひと手間もかかる。
大抵は枝刈りするべき所は動的量子化や混合精度モデル等で似たような圧縮ができ、それらの方法ではモデル構造を変えないためそれまでのコード資産などをそのまま流用できる(量子化等は個別の対応は必要なこともある)
モデルサイズを直接小さく出来る点は確かに強みではあるのだが、良くも悪くも「アーキテクチャレベルで理解して自分で推論コードまで面倒を見れる」「枝刈りをした後に再トレーニングまで全部面倒を見れる」ような限られた状況でないとかかる手間に対して利点が限定的であり、モデル構造レベルでのアーキテクチャ自体も日進月歩どころか秒進週歩な生成AIの世界では使われることは(2025/3/4現在は)珍しい手法となっている。
ただ、上記の要件をすべて満たせるなら使う価値もあるので各種スマホやOSに統合するモデル等では今後使われる可能性はある。(計算資源も技術力もあるのと、事実上の独自設計になってしまう点も組み込みではデメリットになりにくいので)