Sintonizzati su YOLO Vision 2025!
25 settembre 2025
10:00 — 18:00 BST
Evento ibrido
Yolo Vision 2024

Cos'è l'ottimizzazione del modello? Una guida rapida

Abirami Vina

5 minuti di lettura

15 novembre 2024

Scopri come le tecniche di ottimizzazione del modello, come la messa a punto degli iperparametri, la potatura del modello e la quantizzazione del modello, possono aiutare i modelli di computer vision a funzionare in modo più efficiente.

L'ottimizzazione del modello è un processo che mira a migliorare l'efficienza e le prestazioni dei modelli di machine learning. Perfezionando la struttura e la funzione di un modello, l'ottimizzazione consente ai modelli di fornire risultati migliori con il minimo di risorse computazionali e tempi di training e valutazione ridotti.

Questo processo è particolarmente importante in settori come la computer vision, dove i modelli spesso richiedono risorse considerevoli 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 pur rimanendo accurati.

Per ottenere l'ottimizzazione del modello vengono comunemente utilizzate diverse tecniche, tra cui la messa a punto 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 computer vision. Iniziamo!

Comprendere l'ottimizzazione del modello

I modelli di computer vision di solito hanno livelli profondi e strutture complesse che sono ottime per riconoscere schemi intricati nelle immagini, ma possono anche essere piuttosto impegnativi in termini di potenza di elaborazione. Quando questi modelli vengono distribuiti su dispositivi con hardware limitato, come telefoni cellulari o dispositivi edge, possono affrontare determinate sfide o limitazioni. 

La potenza di elaborazione, la memoria e l'energia limitate su questi dispositivi possono portare a notevoli cali di prestazioni, poiché i modelli faticano a tenere il passo. Le tecniche di ottimizzazione del modello sono fondamentali per affrontare questi problemi. Aiutano a semplificare il modello, a ridurre le sue esigenze computazionali e a garantire che possa comunque funzionare in modo efficace, anche con risorse limitate. L'ottimizzazione del modello può essere eseguita semplificando l'architettura del modello, riducendo la precisione dei calcoli o rimuovendo componenti non necessari per rendere il modello più leggero e veloce.

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

Ecco alcune delle tecniche di ottimizzazione del modello più comuni, che esploreremo più in dettaglio nelle sezioni seguenti:

  • Messa a punto degli iperparametri: comporta la regolazione sistematica degli iperparametri, come il tasso di apprendimento e la dimensione del batch, per migliorare le prestazioni del modello.
  • Potatura del modello: questa tecnica rimuove i pesi e le connessioni non necessari 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 bit o 8 bit, riducendo significativamente l'ingombro della memoria e i requisiti computazionali.
  • Regolazioni della precisione: nota anche come training a precisione mista, comporta l'utilizzo di diversi formati di precisione per diverse parti del modello e l'ottimizzazione dell'utilizzo delle risorse senza compromettere l'accuratezza.

Spiegazione: gli iperparametri nei modelli di machine learning

È possibile aiutare un modello a imparare e a migliorare le sue prestazioni ottimizzando i suoi iperparametri, ovvero le impostazioni che definiscono il modo in cui il modello apprende dai dati. L'ottimizzazione degli iperparametri è una tecnica per ottimizzare queste impostazioni, migliorando l'efficienza e l'accuratezza del modello. A differenza dei parametri che il modello apprende durante l'addestramento, gli iperparametri sono valori preimpostati che guidano il processo di addestramento.

Analizziamo alcuni esempi di iperparametri che possono essere ottimizzati:

  • Learning rate (tasso di apprendimento): questo parametro controlla la dimensione del passo che il modello compie per regolare i suoi pesi interni. Un learning rate più alto può accelerare l'apprendimento, ma rischia di perdere la soluzione ottimale, mentre un tasso più basso può essere più preciso, ma più lento.
  • Batch size (dimensione del batch): definisce quanti campioni di dati vengono elaborati in ogni fase di addestramento. Batch size più grandi offrono un apprendimento più stabile, ma richiedono più memoria. Batch più piccoli si addestrano più velocemente, ma possono essere meno stabili.
  • Epoche: è possibile determinare quante volte il modello visualizza l'intero dataset utilizzando questo parametro. Un numero maggiore di epoche può migliorare l'accuratezza, ma rischia di causare overfitting.
  • Dimensione del kernel: definisce la dimensione del filtro nelle reti neurali convoluzionali (CNN). Kernel più grandi catturano pattern più ampi, ma richiedono più elaborazione; kernel più piccoli si concentrano su dettagli più fini.

Come funziona l'ottimizzazione degli iperparametri

L'ottimizzazione 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 prestazioni migliori

