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