用語集

剪定

プルーニングによるAIモデルの最適化 - パフォーマンスを犠牲にすることなく、複雑さを軽減し、効率を高め、エッジデバイスに迅速に展開します。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

プルーニングとは、人工知能(AI)や機械学習(ML)において、学習済みモデルのサイズや計算量を削減するために使用されるモデル最適化手法である。これは、ニューラルネットワーク(NN)内の重みや接続など、モデルのタスクにとってあまり重要でない、あるいは冗長であると判断されたパラメータを選択的に削除することを含む。主な目的は、より少ない計算リソースとメモリで、理想的には性能や精度を大幅に低下させることなく、より小さく、より高速なモデルを作成することである。このプロセスは、特に機能が制限されたデバイス上で、効率的なモデル展開の重要な部分です。プルーニング」は一般的な用語ですが、「モデル・プルーニング」は特にMLモデルにこの手法を適用することを指します。

剪定の妥当性

ディープラーニング(DL)モデルが大規模化し、高度なタスクに取り組むために複雑化するにつれて、計算能力、ストレージ、エネルギーに対する需要が大幅に増加する。プルーニングは、モデルをより軽量かつ効率的にすることで、この課題に直接対処します。この最適化は、必要なストレージの削減、運用時のエネルギー消費の低減、リアルタイム推論を必要とするアプリケーションにとって重要な推論レイテンシの低減といった、いくつかの利点につながります。プルーニングは、モバイル機器、組み込みシステム、および効率が最大の関心事である様々なエッジAIシナリオのような、リソースに制約のある環境でモデルを展開する際に特に有用です。また、モデルを単純化することで、オーバーフィッティングを軽減することもできます。

剪定の応用

刈り込み技術は、多くのAI領域で広く応用されている。具体的な例を2つ紹介しよう:

  1. エッジデバイスへの物体検出モデルの導入:エッジデバイス上での Ultralytics YOLO物体検出のためにトレーニングされたモデルは、Raspberry Piや Google EdgeTPUような低消費電力デバイスに展開するには、大きすぎたり遅すぎたりする可能性がある。プルーニングを行うことで、モデルのサイズと計算負荷を減らすことができ、セキュリティシステムやローカルの野生動物モニタリングのようなタスクのために、そのようなハードウェア上で効果的に実行できるようになります。EdgeTPU on Raspberry Piのチュートリアルや NVIDIA Jetsonのガイドなどの導入例を参照してください。
  2. 自律システムのためのモデルの最適化: 自律走行車では画像セグメンテーションやセンサーフュージョンなどのタスクのための複雑な知覚モデルは、最小限の待ち時間で実行されなければなりません。プルーニングは、これらの畳み込みニューラルネットワーク(CNN)を最適化して、厳しいリアルタイム処理要件を満たし、安全で応答性の高い車両操作を保証します。フレームワーク NVIDIA TensorRTのようなフレームワークは、最適化された推論のための刈り込みモデルをサポートしています。

種類とテクニック

剪定方法はさまざまだが、一般的には主に以下のカテゴリーに分類される:

  • 非構造的刈り込み:これは、個々の重みまたはニューロンを、大きさが小さいとか出力への寄与度が低いなどの基準に基づいて削除することである。その結果、接続が不規則なパターンで削除された疎なモデルになる。高い圧縮率を達成できる可能性がある一方で、これらのモデルを効率的に実行するには、特殊なハードウェアやソフトウェアライブラリ(Neural MagicDeepSparseなど)が必要になる場合があります。Ultralytics Neural Magic Integrationをご覧ください。
  • 構造的刈り込み:このテクニックは、フィルター、チャンネル、あるいはレイヤーなど、ネットワークの構造的なコンポーネント全体を削除します。これにより、規則的な構造が維持され、刈り込まれたモデルは、NVIDIA構造化スパースサポートのような標準的なハードウェアアクセラレータやライブラリとの互換性が高くなります。

プルーニングは、学習前(アーキテクチャ設計に影響を与える)、学習プロセス中、または学習済みモデルでの学習後など、さまざまな段階で実施することができ、多くの場合、失われた精度を取り戻すために微調整が行われる。主なディープラーニングフレームワーク PyTorchTensorFlowは、様々な刈り込み戦略を実装するためのツールやチュートリアル(PyTorch Pruning Tutorialなど)を提供しています。

プルーニングと他の最適化手法の比較

プルーニングは、モデルの最適化に使われるいくつかのテクニックのひとつです。関連する概念と区別することは有益である:

  • モデルの量子化モデルの重みと活性度の精度を下げ(例えば32ビット浮動小数点数から8ビット整数へ)、モデルサイズを小さくし、特に特殊なハードウェア上では計算を高速化することが多い。
  • 知識の蒸留より大きな、事前に訓練された「教師」モデルの動作を模倣するために、より小さな「生徒」モデルを訓練することを含み、複雑さを継承することなく知識を伝達する。

これらのテクニックは相互に排他的なものではなく、より高いレベルの最適化を達成するために、プルーニングと組み合わせて使用されることが多い。例えば、モデルをまず刈り込み、次に量子化することで、最大限の効率を得ることができます。最適化されたモデルは、多くの場合、次のような標準フォーマットにエクスポートすることができます。 ONNXUltralytics ような標準形式にエクスポートすることができる。

要約すると、刈り込みは、多様な展開ニーズに適した効率的なAIモデルを作成するための強力な技術であり、コンピュータビジョン(CV)やその他のMLタスクの実用化において重要な役割を果たしている。Ultralytics HUBのようなプラットフォームは、以下のようなモデルの開発と最適化を容易にする、クラウドトレーニングを含むツールとインフラを提供します。 YOLOv8やYOLO11ようなモデルの開発と最適化を促進することができます。

すべて読む