I metodi di ottimizzazione più comuni includono la ricerca a griglia (grid search), la ricerca casuale (random search) e l'ottimizzazione bayesiana. La ricerca a griglia testa ogni possibile combinazione di valori all'interno degli intervalli specificati. La ricerca casuale seleziona le combinazioni in modo casuale, trovando spesso impostazioni efficaci più rapidamente. L'ottimizzazione bayesiana utilizza un modello probabilistico per prevedere valori di iperparametri promettenti in base ai risultati precedenti. Questo approccio in genere riduce il numero di tentativi necessari. 

In definitiva, per ogni combinazione di iperparametri, le prestazioni del modello vengono valutate. Il processo viene ripetuto fino al raggiungimento dei risultati desiderati.

Iperparametri vs. parametri del modello

Durante l'ottimizzazione degli iperparametri, ci si potrebbe 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 learning rate o la dimensione del batch. Queste impostazioni sono fisse durante l'addestramento e influenzano direttamente il processo di apprendimento. I parametri del modello, d'altra parte, vengono appresi dal modello stesso durante l'addestramento. Questi includono pesi e bias, che si regolano man mano che il modello si addestra e, in definitiva, guidano le sue previsioni. In sostanza, gli iperparametri modellano il percorso di apprendimento, mentre i parametri del modello sono i risultati di tale processo di apprendimento.

__wf_reserved_inherit
Fig. 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 pesi e parametri non necessari da un modello, rendendolo più efficiente. Nella computer vision, specialmente con le reti neurali profonde, un gran numero di parametri, come pesi e attivazioni (output intermedi che aiutano a calcolare l'output finale), può aumentare sia la complessità che le esigenze computazionali. Il pruning aiuta a semplificare 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 il model pruning.

Dopo che il modello è stato addestrato, tecniche come il pruning basato sulla magnitudo o l'analisi di sensitività possono valutare l'importanza di ciascun parametro. I parametri di bassa importanza vengono quindi eliminati, utilizzando una delle tre tecniche principali: weight pruning, neuron pruning o structured pruning. 

Il weight pruning rimuove le singole connessioni con un impatto minimo sull'output. Il neuron pruning rimuove interi neuroni i cui output contribuiscono poco alla funzione del modello. Lo structured pruning elimina sezioni più grandi, come filtri convoluzionali o neuroni in livelli completamente connessi, ottimizzando l'efficienza del modello. Una volta completato il pruning, il modello viene riaddestrato per effettuare il fine-tuning dei parametri rimanenti, assicurando che mantenga un'elevata accuratezza in una 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 interi a precisione inferiore, come interi a 16 bit o 8 bit. Riducendo la precisione dei bit, la quantizzazione riduce significativamente le dimensioni del modello, l'ingombro di memoria e il costo computazionale.

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

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

Come la precisione mista accelera le inferenze dell'IA

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

Durante il training, la precisione mista si ottiene utilizzando una precisione inferiore in layer specifici, mantenendo al contempo una precisione maggiore dove necessario in tutta la rete. Ciò avviene tramite il casting e lo scaling della loss. Il casting converte i tipi di dati tra diverse precisioni come richiesto dal modello. Lo scaling della loss regola la precisione ridotta per prevenire l'underflow numerico, garantendo un training stabile. La precisione mista è particolarmente utile per modelli di grandi dimensioni e batch size elevati.

__wf_reserved_inherit
Fig 5. Il training a precisione mista utilizza sia tipi di dati in virgola mobile a 16 bit (FP16) che a 32 bit (FP32).

Bilanciamento tra accuratezza ed efficienza del modello

Ora che abbiamo trattato diverse tecniche di ottimizzazione del modello, discutiamo come decidere quale utilizzare in base alle proprie esigenze specifiche. La scelta dipende da fattori come l'hardware disponibile, i vincoli computazionali e di memoria dell'ambiente di deployment e il livello di accuratezza richiesto. 

Ad esempio, modelli più piccoli e veloci sono più adatti per 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 a obiettivi diversi:

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

Punti chiave

L'ottimizzazione del modello è una parte fondamentale del machine learning, soprattutto per il deployment dell'AI in applicazioni del mondo reale. Tecniche come l'ottimizzazione degli iperparametri, il pruning del modello, 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 dispendiosi in termini di 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 AI che siano sia efficaci che adattabili a una vasta gamma di usi.

Visita il repository GitHub di Ultralytics e unisciti alla nostra community per saperne di più sulle applicazioni dell'AI nella produzione e nell'agricoltura.

Costruiamo insieme il futuro
dell'AI!

Inizia il tuo viaggio con il futuro del machine learning

Inizia gratis
Link copiato negli appunti