Che cos'è l'ottimizzazione dei modelli? Una guida rapida

Abirami Vina

5 minuti di lettura

15 novembre 2024

Scoprite come le tecniche di ottimizzazione dei modelli, come la regolazione degli iperparametri, il pruning dei modelli e la quantizzazione dei modelli, possono aiutare i modelli di computer vision a funzionare in modo più efficiente.

L'ottimizzazione dei modelli è un processo che mira a migliorare l'efficienza e le prestazioni dei modelli di apprendimento automatico. Affinando la struttura e la funzione di un modello, l'ottimizzazione consente ai modelli di fornire risultati migliori con risorse computazionali minime e tempi di formazione e valutazione ridotti.

Questo processo è particolarmente importante in campi come la computer vision, dove i modelli spesso richiedono risorse sostanziali per analizzare immagini complesse. In ambienti con risorse limitate, come i dispositivi mobili o i sistemi edge, i modelli ottimizzati possono funzionare bene con risorse limitate ed essere comunque accurati.

Per ottenere l'ottimizzazione del modello vengono comunemente utilizzate diverse tecniche, tra cui la regolazione degli iperparametri, la potatura del modello, la quantizzazione del modello e la precisione mista. In questo articolo esploreremo queste tecniche e i vantaggi che apportano alle applicazioni di visione artificiale. Iniziamo!

Comprendere l'ottimizzazione del modello

I modelli di visione computerizzata hanno di solito strati profondi e strutture complesse che sono ottime per riconoscere modelli intricati nelle immagini, ma possono anche essere piuttosto impegnativi in termini di potenza di elaborazione. Quando questi modelli vengono implementati su dispositivi con hardware limitato, come i telefoni cellulari o i dispositivi edge, possono incontrare alcune sfide o limitazioni. 

La potenza di elaborazione, la memoria e l'energia limitate di questi dispositivi possono portare a notevoli cali di prestazioni, in quanto i modelli faticano a tenere il passo. Le tecniche di ottimizzazione dei modelli sono fondamentali per affrontare questi problemi. Aiutano a semplificare il modello, a ridurne il fabbisogno computazionale e a garantire che possa continuare a funzionare efficacemente anche con risorse limitate. L'ottimizzazione del modello può essere effettuata semplificando l'architettura del modello, riducendo la precisione dei calcoli o eliminando i componenti non necessari per rendere il modello più leggero e veloce.

__wf_reserved_inherit
Figura 1. Motivi per ottimizzare i modelli. Immagine dell'autore.

Ecco alcune delle tecniche più comuni di ottimizzazione dei modelli, che verranno analizzate in dettaglio nelle sezioni successive:

  • Sintonizzazione dell'iperparametro: Comporta la regolazione sistematica degli iperparametri, come il tasso di apprendimento e la dimensione del batch, per migliorare le prestazioni del modello.
  • Modello di potatura: Questa tecnica rimuove i pesi e le connessioni non necessarie dalla rete neurale, riducendone la complessità e il costo computazionale.
  • Quantizzazione del modello: La quantizzazione comporta la riduzione della precisione dei pesi e delle attivazioni del modello, in genere da 32 bit a 16 o 8 bit, riducendo in modo significativo l'ingombro in memoria e i requisiti di calcolo.
  • Regolazioni di precisione: Conosciuta anche come formazione a precisione mista, prevede l'uso di formati di precisione diversi per le varie parti del modello e l'ottimizzazione dell'uso delle risorse senza compromettere l'accuratezza.

Spiegato: Iperparametri nei modelli di apprendimento automatico

È possibile aiutare un modello ad apprendere e a ottenere prestazioni migliori regolando i suoi iperparametri, ovvero le impostazioni che determinano il modo in cui il modello apprende dai dati. La regolazione degli iperparametri è una tecnica per ottimizzare queste impostazioni, migliorando l'efficienza e la precisione del modello. A differenza dei parametri che il modello apprende durante l'addestramento, gli iperparametri sono valori preimpostati che guidano il processo di addestramento.

