Yolo Vision Shenzhen
Shenzhen
Iscriviti ora
Glossario

Pruning

Scopri come la potatura ottimizza le reti neurali come Ultralytics rimuovendo i parametri ridondanti. Esplora metodi strutturati e non strutturati per l'Edge AI.

Il pruning è una tecnica strategica di ottimizzazione dei modelli utilizzata per ridurre le dimensioni e la complessità computazionale delle reti neurali rimuovendo i parametri non necessari . Proprio come un giardiniere pota i rami morti o troppo cresciuti per aiutare un albero a prosperare, gli algoritmi di pruning identificano ed eliminano i pesi e i bias ridondanti weights and biases che contribuiscono in misura minima al potere predittivo di un modello. L'obiettivo principale è quello di creare un modello compresso e "sparsivo" che mantenga un' elevata precisione consumando significativamente meno memoria ed energia. Questa riduzione è essenziale per migliorare la latenza dell'inferenza, consentendo alle architetture avanzate di funzionare in modo efficiente su hardware con risorse limitate come telefoni cellulari e dispositivi integrati.

Meccanismi e metodologia

I moderni modelli di deep learning sono spesso sovraparametrizzati, il che significa che contengono molte più connessioni di quelle necessarie per risolvere un compito specifico. Il pruning sfrutta questa caratteristica rimuovendo le connessioni che hanno valori vicini allo zero, partendo dal presupposto che abbiano un impatto trascurabile sull'output. Dopo la rimozione dei parametri, il modello viene solitamente sottoposto a un processo di messa a punto, in cui viene brevemente ricalibrato per regolare i pesi rimanenti e recuperare eventuali prestazioni perse. Questo concetto è strettamente correlato alla Lottery Ticket Hypothesis, che suggerisce che le reti di grandi dimensioni contengano sottoreti più piccole e altamente efficienti in grado di raggiungere una precisione simile.

Esistono due categorie principali di strategie di potatura:

  • Potatura non strutturata: questo metodo rimuove i singoli pesi in base alla loro grandezza, indipendentemente dalla loro posizione. Sebbene riduca efficacemente il numero totale di parametri, crea matrici sparse irregolari che le CPU e le GPU standard potrebbero avere difficoltà a elaborare in modo efficiente senza un software specializzato .
  • Potatura strutturata: questo approccio rimuove intere strutture geometriche, come neuroni, canali o livelli all'interno di una rete neurale convoluzionale (CNN). Preservando la struttura della matrice, la potatura strutturata è altamente compatibile con gli acceleratori hardware standard, spesso con conseguenti aumenti immediati della velocità per l' inferenza in tempo reale.

Applicazioni nel mondo reale

La potatura è indispensabile per consentire l'Edge AI in vari settori in cui le risorse hardware sono limitate:

  1. Droni autonomi: i veicoli aerei senza pilota utilizzati per la ricerca e il soccorso si affidano alla visione artificiale per navigare in ambienti complessi . I modelli di rilevamento degli oggetti potati consentono a questi dispositivi di elaborare i feed video localmente in tempo reale, evitando i problemi di latenza associati alla comunicazione cloud .
  2. Assistenza sanitaria mobile: i dispositivi medici portatili per l' analisi ecografica utilizzano modelli semplificati per detect direttamente sul dispositivo. Ciò garantisce la privacy dei dati dei pazienti e consente diagnosi sofisticate in aree remote senza accesso a Internet.

Esempio di implementazione

Sebbene i modelli all'avanguardia come YOLO26 siano progettati per garantire l'efficienza, gli sviluppatori possono applicare il pruning per ottimizzare ulteriormente i livelli utilizzando librerie come PyTorch. L'esempio seguente mostra come applicare il pruning non strutturato a un livello convoluzionale.

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}%")

Potatura vs. tecniche di ottimizzazione correlate

Per ottimizzare efficacemente un modello per l' implementazione, è utile distinguere il pruning dalle altre strategie:

  • Quantizzazione del modello: a differenza del pruning, che rimuove le connessioni, la quantizzazione riduce la precisione dei pesi (ad esempio, convertendo i numeri in virgola mobile a 32 bit in numeri interi a 8 bit). Entrambe le tecniche possono essere utilizzate insieme per massimizzare l'efficienza sui sistemi embedded.
  • Distillazione della conoscenza: consiste nell'addestrare un modello "studente" più piccolo per imitare il comportamento di un modello "insegnante" più grande . Il pruning modifica direttamente il modello originale, mentre la distillazione addestra una nuova architettura compatta.

Per una gestione completa del ciclo di vita, che include formazione, annotazione e implementazione di modelli ottimizzati, gli utenti possono avvalersi della Ultralytics . Ciò semplifica il flusso di lavoro dalla gestione dei set di dati all'esportazione dei modelli in formati compatibili con l'hardware come ONNX o TensorRT.

Unitevi alla comunità di Ultralytics

Entra nel futuro dell'AI. Connettiti, collabora e cresci con innovatori globali

Iscriviti ora