YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

枝刈り

プルーニングが冗長なパラメータを削除することで Ultralytics YOLO26 のようなニューラルネットワークをどのように最適化するかを学びましょう。エッジAIのための構造化および非構造化手法を探求してください。

プルーニングは、不要なパラメータを除去することでニューラルネットワークのサイズと計算複雑性を削減するために使用される戦略的なモデル最適化手法です。庭師が木を繁栄させるために枯れた枝や伸びすぎた枝を剪定するのと同様に、プルーニングアルゴリズムは、モデルの予測能力にほとんど貢献しない冗長なweights and biasesを特定し、除去します。主な目的は、高いaccuracyを維持しつつ、メモリとエネルギー消費を大幅に削減する、圧縮された「スパース」なモデルを作成することです。この削減は、inference latencyの改善に不可欠であり、モバイルフォンや組み込みデバイスのようなリソース制約のあるハードウェア上で、高度なアーキテクチャを効率的に実行することを可能にします。

メカニズムと方法論

現代の深層学習モデルは、多くの場合、過剰にパラメータ化されており、特定のタスクを解決するために必要な接続よりもはるかに多くの接続を含んでいます。プルーニングは、出力への影響がごくわずかであるという仮定のもと、値がゼロに近い接続を削除することで、この特性を利用します。パラメータが削除された後、モデルは通常、 ファインチューニングのプロセスを経て、残りの重みを調整し、失われたパフォーマンスを回復するために短期間再学習されます。この概念は、 宝くじチケット仮説と密接に関連しており、大規模なネットワークが同程度の精度を達成できる、より小さく、非常に効率的なサブネットワークを含んでいることを示唆しています。

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

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

実際のアプリケーション

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

  1. 自律ドローン: 捜索救助に使用される無人航空機は、複雑な環境をナビゲートするためにコンピュータービジョンに依存しています。プルーニングされたオブジェクト検出モデルにより、これらのデバイスは動画フィードをリアルタイムでローカルに処理でき、クラウド通信に伴う遅延の問題を回避します。
  2. モバイルヘルスケア: 超音波分析用の携帯型医療機器は、プルーニングされたモデルを利用してデバイス上で直接異常をdetectします。これにより、患者のデータプライバシーが確保され、インターネットアクセスがない遠隔地でも高度な診断が可能になります。

実施例

YOLO26」のような最先端モデルは効率性を考慮して設計されていますが、開発者は「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といったハードウェアに最適化された形式でのモデルエクスポートに至るまでのワークフローを簡素化します。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。