Vediamo alcuni esempi di iperparametri che possono essere regolati:

  • Velocità di apprendimento: Questo parametro controlla la dimensione del passo che il modello impiega per regolare i suoi pesi interni. Un tasso di apprendimento più alto può accelerare l'apprendimento ma rischia di non trovare la soluzione ottimale, mentre un tasso più basso può essere più accurato ma più lento.
  • Dimensione del lotto: Definisce il numero di campioni di dati elaborati in ogni fase di addestramento. Batch più grandi offrono un apprendimento più stabile, ma richiedono più memoria. I lotti più piccoli si addestrano più velocemente, ma possono essere meno stabili.
  • Epoche: con questo parametro è possibile stabilire quante volte il modello vede l'intero set di dati. Un numero maggiore di epoche può migliorare l'accuratezza, ma si rischia un overfitting.
  • Dimensione del kernel: Definisce la dimensione del filtro nelle reti neurali convoluzionali (CNN). I kernel più grandi catturano modelli più ampi, ma richiedono un'elaborazione maggiore; i kernel più piccoli si concentrano sui dettagli più fini.

Come funziona la regolazione degli iperparametri

La regolazione degli iperparametri inizia generalmente con la definizione di un intervallo di valori possibili per ciascun iperparametro. Un algoritmo di ricerca esplora quindi diverse combinazioni all'interno di questi intervalli per identificare le impostazioni che producono le migliori prestazioni

I metodi di regolazione più comuni sono la ricerca a griglia, la ricerca casuale e l'ottimizzazione bayesiana. La ricerca a griglia verifica ogni possibile combinazione di valori all'interno degli intervalli specificati. La ricerca casuale seleziona combinazioni a caso, trovando spesso più rapidamente impostazioni efficaci. L'ottimizzazione bayesiana utilizza un modello probabilistico per prevedere i valori promettenti degli iperparametri in base ai risultati precedenti. Questo approccio riduce in genere il numero di prove necessarie. 

Infine, per ogni combinazione di iperparametri, si valutano le prestazioni del modello. Il processo viene ripetuto fino al raggiungimento dei risultati desiderati.

Iperparametri e parametri del modello

Mentre si lavora alla regolazione degli iperparametri, ci si può chiedere quale sia la differenza tra iperparametri e parametri del modello

Gli iperparametri sono valori impostati prima dell'addestramento che controllano il modo in cui il modello apprende, come il tasso di apprendimento o la dimensione del batch. Queste impostazioni vengono fissate durante l'addestramento e influenzano direttamente il processo di apprendimento. I parametri del modello, invece, sono appresi dal modello stesso durante l'addestramento. Questi includono i pesi e le polarizzazioni, che si regolano durante l'addestramento del modello e in ultima analisi guidano le sue previsioni. In sostanza, gli iperparametri danno forma al percorso di apprendimento, mentre i parametri del modello sono i risultati del processo di apprendimento.

__wf_reserved_inherit
Figura 2. Confronto tra parametri e iperparametri. 

Perché il model pruning è importante nel deep learning

