Generic selectors
Search in title
Search in content
Post Type Selectors
コラム
AI用語集

Pruningとは何か

用語:Pruning

一言で:Pruningとは、モデルの重要度が低い重みや構造を削除・ゼロ化し、疎なモデルにしてサイズや計算負荷を減らす手法です。

AI用語の分類:AIエージェント・開発・運用

Pruning(プルーニング、枝刈り)は、ニューラルネットワークの中から重要度の低い重みや構造を取り除き、モデルを疎(sparse)にする最適化手法です。植物の枝を剪定する比喩から来た言葉で、モデル圧縮やエッジAIの記事でよく使われます。

代表的な方法では、絶対値が小さい重みを徐々に0へ置き換えます。TensorFlow Model Optimizationの説明でも、magnitude-based weight pruningは学習中に重みをゼロ化し、sparsityを高める手法として整理されています。[1]

何を削るのか

Pruningには大きく、非構造化(unstructured)と構造化(structured)があります。非構造化Pruningは、個々の重みをばらばらに0へします。高いsparsityを得やすい一方、行列の中にゼロが不規則に散らばるため、通常の密行列演算器では高速化しにくいことがあります。

構造化Pruningは、チャネル、フィルタ、ヘッド、ブロックなど、実装上扱いやすい単位で削ります。たとえば「4個の重みのうち2個をゼロにする」2:4 sparsityのように規則的なパターンを使う方式があります。対応するハードウェアでは、この規則性を利用して実際の演算を減らせます。[2]

モデルサイズと速度は別問題

Pruningでゼロが増えれば、圧縮形式ではファイルサイズを小さくできます。しかし、ゼロの場所も含めて通常の密な行列として保存・計算すれば、演算器は結局ゼロとの掛け算を実行します。

このため「90% pruningしたから推論が10倍速い」とは限りません。実際の速度向上には、疎行列カーネル、対応アクセラレータ、規則的なsparsityなどが必要です。TensorFlowの構造化Pruningの文書も、対応ハードウェア上で推論時間を短縮できることを強調しています。

なぜ削っても性能を保てるのか

大規模ニューラルネットワークには、同じ機能を複数の重みで冗長に表している部分があります。すべての重みが同じ重要度を持つわけではありません。そこで、影響の小さい重みを少しずつ削り、残った重みを再学習・微調整することで性能を回復させます。

古典的なDeep Compression研究では、Pruning、量子化、符号化を組み合わせ、大きなニューラルネットワークを大幅に圧縮できることが示されました。この歴史からも分かるように、Pruningは単独で使うだけでなく、量子化など他の圧縮技術と組み合わせられることが多い手法です。[3]

量子化・蒸留との違い

量子化は、重みや活性値をより少ないbit数で表現する技術です。重みの数そのものを減らさなくても、1個あたりの保存コストを下げられます。Pruningは、重みや構造自体を無効化・削除する発想です。

蒸留はさらに別で、大きな教師モデルの出力を使って、小さな生徒モデルを訓練します。最終的に小型化するという目的は似ていますが、何を変える手法なのかが違います。

精度とのトレードオフ

削る割合を増やすほど、一般には性能を維持するのが難しくなります。また、重要な層を一律にPruningすると大きく性能が落ちる場合があります。そのため実務では、層ごとにsparsity率を変えたり、Pruning後にfine-tuningしたりします。

構造化Pruningは高速化しやすい反面、削り方の制約が強いため、同じsparsity率なら非構造化より精度低下が大きくなる場合があります。したがって評価では、sparsity率だけでなく、精度・速度・メモリの三者を見る必要があります。

元の文脈へ戻ったときの確認事項

「Pruned model」と書かれていたら、最初に何を削ったのかを確認します。個々の重みなのか、チャネルやヘッドなのか、2:4のような構造化疎性なのかで意味が変わります。次にsparsity率、Pruning後の再学習、元モデルとの性能差を見ます。

そして最も重要なのが、実際の配備環境で速度が上がるかです。ファイルが小さくなったことと、推論が速くなったことは同義ではありません。Pruningの効果は「どれだけゼロが増えたか」だけではなく、そのゼロを実行系が利用できるかで決まります。

注・出典

  1. TensorFlow Model Optimization: Pruning overview ↩
  2. TensorFlow: Structural pruning with 2 by 4 sparsity ↩
  3. Han, Mao, Dally: Deep Compression ↩

AI協働制作について

本記事は、著者が独自に設計した指示、参照資料、出典確認規則、著作権確認および監査工程を組み込んだChatGPT等の生成AIを、情報収集の補助、資料整理、構成検討、草稿作成、文章校正および監査補助に使用して制作しました。記事の対象範囲、情報源の採否、構成、解釈および最終表現は著者が判断し、最終稿を承認しています。著者は、本記事の正確性、独自性、引用、著作権処理および公開内容について責任を負います。制作工程の詳細は「AI協働制作方針」をご覧ください。

おすすめ