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

枝刈り

剪定Ultralytics のようなニューラルネットワークを最適化する仕組みを学びましょう。冗長なパラメータを除去することで実現します。エッジAI向けの構造化および非構造化手法を探求します。

剪定は戦略的な モデル最適化手法であり、 不要なパラメータを除去することで ニューラルネットワークのサイズと計算複雑性を低減する。 庭師が枯れた枝や伸びすぎた枝を剪定して樹木の成長を促すように、 剪定アルゴリズムは冗長な重みとバイアスを特定し除去する。 weights and biases を特定し除去する。 主な目的は、高い精度を維持しつつ 大幅に少ないメモリとエネルギーを消費する 圧縮された「疎な」モデルを作成することである。 この削減は推論遅延の改善に不可欠であり、 高度なアーキテクチャが 携帯電話や組み込みデバイスなどの リソース制約のあるハードウェア上で 効率的に動作することを可能にする。

メカニズムと方法論

現代の深層学習モデルはしばしば 過パラメータ化されており、特定の課題を解決するために必要な接続数をはるかに超えた接続を含んでいる。 プルーニングはこの特性を活用し、出力への影響が無視できると仮定して、 値がゼロに近い接続を除去する。 パラメータ除去後、モデルは通常微調整プロセスを経る。これは残存重みを調整し、失われた性能を回復させるための短時間の再学習である。この概念は「宝くじ仮説」と密接に関連しており、大規模ネットワークには同等の精度を達成可能な小型で高効率なサブネットワークが存在すると示唆している。

剪定戦略には主に二つのカテゴリーがある:

  • 非構造化剪定: この手法は、個々の重みの位置に関係なく、その大きさに基づいて重みを削除します。これにより総パラメータ数は効果的に削減されますが、不規則な疎行列が生成され、専用のソフトウェアなしでは標準的な CPUやGPUが効率的に処理するのに苦労する可能性があります。
  • 構造化プルーニング:この手法は、畳み込みニューラルネットワーク(CNN)内のニューロン、チャネル、層といった幾何学的構造全体を削除する。行列構造を保持するため、構造化プルーニングは標準的なハードウェアアクセラレータとの互換性が高く、リアルタイム推論において即時の高速化をもたらすことが多い。

実際のアプリケーション

エッジAIをハードウェアリソースが限られる様々な産業で実現するには、 剪定が不可欠である:

  1. 自律型ドローン:捜索救助に用いられる無人航空機は、複雑な環境を航行するためにコンピュータービジョンに依存している。剪定された物体検出モデルにより、これらの装置はクラウド通信に伴う遅延問題を回避しつつ、映像フィードをローカルでリアルタイム処理できる。
  2. モバイル医療超音波解析用ハンドヘルド医療機器は、 剪定モデルを活用し、detect 端末上で直接detect 。これにより患者の データプライバシーが確保され、インターネット接続のない遠隔地でも 高度な診断が可能となります。

実施例

YOLO26のような最先端モデルは効率性を重視して設計されていますが、開発者はPyTorchなどのライブラリを用いて層のさらなる最適化に剪定を適用できます。 PyTorchなどのライブラリを使用してレイヤーをさらに最適化できます。以下の例は、畳み込み層に非構造化プルーニングを適用する方法を示しています。

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

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

# Apply L1 unstructured pruning to remove 30% of weights with the lowest magnitude
prune.l1_unstructured(layer, name="weight", amount=0.3)

# Verify sparsity (percentage of zero parameters)
sparsity = 100.0 * float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Sparsity achieved: {sparsity:.2f}%")

剪定 vs 関連最適化手法

モデルを効果的に最適化して デプロイするには、 プルーニングを他の手法と区別することが有用である:

  • モデル量子化: 接続を削除する剪定とは異なり、量子化は重みの精度を低下させる(例:32ビット浮動小数点数を8ビット整数に変換)。両手法を組み合わせて使用することで、組み込みシステムにおける効率を最大化できる。
  • 知識蒸留: これは、より大きな「教師」モデルの挙動を模倣するように、より小さな「生徒」モデルを訓練することを含む。 プルーニングは元のモデルを直接修正するのに対し、蒸留は新しいコンパクトなアーキテクチャを訓練する。

包括的なライフサイクル管理(トレーニング、アノテーション、最適化モデルのデプロイを含む)には、 Ultralytics を活用できます。これにより、 データセット管理からONNXやPyTorch 3.0などのハードウェア対応フォーマットでのモデルエクスポートに至るワークフローが簡素化されます。 ONNXTensorRTといったハードウェアに最適化された形式でのモデルエクスポートに至るまでのワークフローを簡素化します。

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

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

今すぐ参加