枝刈り
プルーニングでAIモデルを最適化—複雑さを軽減し、効率を高め、パフォーマンスを犠牲にすることなく、エッジデバイスへの展開を高速化します。
プルーニングは、学習済みニューラルネットワーク(NN)のサイズと計算量を削減するために使用されるモデル最適化手法です。このプロセスでは、モデルから冗長なパラメータ(重み)または重要度の低いパラメータ(重み)または構造(ニューロン、チャネル、またはレイヤー)を特定して削除します。目標は、元のモデルと同等の精度を維持しながら、より小型で高速、かつエネルギー効率の高いモデルを作成することです。これは、エッジデバイスなどのリソースが限られた環境に複雑なAIモデルをデプロイする場合に特に重要です。
枝刈りの仕組み
プルーニングのプロセスは、通常、深層学習モデルが完全にトレーニングされた後に開始されます。これは、多くの大規模モデルが過剰なパラメータ化されているという原則に基づいて動作します。つまり、最終的な予測にほとんど貢献しない多くの重みとニューロンが含まれています。これらの重要でないコンポーネントを特定する一般的な方法は、それらの大きさを分析することです。値がゼロに近いパラメータは、重要度が低いと見なされます。特定されると、これらのパラメータは削除されるか、ゼロに設定されます。プルーニングプロセス後、小さくなったネットワークは通常微調整を受けます。これには、モデルをさらに数エポック再トレーニングすることが含まれます。このステップは、残りのパラメータがアーキテクチャの変更に適応し、プルーニング中に失われた可能性のあるパフォーマンスを回復するのに役立ちます。このプルーニングと微調整の反復プロセスは、モデルサイズとパフォーマンスの間の望ましいバランスを実現するために繰り返すことができます。これは、「Deep Compression」のような基礎研究論文で説明されています。
プルーニングの種類
プルーニング手法は、ネットワークから削除されるものに基づいて、大きく分類できます。
- Unstructured Pruning (Weight Pruning)(非構造化プルーニング(重みプルーニング)): この手法は、重みの大きさなど、特定の基準に基づいてネットワークから個々の重みを削除します。これにより、多くの接続がゼロになるスパースモデルになります。これにより、パラメータの数を大幅に削減できますが、CPUやGPUなどの標準的なハードウェアでは、NVIDIAのスパースモデル用ツールのような特殊なソフトウェアライブラリがない限り、必ずしも推論が高速化されるとは限りません。
 - 構造化された枝刈り: このアプローチは、ニューロン、チャネル、または畳み込みニューラルネットワーク(CNN)内のレイヤー全体など、ネットワークの構造コンポーネント全体を削除します。ネットワークの規則的なブロックを削除するため、標準的なハードウェアが容易に利用できる方法で、モデルのサイズと計算要件を直接削減し、多くの場合、より予測可能な高速化につながります。Neural MagicのDeepSparseのようなツールは、このような構造化されたスパースモデルのCPUでの推論を高速化するように設計されています。
 
PyTorchやTensorFlowのような主要な機械学習フレームワークは、枝刈りを実装するための組み込みユーティリティとチュートリアルを提供しています。
実際のアプリケーション
プルーニングは、計算リソースが限られている実用的なシナリオで強力なAIモデルをデプロイするために不可欠です。
- エッジデバイスでの物体検出の最適化:Ultralytics YOLOのようなモデルは、リアルタイムの物体検出に使用されます。YOLOv8のようなモデルをプルーニングすることで、Raspberry PiやNVIDIA Jetsonのような低電力のエッジデバイスにデプロイできます。これにより、オンデバイスのスマート監視、交通管理の最適化、ロボット工学へのコンピュータビジョンの統合などのアプリケーションが可能になります。
 - 大規模言語モデル(LLM)をローカルで実行する:プルーニングは、Transformerのようなアーキテクチャに基づく大規模言語モデル(LLM)のメモリフットプリントを大幅に削減できます。プルーニングされたLLMは、テキストの要約やローカル仮想アシスタントなどの自然言語処理(NLP)タスクのために、スマートフォンまたはラップトップで直接実行できます。これにより、応答性が向上し、ユーザーデータをデバイス上に保持することでデータプライバシーが強化されます。これは、Electronic Frontier Foundation(EFF)のような組織にとって重要な原則です。
 
プルーニングと他の最適化手法との比較
プルーニングは、モデル最適化のためのいくつかの手法の1つであり、他の手法と並行して使用されることがよくあります。関連する概念と区別することが重要です。
- モデルの量子化: この手法は、モデルの重みとアクティベーションの数値精度を低下させます(例:32ビット浮動小数点から8ビット整数へ)。これにより、モデルサイズが縮小され、特に特殊なサポートを備えたハードウェアでの計算が高速化されます。パラメータを削除する枝刈りとは異なり、量子化はパラメータを圧縮します。
 - Knowledge Distillation(知識蒸留): この手法では、より小規模な「生徒」モデルが、大規模な事前学習済み「教師」モデルの出力を複製するように訓練されます。目標は、学習された知識をよりコンパクトなアーキテクチャに転送することです。一方、枝刈りは既存のアーキテクチャを変更します。
 
これらの手法は、相互に排他的ではありません。一般的なワークフローは、最初にモデルをプルーニングして冗長なパラメータを削除し、次に量子化をプルーニングされたモデルに適用して効率を最大化することです。最適化されたモデルは、推論エンジン全体に幅広く展開するために、Ultralyticsエクスポート機能を使用してONNXなどの標準形式にエクスポートできます。Ultralytics HUBのようなプラットフォームは、トレーニングから最適化されたモデルのデプロイまで、ライフサイクル全体を管理するのに役立ちます。