モデル刈り込みは、機械学習において、学習済みモデルのサイズと複雑さを軽減して最適化するために使用される手法である。これは、ニューラルネットワーク(NN)内のウェイトやコネクションなど、モデル全体のパフォーマンスに最小限の寄与しかしない重要度の低いパラメータを特定し、削除することで達成される。目標は、より小さく、より高速なモデルを作成することであり、計算パワーとメモリをより少なくし、精度を大幅に落とすことなく、より効率的にすることである。このプロセスは、機械学習モデルに直接適用される特定のタイプの刈り込みである。
モデル・プルーニングを使う理由
モデル刈り込みの主な動機は効率性である。最新のディープラーニング・モデルは、強力な反面、非常に大きく、計算負荷がかかる。これは、特にスマートフォンやエッジ・コンピューティング・システムのようなリソースが限られたデバイス上で、モデルの展開に課題をもたらします。モデル・プルーニングは、以下の方法でこれらの問題に対処する:
- モデルサイズの縮小:より小さなモデルはより少ないストレージスペースで済み、Ultralytics HUBアプリを実行するデバイスなどへの展開がより簡単になります。
- 推論速度の向上:より少ないパラメータで、プルーニングされたモデルはより速く計算を実行し、推論の待ち時間を短縮します。これはリアルタイム推論アプリケーションにとって非常に重要です。
- エネルギー消費の低減:これはバッテリー駆動のデバイスや持続可能なAIを推進する上で重要です。
- オーバーフィッティングの最小化:冗長なパラメータを削除することで、モデルが新しいデータに対してより良く汎化できるようになり、オーバーフィッティングを減らせる可能性があります。
モデル刈り込みの種類
モデル刈り込みのテクニックは様々だが、一般的には何を除去するかによって分類される:
- ウェイト・プルーニング(非構造化):ネットワーク内の個々の重みまたは接続のうち、大きさや重要性が低いものはゼロに設定される。この結果、疎なモデルになることが多いが、最適な高速化のためには特別なハードウェアやソフトウェアが必要になることがある。
- ニューロン/フィルターの刈り込み(構造化):ニューロン全体、フィルター(畳み込みニューラルネットワーク(CNN)の場合)、またはその他の構造的構成要素を除去する。これは通常、以下のようなツールを使用して標準的なハードウェアで加速しやすい、より規則的で小さな高密度モデルにつながる。 NVIDIA TensorRT.
プルーニングは、トレーニング後に適用することも、トレーニングプロセスに組み込むこともできる。多くの場合、プルーニングされたモデルは、失われた精度を回復するために微調整(追加学習)を必要とします。PyTorch Pruning Tutorialのようなリソースで様々なプルーニング戦略を調べることができます。
実世界での応用
モデルの刈り込みは多くの領域で価値がある:
- モバイルコンピュータビジョンUltralytics YOLOは、モバイルデバイス上の物体検出に使用されるモデルを効率的に実行するために刈り込み、常時クラウドに接続することなく、デバイス上で直接リアルタイム分析を可能にします。これは、Raspberry Piのようなプラットフォームで展開されるアプリケーションや、GoogleEdgeTPUようなアクセラレータを使用するアプリケーションにとって不可欠です。
- 自律システム:自動運転車やドローンでは、モデルはセンサーデータを瞬時に処理する必要があります。複雑な知覚モデルを刈り込むことで、安全なナビゲーションや意思決定に必要な低レイテンシを実現することがNVIDIA 。
モデル刈り込みと他の最適化手法との比較
モデル刈り込みは、モデルを最適化するためのいくつかのテクニックのひとつである。それと区別することが重要である:
- モデルの量子化:モデルの重みとアクティベーションの精度を下げます(例:32ビット浮動小数点数から8ビット整数へ)。これもサイズを縮小して計算を高速化するが、パラメータを削除するのではなく、データ型を変更することで機能する。例についてはTensorFlow Liteの最適化を参照してください。
- 知識の蒸留:より大きな、事前に訓練された「教師」モデルの出力を模倣するために、より小さな「生徒」モデルを訓練することを含む。目標は、教師モデルを直接修正することなく、知識を伝達し、コンパクトなモデルを作成することです。詳細はKnowledge Distillationの論文をお読みください。
これらの技法は相互に排他的なものではなく、最適化の効果を最大化するためにプルーニングと組み合わされることが多い。例えば、モデルを最初に刈り込み、最終的な展開の前に量子化することもあります。最適化に関するガイダンスは、Ultralytics ドキュメントに記載されています。