Ottimizza i modelli AI con il pruning: riduci la complessità, aumenta l'efficienza e distribuisci più velocemente sui dispositivi edge senza sacrificare le prestazioni.
Il pruning è una tecnica di ottimizzazione dei modelli utilizzata nell'intelligenza artificiale (AI) e nell'apprendimento automatico (ML) per ridurre le dimensioni e la complessità computazionale dei modelli addestrati. Si tratta di rimuovere selettivamente i parametri, come i pesi o le connessioni all'interno di una rete neurale (NN), che vengono identificati come meno importanti o ridondanti per il compito del modello. L'obiettivo principale è quello di creare modelli più piccoli e veloci che richiedano meno risorse computazionali e memoria, idealmente senza una diminuzione significativa delle prestazioni o dell'accuratezza. Questo processo è una parte fondamentale per una distribuzione efficiente dei modelli, soprattutto su dispositivi con capacità limitate. Mentre "Pruning" è il termine generale,"Model Pruning" si riferisce specificamente all'applicazione di questa tecnica ai modelli ML.
Man mano che i modelli di deep learning (DL) diventano sempre più grandi e complessi per affrontare compiti sofisticati, la loro richiesta di potenza di calcolo, memoria ed energia aumenta in modo significativo. Il pruning affronta direttamente questa sfida rendendo i modelli più leggeri ed efficienti. Questa ottimizzazione porta a diversi vantaggi: riduzione del fabbisogno di memoria, riduzione del consumo energetico durante il funzionamento e riduzione della latenza di inferenza, che è fondamentale per le applicazioni che richiedono un'inferenza in tempo reale. Il pruning è particolarmente utile per l'implementazione di modelli in ambienti con risorse limitate, come i dispositivi mobili, i sistemi embedded e vari scenari di Edge AI in cui l'efficienza è una preoccupazione primaria. Può anche aiutare a ridurre l'overfitting semplificando il modello.
Le tecniche di potatura sono ampiamente applicate in numerosi ambiti dell'intelligenza artificiale. Ecco due esempi concreti:
I metodi di potatura variano, ma in genere rientrano in queste categorie principali:
Il pruning può essere implementato in diverse fasi: prima dell'addestramento (influenzando la progettazione dell'architettura), durante il processo di addestramento o dopo l'addestramento su un modello pre-addestrato, spesso seguito da una messa a punto per recuperare l'accuratezza persa. I principali framework di deep learning come PyTorch e TensorFlow forniscono strumenti e tutorial, come il PyTorch Pruning Tutorial, per implementare varie strategie di potatura.
La potatura è una delle tante tecniche utilizzate per l'ottimizzazione dei modelli. È utile distinguerla dai concetti correlati:
Queste tecniche non si escludono a vicenda e vengono spesso utilizzate in combinazione con il pruning per raggiungere livelli di ottimizzazione maggiori. Ad esempio, un modello potrebbe essere prima potato e poi quantizzato per ottenere la massima efficienza. I modelli ottimizzati possono spesso essere esportati in formati standard quali ONNX utilizzando strumenti come la funzione di esportazione di Ultralytics per ottenere un'ampia compatibilità con i diversi motori di inferenza.
In sintesi, il pruning è una tecnica potente per la creazione di modelli di intelligenza artificiale efficienti e adatti a diverse esigenze di implementazione, svolgendo un ruolo significativo nell'applicazione pratica della computer vision (CV) e di altre attività di ML. Piattaforme come Ultralytics HUB forniscono strumenti e infrastrutture, tra cui il cloud training, che possono facilitare lo sviluppo e l'ottimizzazione di modelli quali YOLOv8 o YOLO11.