Glossario

Modello di potatura

Ottimizzare i modelli di apprendimento automatico con il model pruning. Ottenete un'inferenza più rapida, un uso ridotto della memoria e un'efficienza energetica per le implementazioni con risorse limitate.

Il model pruning è una tecnica di ottimizzazione del modello che rende le reti neurali più piccole e più efficienti dal punto di vista computazionale. L'idea di base è quella di identificare e rimuovere i parametri ridondanti o non importanti (pesi, neuroni o canali) da un modello addestrato. Questo processo riduce le dimensioni del modello e può accelerare significativamente l'inferenza, rendendolo ideale per l'implementazione su dispositivi edge con memoria e potenza di elaborazione limitate. Il concetto si basa sull'osservazione che molti modelli di grandi dimensioni sono eccessivamente parametrizzati, ovvero contengono componenti che contribuiscono in misura minima alla predizione finale. Documenti fondamentali come Optimal Brain Damage hanno stabilito subito che non tutti i parametri sono uguali.

Tipi di potatura del modello

Le tecniche di potatura dei modelli sono tipicamente classificate in base alla granularità di ciò che viene rimosso dalla rete:

  • Potenziamento dei pesi (non strutturato): Questo è il metodo più fine, in cui i singoli pesi del modello con valori inferiori a una certa soglia vengono azzerati. In questo modo si crea un modello "spartano" che può essere altamente compresso. Tuttavia, spesso richiede hardware o librerie software specializzate, come gli strumenti di NVIDIA per i modelli sparsi, per ottenere accelerazioni significative durante l'inferenza.
  • Pruning dei neuroni: In questo approccio, interi neuroni e tutte le loro connessioni in entrata e in uscita vengono rimossi se ritenuti non importanti. Si tratta di una forma di potatura più strutturata rispetto alla rimozione di singoli pesi.
  • Pruning di filtri/canali (strutturato): Particolarmente importante per le reti neurali convoluzionali (CNN), questo metodo rimuove interi filtri o canali. Poiché preserva la struttura densa e regolare degli strati della rete, questo approccio spesso porta a un aumento diretto delle prestazioni su hardware standard senza bisogno di librerie specializzate. Strumenti come DeepSparse di Neural Magic sono progettati per accelerare questi modelli sparsi sulle CPU.

Dopo la potatura, i modelli sono in genere sottoposti a una messa a punto, che comporta il riaddestramento della rete più piccola per alcune epoche, per recuperare l'accuratezza persa durante la rimozione dei parametri. La famosa ipotesi del biglietto della lotteria suggerisce che all'interno di una rete di grandi dimensioni esiste una sottorete più piccola che può ottenere prestazioni simili se addestrata da zero. Framework come PyTorch offrono strumenti integrati per l'implementazione, come dimostrato nel tutorial ufficiale di PyTorch sulla potatura.

Applicazioni del mondo reale

Il pruning dei modelli è fondamentale per l'impiego di modelli di intelligenza artificiale efficienti in vari scenari:

  1. Ottimizzazione del rilevamento di oggetti su dispositivi edge: Modelli come Ultralytics YOLO possono essere potati per essere eseguiti in modo efficiente per le attività di rilevamento degli oggetti su hardware a risorse limitate come Raspberry Pi o NVIDIA Jetson. Ciò consente di realizzare applicazioni in tempo reale come la gestione del traffico, la sorveglianza intelligente e l'integrazione della computer vision nella robotica.
  2. Distribuzione locale di modelli linguistici di grandi dimensioni (LLM): Il pruning viene utilizzato per ridurre i modelli di grandi dimensioni basati sull'architettura Transformer, consentendone l'esecuzione su dispositivi come gli smartphone per l'elaborazione del linguaggio naturale (NLP). Questo approccio, a volte combinato con altre tecniche come la quantizzazione, consente di creare potenti assistenti AI e applicazioni di traduzione sul dispositivo, migliorando la privacy dei dati e riducendo la latenza. Ricerche e strumenti di organizzazioni come Hugging Face esplorano il pruning LLM.

Pruning e altre tecniche di ottimizzazione

Il pruning dei modelli è una delle diverse tecniche complementari di ottimizzazione dei modelli:

  • Quantizzazione del modello: Questa tecnica riduce la precisione numerica dei pesi e delle attivazioni del modello (ad esempio, da numeri in virgola mobile a 32 bit a numeri interi a 8 bit). A differenza della potatura, che elimina i parametri, la quantizzazione riduce le dimensioni dei parametri esistenti. Spesso viene applicata dopo il pruning per ottenere la massima ottimizzazione, soprattutto quando si punta su hardware con supporto specializzato come TensorRT.
  • Distillazione della conoscenza: Questo metodo prevede l'addestramento di un modello "studente" più piccolo per imitare l'output di un modello "insegnante" più grande e pre-addestrato. L'obiettivo è quello di trasferire la conoscenza appresa dall'insegnante in un'architettura più compatta. Questo metodo è diverso dalla potatura, che riduce un modello già addestrato piuttosto che addestrarne uno nuovo.

In definitiva, queste tecniche possono essere utilizzate in combinazione per creare modelli altamente efficienti. Una volta ottimizzato, un modello può essere esportato in formati standard come ONNX utilizzando le opzioni di esportazione di Ultralytics per un'ampia distribuzione su diversi motori di inferenza. Piattaforme come Ultralytics HUB forniscono gli strumenti per gestire l'intero ciclo di vita dei modelli di computer vision, dall'addestramento alla distribuzione ottimizzata.

Unitevi alla comunità di Ultralytics

Entrate a far parte del futuro dell'IA. Connettetevi, collaborate e crescete con gli innovatori globali.

Iscriviti ora
Link copiato negli appunti