プルーニングによるAIモデルの最適化 - パフォーマンスを犠牲にすることなく、複雑さを軽減し、効率を高め、エッジデバイスに迅速に展開します。
プルーニングは、学習済みニューラルネットワーク(NN)のサイズと計算複雑度を低減するために使用されるモデル最適化手法である。このプロセスでは、モデルから冗長なパラメータ(重み)や重要度の低い構造(ニューロン、チャンネル、レイヤー)を特定し、削除します。目標は、元のモデルと同等の精度を維持しながら、より小さく、より高速で、よりエネルギー効率の高いモデルを作成することである。これは、エッジ・デバイスのようなリソースに制約のある環境で複雑なAIモデルを展開する場合に特に重要である。
プルーニングのプロセスは通常、ディープラーニング・モデルが完全に学習された後に開始される。これは、多くの大規模モデルはパラメータ化されすぎており、最終的な予測にほとんど寄与しない重みとニューロンを多く含んでいるという原理に基づいている。これらの重要でないコンポーネントを特定する一般的な方法は、その大きさを分析することである。値がゼロに近いパラメータは、重要性が低いとみなされる。識別されると、これらのパラメータは削除されるか、ゼロに設定される。プルーニングプロセスの後、小さくなったネットワークは通常ファインチューニングを受ける。このステップは、残りのパラメータがアーキテクチャの変更に適応し、プルーニング中に失われた性能を回復するのを助ける。この刈り込みと微調整の反復プロセスは、「Deep Compression(深層圧縮)」のような基礎的な研究論文で説明されているように、モデルサイズと性能の望ましいバランスを達成するために繰り返すことができる。
プルーニング技術は、ネットワークから何を取り除くかによって大別できる:
PyTorchや TensorFlowのような主要な機械学習フレームワークには、プルーニングを実装するための組み込みユーティリティやチュートリアルが用意されている。
プルーニングは、計算リソースが限られている実用的なシナリオで強力なAIモデルを展開するために不可欠である。
プルーニングは、モデル最適化のためのいくつかのテクニックのひとつであり、しばしば他のテクニックと一緒に使用されます。関連する概念と区別することが重要です:
これらのテクニックは相互に排他的なものではない。一般的なワークフローは、まずモデルを刈り込んで冗長なパラメータを除去し、次に刈り込んだモデルに量子化を適用して効率を最大化する。最適化されたモデルは、Ultralyticsのエクスポート機能を使って ONNXのような標準フォーマットにエクスポートし、様々な推論エンジンに幅広く展開することができます。Ultralytics HUBのようなプラットフォームは、トレーニングから最適化されたモデルのデプロイまで、ライフサイクル全体を管理するのに役立ちます。