Yolo 深圳
深セン
今すぐ参加
用語集

モデルの枝刈り

モデルの枝刈りにより、機械学習モデルを最適化します。リソースが限られた環境でのデプロイメントにおいて、推論の高速化、メモリ使用量の削減、エネルギー効率の向上を実現します。

モデル刈り込みは モデル最適化手法 ニューラルネットワークのサイズと計算の複雑さを軽減するために設計された。 不要なパラメータを削除することで パラメータを削除することによって人工知能モデルは、より高い性能を達成するために大きくなるにつれて、しばしば次のようになる。 最終的な出力にはほとんど寄与しない多くの接続やニューロンを含む、過剰なパラメータになりがちです。このような冗長なコンポーネントを 開発者は、このような冗長なコンポーネントを特定し削除することで、より少ないメモリとエネルギーで動作する無駄のないモデルを作成することができます。 より高速なリアルタイム推論を実現することができる。 このプロセスは、次のような洗練されたアーキテクチャを導入する際に特に重要である。 YOLO11のような洗練されたアーキテクチャを 携帯電話や組み込みセンサーなど、リソースが乏しいハードウェア上にYOLO11のような高度なアーキテクチャを展開するためには、このプロセスは特に不可欠である。

コアコンセプトとメカニズム

剪定のプロセスには、通常、トレーニング、剪定、微調整の3つの段階がある。 微調整である。最初に、複雑な特徴を捉えるために、大規模なモデルが 収束させ、複雑な特徴を捉える。プルーニングの段階では、アルゴリズムが特定のパラメータ-通常 通常 weights and biases-の重要性を評価する。 の重要性を評価する。重要でないと判断されたパラメータは、ゼロに設定されるか、完全に削除される。

しかし、単にネットワークの一部を切り取るだけでは、その精度は低下する。 精度が落ちてしまう。これを打ち消すために、モデルは微調整と呼ばれる再学習を行う。 ファインチューニングと呼ばれる再トレーニングを行う。このステップにより、残りのパラメータが調整され、失われた接続を補うことができる。 このステップにより、残りのパラメータが調整され、失われた接続を補うことができる。このアプローチの有効性は このアプローチの有効性は ロッタリーチケット仮説(Lottery Ticket Hypothesis)によって支持されている。 この仮説は、密なネットワークには、単独で訓練したときに同等の精度を達成できる、より小さなサブネットワークが含まれていることを示唆している。

モデルの枝刈りの種類

刈り込み戦略は一般的に、除去されるコンポーネントの構造によって分類される:

  • 非構造化刈り込み:この方法は、場所に関係なく個々の重みを対象とする、 低い値のものはゼロに設定する。その結果、貴重なコネクションが散在する「スパース」マトリックスになる。 散在する。構造化されていない刈り込みは、モデルサイズを小さくするのに有効ですが、実際のスピードアップを実現するには、特殊なハードウェアやソフトウェア・ライブラリが必要になることがよくあります。 ソフトウェア・ライブラリが必要となる。 標準的なCPUGPUは密な行列演算 というのも、標準的なCPUやGPUは密な行列演算に最適化されているからです。
  • 構造化刈り込み:このアプローチでは、個々の重みの代わりに、チャンネルやフィルター、レイヤーなどの幾何学的構造全体を除去する。 このアプローチでは、個々の重みの代わりに、幾何学的な構造全体、たとえばチャンネル、フィルター、レイヤーなどを除去する。 畳み込みニューラルネットワーク(CNN)。行列の密な構造を維持することで、構造化刈り込みは、標準的なハードウェアがモデルをより効率的に処理することを可能にする。 モデルをより効率的に処理することができる。 特別な スパース・アクセラレーション・ツールを必要としません。

刈り込みと量子化

どちらもよく使われる最適化手法ですが、プルーニングとモデル量子化を区別することが重要です。 モデル量子化と区別することが重要です。プルーニングは プルーニングは、パラメータ(接続やニューロン)の数を減らすことに焦点を当て、モデルのアーキテクチャを効果的に変更します。これに対し これとは対照的に、量子化はパラメータの精度を下げます。 浮動小数点数を8ビット整数に変換する。これらの方法はしばしば相補的である。 開発者は、まずモデルを剪定して冗長性を排除し、次にそれを量子化することで、配備時のメモリフットプリントをさらに最小化することができる。 デプロイメント

実際のアプリケーション

プルーニングは、高度なコンピュータビジョンを実用化する上で重要な役割を果たす。 プルーニングは 重要な役割を果たす:

  1. モバイル物体検出:AR(拡張現実)アプリや写真整理アプリなど、スマートフォン上で実行されるアプリケーションは、刈り込みモデルを使用しています。 スマートフォンで動作するアプリケーションは、プルーニングされたモデルを使用して、ローカルでオブジェクト検出を行います。 オブジェクト検出をローカルで実行します。これによりバッテリー クラウド処理を回避することで、バッテリ寿命の節約とユーザーデータのプライバシ 処理を回避し、ユーザーデータのプライバシーを保護します。
  2. 自動車安全システム: 自律走行車は、歩行者や障害物を検知するために 歩行者や障害物をdetect するために、視覚データの迅速な処理に依存しています。プルーニングされたモデルにより、オンボード 推論エンジンによる瞬時の判断が可能になります。 サーバーグレードGPUような大規模な消費電力を必要としません。

実施例

以下のようなフレームワーク PyTorchのようなフレームワークは を提供しています。次の例では、畳み込み層に非構造化プルーニングを適用する方法を示します。 のような最適化されたフォーマットにモデルをエクスポートする前の一般的な操作です。 ONNX.

import torch
import torch.nn.utils.prune as prune

# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3)

# Apply L1 unstructured pruning to remove 30% of the connections
# This sets the smallest 30% of weights (by absolute value) to zero
prune.l1_unstructured(layer, name="weight", amount=0.3)

# Verify sparsity: calculate the percentage of zero parameters
sparsity = float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Layer sparsity: {sparsity:.2%}")

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加