Ottimizza i modelli di IA con la potatura: riduci la complessità, aumenta l'efficienza e implementa più velocemente sui dispositivi edge senza sacrificare le prestazioni.
Il pruning è una tecnica critica nell'apprendimento apprendimento automatico che mira a ridurre le dimensioni e la complessità computazionale di una rete neurale (NN) rimuovendo i parametri non necessari. parametri non necessari. Proprio come la potatura dei rami morti di un albero per favorire una crescita sana, la potatura del modello identifica ed elimina i pesi del modello o le connessioni che non sono necessarie. eliminare i pesi o le connessioni del modello che che contribuiscono minimamente all'output del sistema. L'obiettivo principale è quello di creare un modello rado che mantenga un'alta accuratezza, riducendo al contempo in modo significativo l'uso della memoria e di memoria e migliorando la latenza dell'inferenza. Questo processo è Questo processo è essenziale per l'implementazione di architetture sofisticate, quali Ultralytics YOLO11su dispositivi con risorse limitate, dove di memoria e di elaborazione sono limitate.
Il processo inizia in genere con un modello pre-addestrato. Gli algoritmi analizzano la rete per trovare i parametri - spesso rappresentati come tensori - che hanno valori prossimi allo zero o un impatto limitato sulla previsione finale. rappresentati come tensori, che hanno valori prossimi allo zero o un impatto limitato sulla previsione finale. Questi parametri vengono rimossi o "azzerati". Dato che la rimozione delle connessioni può temporaneamente degradare le prestazioni, il modello di solito viene sottoposto a un processo chiamato " fine-tuning", in cui viene riaddestrato per alcune epoche per consentire ai pesi rimanenti di adattarsi e recuperare la pesi rimanenti di adattarsi e recuperare l'accuratezza perduta.
Esistono due categorie principali di potatura:
È importante distinguere la potatura da altre strategie di strategie di ottimizzazione del modello, anche se spesso vengono utilizzate insieme:
La potatura svolge un ruolo fondamentale nell'abilitare l'IA Edge in vari settori:
Mentre Ultralytics YOLO sono altamente ottimizzati in partenza, gli sviluppatori possono sperimentare la potatura utilizzando le utility standard di PyTorch . L'esempio seguente mostra come applicare il pruning non strutturato a un livello convoluzionale standard presente nei modelli di visione artificiale.
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%}")
I futuri progressi nell'architettura efficiente, come l'imminente YOLO26, mirano a integrare questi principi di ottimizzazione in modo nativo, creando modelli più piccoli, più veloci e più accurati. principi di ottimizzazione, creando modelli più piccoli, più veloci e più precisi.