Il model pruning è una tecnica di riduzione delle dimensioni che rimuove i pesi e i parametri non necessari da un modello, rendendolo più efficiente. Nella computer vision, soprattutto con le reti neurali profonde, un gran numero di parametri, come i pesi e le attivazioni (output intermedi che aiutano a calcolare l'output finale), può aumentare la complessità e la richiesta di calcolo. La potatura aiuta a snellire il modello identificando e rimuovendo i parametri che contribuiscono minimamente alle prestazioni, ottenendo un modello più leggero ed efficiente.

__wf_reserved_inherit
Fig. 3. Prima e dopo la potatura del modello.

Dopo l'addestramento del modello, tecniche come il pruning basato sulla magnitudo o l'analisi della sensibilità possono valutare l'importanza di ciascun parametro. I parametri di scarsa importanza vengono quindi potati, utilizzando una delle tre tecniche principali: potatura dei pesi, potatura dei neuroni o potatura strutturata. 

Il pruning dei pesi rimuove le singole connessioni con un impatto minimo sull'output. Il pruning dei neuroni elimina interi neuroni le cui uscite contribuiscono poco alla funzione del modello. Il pruning strutturato elimina sezioni più ampie, come i filtri convoluzionali o i neuroni in strati completamente connessi, ottimizzando l'efficienza del modello. Una volta completata la potatura, il modello viene riqualificato per mettere a punto i parametri rimanenti, assicurando che mantenga un'elevata accuratezza in forma ridotta.

Riduzione della latenza nei modelli di intelligenza artificiale con la quantizzazione

La quantizzazione del modello riduce il numero di bit utilizzati per rappresentare i pesi e le attivazioni di un modello. In genere converte i valori in virgola mobile a 32 bit ad alta precisione in valori a bassa precisione, come gli interi a 16 o 8 bit. Riducendo la precisione dei bit, la quantizzazione riduce significativamente le dimensioni del modello, l'ingombro in memoria e il costo computazionale.

Nella computer vision, i float a 32 bit sono standard, ma la conversione a 16 o 8 bit può migliorare l'efficienza. Esistono due tipi principali di quantizzazione: la quantizzazione del peso e la quantizzazione dell'attivazione. La quantizzazione del peso riduce la precisione dei pesi del modello, bilanciando la riduzione delle dimensioni con la precisione. La quantizzazione dell'attivazione riduce la precisione delle attivazioni, riducendo ulteriormente i requisiti di memoria e di calcolo.

__wf_reserved_inherit
Figura 4. Un esempio di quantizzazione da un float a 32 bit a un intero a 8 bit.

Come la precisione mista accelera le inferenze dell'intelligenza artificiale

La precisione mista è una tecnica che utilizza precisioni numeriche diverse per le varie parti di una rete neurale. Combinando valori di maggiore precisione, come i float a 32 bit, con valori di minore precisione, come i float a 16 o 8 bit, la precisione mista consente ai modelli di computer vision di accelerare l'addestramento e di ridurre l'uso della memoria senza sacrificare la precisione.

Durante l'addestramento, la precisione mista viene ottenuta utilizzando una precisione minore in strati specifici e mantenendo una precisione maggiore dove necessario in tutta la rete. Ciò avviene attraverso il casting e il loss scaling. Il casting converte i tipi di dati tra diverse precisioni, come richiesto dal modello. Il loss scaling regola la precisione ridotta per evitare l'underflow numerico, garantendo una formazione stabile. La precisione mista è particolarmente utile per i modelli di grandi dimensioni e per i batch di grandi dimensioni.

__wf_reserved_inherit
Figura 5. L'addestramento a precisione mista utilizza sia i tipi a virgola mobile a 16 bit (FP16) che a 32 bit (FP32).

Bilanciare l'accuratezza del modello e l'efficienza

Ora che abbiamo trattato diverse tecniche di ottimizzazione dei modelli, discutiamo di come decidere quale utilizzare in base alle vostre esigenze specifiche. La scelta dipende da fattori quali l'hardware disponibile, i vincoli di calcolo e di memoria dell'ambiente di implementazione e il livello di precisione richiesto. 

Ad esempio, modelli più piccoli e veloci sono più adatti ai dispositivi mobili con risorse limitate, mentre modelli più grandi e accurati possono essere utilizzati su sistemi ad alte prestazioni. Ecco come ogni tecnica si allinea ai diversi obiettivi:

  • Pruning: È ideale per ridurre le dimensioni del modello senza impattare in modo significativo sull'accuratezza, rendendolo perfetto per i dispositivi con risorse limitate come i telefoni cellulari o i dispositivi Internet of Things (IoT).
  • Quantizzazione: Un'ottima opzione per ridurre le dimensioni del modello e velocizzare l'inferenza, in particolare su dispositivi mobili e sistemi embedded con memoria e potenza di elaborazione limitate. Funziona bene per le applicazioni in cui sono accettabili lievi riduzioni dell'accuratezza.
  • Precisione mista: Progettata per modelli su larga scala, questa tecnica riduce l'uso della memoria e accelera l'addestramento su hardware come GPU e TPU che supportano operazioni a precisione mista. Viene spesso utilizzata in attività ad alte prestazioni dove l'efficienza è importante.
  • Regolazione degli iperparametri: Pur essendo computazionalmente intensiva, è essenziale per le applicazioni che richiedono un'elevata precisione, come l'imaging medico o la guida autonoma.

Punti di forza

L'ottimizzazione dei modelli è una parte vitale dell'apprendimento automatico, soprattutto per l'impiego dell'IA in applicazioni reali. Tecniche come la regolazione degli iperparametri, il pruning dei modelli, la quantizzazione e la precisione mista aiutano a migliorare le prestazioni, l'efficienza e l'uso delle risorse dei modelli di computer vision. Queste ottimizzazioni rendono i modelli più veloci e meno impegnativi dal punto di vista delle risorse, il che è ideale per i dispositivi con memoria e potenza di elaborazione limitate. I modelli ottimizzati sono anche più facili da scalare e distribuire su diverse piattaforme, consentendo soluzioni di intelligenza artificiale efficaci e adattabili a un'ampia gamma di utilizzi.

Visitate il repository GitHub di Ultralytics e unitevi alla nostra comunità per saperne di più sulle applicazioni dell'IA nel settore manifatturiero e agricolo.

Costruiamo insieme il futuro
dell'IA!

Iniziate il vostro viaggio nel futuro dell'apprendimento automatico

Iniziare gratuitamente
Link copiato negli appunti