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

モデルの枝刈り

モデルプルーニングがエッジAIのためのニューラルネットワークのサイズと複雑さをどのように削減するかを学びましょう。モバイルでのより高速な推論のためにUltralytics YOLO26を最適化する戦略を探ります。

モデルプルーニングは、不要なパラメータを体系的に削除することで、 ニューラルネットワークのサイズと計算複雑度を削減するために機械学習で用いられる手法です。庭師が枯れた枝や伸びすぎた枝を剪定して木の成長を促すように、開発者は人工ネットワークをプルーニングして、より高速、小型、かつエネルギー効率の高いものにします。このプロセスは、スマートフォン、組み込みセンサー、エッジコンピューティングハードウェアなど、リソースが限られたデバイスに最新の 深層学習アーキテクチャをデプロイするために不可欠です。

モデル剪定の仕組み

プルーニングの核となる考え方は、ディープニューラルネットワークがしばしば「過剰にパラメータ化されている」という点にあります。これは、特定の課題を解決するために厳密に必要とされるよりもはるかに多くのWeights and Biasesを含んでいることを意味します。学習プロセス中、モデルは膨大な数の接続を学習しますが、すべてが最終出力に等しく貢献するわけではありません。プルーニングアルゴリズムは、学習済みモデルを分析し、これらの冗長または非情報的な接続(通常は重みがゼロに近いもの)を特定して削除します。

剪定されたモデルのライフサイクルは、一般的に以下のステップに従います。

  1. 学習: 複雑な特徴を捉えるために、大規模モデルが収束するまで学習されます。
  2. プルーニング: 重要度の低いパラメーターはゼロに設定されるか、ネットワーク構造から物理的に削除されます。
  3. Fine-Tuning: モデルは、残りのパラメータが調整され、プルーニングフェーズ中に失われた精度を回復できるように、二次的なファインチューニングのラウンドを受けます。

この手法は、Lottery Ticket Hypothesisと関連付けられることが多く、密なネットワークには、単独でトレーニングされた場合に元のモデルと同等の精度を達成できる、より小さく孤立したサブネットワーク(当選チケット)が含まれていると提唱しています。

剪定戦略の種類

プルーニング手法は、除去されるコンポーネントの構造に基づいて一般的に分類されます。

  • 非構造化プルーニング: このアプローチは、しきい値(例:大きさ)に基づいてモデル内の任意の場所の個々の重みを削除します。これによりパラメータ数は効果的に削減されますが、標準的なハードウェアでは効率的に処理することが困難な疎行列が生成されます。特殊なソフトウェアやハードウェアアクセラレータがない場合、非構造化プルーニングは大幅な速度向上をもたらさない可能性があります。
  • 構造化プルーニング: この手法は、畳み込みニューラルネットワーク(CNN)内のチャネル、フィルター、またはレイヤーなど、幾何学的構造全体を削除します。密な行列構造を維持することで、プルーニングされたモデルは標準的なGPUおよびCPUハードウェアとの互換性を保ち、推論レイテンシとスループットの直接的な改善につながります。

実際のアプリケーション

プルーニングはEdge AIにとって重要なイネーブラーであり、クラウド接続が利用できない、または遅すぎる環境で高度なモデルの実行を可能にします。

  • モバイル物体detect: リアルタイム言語翻訳や拡張現実などのモバイルデバイス上のアプリケーションは、バッテリー寿命を維持し、メモリ使用量を削減するためにプルーニングされたモデルを利用します。YOLO26のような最適化されたアーキテクチャは、その固有の効率性から、これらのタスクの基盤としてしばしば好まれます。
  • 自動車の安全性: 自動運転車および自律走行車は、瞬時の意思決定を必要とします。プルーニングされたモデルにより、車載コンピューターは、データをサーバーに送信することによって生じる遅延なしに、歩行者検出用の高解像度カメラフィードを処理できます。
  • 産業IoT: 製造業では、組立ライン上の外観検査システムが軽量モデルを使用して欠陥をdetectします。プルーニングにより、これらのシステムは高価なサーバーラックではなく、費用対効果の高いマイクロコントローラーで実行できるようになります。

剪定 vs 関連最適化手法

モデルプルーニングは強力なツールですが、他のモデル最適化技術と混同されたり、併用されたりすることがよくあります。

  • プルーニング vs. 量子化: プルーニングはモデルのパラメーター(接続)のを削減します。対照的に、モデル量子化は、例えば32ビット浮動小数点数を8ビット整数に変換するなどして、それらのパラメーターの精度を削減します。両者は、モデルデプロイメントの効率を最大化するためにしばしば組み合わされます。
  • プルーニング vs. 知識蒸留: プルーニングは、元のモデルの一部を切り取ることでモデルを修正します。知識蒸留は、より大きな「教師」モデルの動作を模倣するために、まったく新しい、より小さな「生徒」モデルをトレーニングすることを含みます。

実施例

以下のpythonの例は、PyTorchを使用して畳み込み層に非構造化プルーニングを適用する方法を示しています。これは、モデルをONNXのような最適化された形式にエクスポートする前の一般的なステップです。

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

# Initialize a standard convolutional layer
module = nn.Conv2d(in_channels=1, out_channels=20, kernel_size=3)

# Apply unstructured pruning to remove 30% of the connections
# This sets the weights with the lowest L1-norm to zero
prune.l1_unstructured(module, name="weight", amount=0.3)

# Calculate and print the sparsity (percentage of zero elements)
sparsity = 100.0 * float(torch.sum(module.weight == 0)) / module.weight.nelement()
print(f"Layer Sparsity: {sparsity:.2f}%")

トレーニング、評価、デプロイメントを含むデータセットとモデルのライフサイクル全体を管理したいユーザーには、Ultralytics Platformが効率化されたインターフェースを提供します。YOLO26のような高度に最適化されたモデルを作成し、それらをTensorRTやCoreMLのようなハードウェアに優しい形式にエクスポートするプロセスを簡素化します。

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

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