プルーニングでAIモデルを最適化—複雑さを軽減し、効率を高め、パフォーマンスを犠牲にすることなく、エッジデバイスへの展開を高速化します。
プルーニングは、機械学習における重要なテクニックである。 機械学習において重要な技術である。 機械学習における重要な手法である。 不要なパラメータを削除することで パラメータを削除することである。健全な成長を促すために木から枯れ枝を切り落とすのと同じように、モデルの刈り込みは、以下のようなモデルの重みまたは接続を識別し、除去します。 除去する。 除去する。主な目標は、メモリ使用量と接続を大幅に削減しながら、高い精度を維持する疎なモデルを作成することである。 高い精度を維持しながら、メモリ使用量を大幅に削減し 推論の待ち時間を改善することである。このプロセスは のような洗練されたアーキテクチャを展開するために不可欠である。 Ultralytics YOLO11のような高度なアーキテクチャを ストレージや処理能力が限られているデバイスに
このプロセスは通常、事前に訓練されたモデルから始まる。アルゴリズムはネットワークを分析し、最終的な予測に影響を与える値がゼロに近いか、限定的なパラメータを見つける。 テンソルとして表現される。これらのパラメータは を除去する。接続の削除は一時的にパフォーマンスを低下させる可能性があるため、モデル モデルは通常、微調整と呼ばれるプロセスを経る。 数エポックの間再学習され、残りの重みが調整され、失われた を調整し、失われた精度を回復させる。
剪定には大きく分けて2つのカテゴリーがある:
プルーニングを他のモデル最適化戦略と区別することは重要である。 モデル最適化戦略と区別することが重要である、 と区別することが重要である:
プルーニングは、さまざまな業界でエッジAIを実現する上で重要な役割を果たしている。 実現に重要な役割を果たす:
一方 Ultralytics YOLOモデルはすぐに高度に最適化されます、 開発者は標準のPyTorch ユーティリティを使って刈り込みを試すことができます。次の例は コンピュータビジョンモデルに見られる標準的な畳み込み層に非構造化プルーニングを適用する方法を示します。
import torch
import torch.nn.utils.prune as prune
from ultralytics.nn.modules import Conv
# Initialize a standard convolutional block used in YOLO models
layer = Conv(c1=64, c2=128)
# Apply L1 unstructured pruning to remove 30% of the lowest magnitude weights
prune.l1_unstructured(layer.conv, name="weight", amount=0.3)
# Verify the sparsity (percentage of zero weights)
sparsity = float(torch.sum(layer.conv.weight == 0)) / layer.conv.weight.nelement()
print(f"Layer sparsity achieved: {sparsity:.2%}")
今後予定されているYOLO26のような、効率的なアーキテクチャーの将来的な進歩は、これらの最適化原理をネイティブに統合することを目指している。 最適化の原則をネイティブに統合し、より小さく、より速く、より正確なモデルを設計することを目指している。