Cos'è l'ottimizzazione del modello? Una guida rapida
Scopri come le tecniche di ottimizzazione dei modelli come la regolazione degli iperparametri, il pruning dei modelli e la quantizzazione dei modelli possano aiutare i modelli di visione artificiale a funzionare in modo più efficiente.

L'ottimizzazione dei modelli è un processo che mira a migliorare l'efficienza e le performance dei modelli di machine learning. Affinando la struttura e la funzione di un modello, l'ottimizzazione consente ai modelli di offrire risultati migliori con risorse computazionali minime e tempi ridotti di addestramento e valutazione.
Questo processo è particolarmente importante in campi come la computer vision, dove i modelli richiedono spesso risorse notevoli per analizzare immagini complesse. In ambienti con risorse limitate come dispositivi mobili o sistemi edge, i modelli ottimizzati possono funzionare bene con risorse limitate pur mantenendo l'accuratezza.
Diverse tecniche sono comunemente utilizzate per ottenere l'ottimizzazione dei modelli, tra cui l'hyperparameter tuning, il model pruning, la quantizzazione dei modelli e la precisione mista. In questo articolo esploreremo queste tecniche e i benefici che apportano alle applicazioni di computer vision. Cominciamo!
Comprendere l'ottimizzazione dei modelli#
I modelli di computer vision hanno solitamente layer profondi e strutture complesse che sono ottime per riconoscere pattern intricati nelle immagini, ma possono anche essere piuttosto esigenti in termini di potenza di calcolo. Quando questi modelli vengono distribuiti su dispositivi con hardware limitato, come telefoni cellulari o dispositivi edge, possono incontrare determinate sfide o limitazioni.
Potenza di calcolo, memoria ed energia limitate su questi dispositivi possono portare a cali evidenti delle performance, poiché i modelli faticano a tenere il passo. Le tecniche di ottimizzazione dei modelli sono fondamentali per affrontare questi problemi. Aiutano a snellire il modello, a ridurne le esigenze computazionali e a garantire che possa comunque funzionare in modo efficace, anche con risorse limitate. L'ottimizzazione dei modelli 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.

Fig 1. Motivi per ottimizzare i tuoi modelli. Immagine dell'autore.
Ecco alcune delle tecniche di ottimizzazione dei modelli più comuni, che esploreremo più in dettaglio nelle sezioni seguenti:
- Hyperparameter tuning: comporta la regolazione sistematica degli iperparametri, come il learning rate e la batch size, per migliorare le performance del modello.
- Model pruning: questa tecnica rimuove pesi e connessioni non necessari dalla rete neurale, riducendone la complessità e il costo computazionale.
- Model quantization: la quantizzazione comporta la riduzione della precisione dei pesi e delle attivazioni del modello, tipicamente da 32-bit a 16-bit o 8-bit, riducendo significativamente l'impronta di memoria e i requisiti computazionali.
- Precision adjustments: nota anche come addestramento a precisione mista, comporta l'utilizzo di formati di precisione diversi per diverse parti del modello e l'ottimizzazione dell'utilizzo delle risorse senza compromettere l'accuratezza.
Spiegazione: Gli iperparametri nei modelli di machine learning#
Puoi aiutare un modello ad apprendere e a funzionare meglio sintonizzando i suoi iperparametri, ovvero le impostazioni che definiscono il modo in cui il modello apprende dai dati. L'hyperparameter tuning è 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.
Vediamo alcuni esempi di iperparametri che possono essere regolati:
- Learning rate: questo parametro controlla la dimensione del passo che il modello compie per regolare i suoi pesi interni. Un learning rate più elevato può accelerare l'apprendimento ma rischia di saltare la soluzione ottimale, mentre un valore inferiore può essere più accurato ma più lento.
- Batch size: 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.
- Epochs: puoi determinare quante volte il modello vede il dataset completo usando questo parametro. Un numero maggiore di epoche può migliorare l'accuratezza ma rischia l'overfitting.
- Kernel size: definisce la dimensione del filtro nelle Convolutional Neural Networks (CNN). Kernel più grandi catturano pattern più ampi ma richiedono maggiore elaborazione; kernel più piccoli si concentrano su dettagli più fini.
Come funziona l'ottimizzazione degli iperparametri#
L'hyperparameter tuning inizia generalmente definendo 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 performance.
I metodi di ottimizzazione comuni includono la grid search, la random search e l'ottimizzazione bayesiana. La grid search testa ogni possibile combinazione di valori all'interno degli intervalli specificati. La random search seleziona le combinazioni in modo casuale, trovando spesso impostazioni efficaci più rapidamente. L'ottimizzazione bayesiana utilizza un modello probabilistico per prevedere i valori promettenti degli iperparametri basandosi sui risultati precedenti. Questo approccio solitamente riduce il numero di tentativi necessari.
In definitiva, per ogni combinazione di iperparametri, le performance del modello vengono valutate. Il processo viene ripetuto fino al raggiungimento dei risultati desiderati.
Iperparametri vs. parametri del modello#
Mentre lavori all'hyperparameter tuning, potresti chiederti quale sia la differenza tra gli iperparametri e i 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 batch size. 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 plasmano il percorso di apprendimento, mentre i parametri del modello sono i risultati di quel processo di apprendimento.

Fig 2. Confronto tra parametri e iperparametri.
Perché il pruning del modello è 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 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 richieste computazionali. Il pruning aiuta a snellire il modello identificando e rimuovendo i parametri che contribuiscono minimamente alle performance, risultando in un modello più leggero ed efficiente.

Fig3. Prima e dopo il model pruning.
Dopo che il modello è stato addestrato, tecniche come il pruning basato sulla magnitudine o l'analisi di sensibilità possono valutare l'importanza di ogni parametro. I parametri a bassa importanza vengono quindi rimossi 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ù ampie, come filtri convoluzionali o neuroni nei layer completamente connessi, ottimizzando l'efficienza del modello. Una volta completato il pruning, il modello viene riaddestrato per fare il fine-tune dei parametri rimanenti, assicurando che mantenga un'elevata accuratezza in forma ridotta.
Ridurre la latenza nei modelli AI con la quantizzazione#
La model quantization riduce il numero di bit utilizzati per rappresentare i pesi e le attivazioni di un modello. Solitamente converte valori in virgola mobile a 32-bit ad alta precisione in una precisione inferiore, come interi a 16-bit o 8-bit. Riducendo la precisione in bit, la quantizzazione diminuisce significativamente le dimensioni del modello, l'impronta 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: weight quantization e activation quantization. La weight quantization riduce la precisione dei pesi del modello, bilanciando la riduzione delle dimensioni con l'accuratezza. L'activation quantization riduce la precisione delle attivazioni, diminuendo ulteriormente la memoria e le richieste computazionali.

Fig 4. Un esempio di quantizzazione da float a 32-bit a intero a 8-bit.
Come la precisione mista accelera le inferenze AI#
La mixed precision è una tecnica che utilizza diverse precisioni numeriche per varie parti di una rete neurale. Combinando valori a precisione più elevata, come i float a 32-bit, con valori a 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 di memoria senza sacrificare l'accuratezza.
Durante il training, la precisione mista si ottiene utilizzando una precisione inferiore in strati specifici mantenendo una precisione superiore dove necessario in tutta la rete. Questo avviene tramite casting e loss scaling. Il casting converte i tipi di dati tra diverse precisioni come richiesto dal modello. Il loss scaling 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.

Fig 5. L'addestramento a precisione mista utilizza sia tipi in virgola mobile a 16-bit (FP16) che a 32-bit (FP32).
Bilanciare accuratezza ed efficienza del modello#
Ora che abbiamo trattato diverse tecniche di ottimizzazione dei modelli, discutiamo su come decidere quale utilizzare in base alle tue specifiche esigenze. La scelta dipende da fattori come l'hardware disponibile, i vincoli computazionali e di memoria dell'ambiente di distribuzione e il livello di accuratezza richiesto.
Ad esempio, modelli più piccoli e veloci sono più adatti a 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 con diversi obiettivi:
- Pruning: È ideale per ridurre le dimensioni del modello senza influenzare significativamente l'accuratezza, rendendolo perfetto per dispositivi con risorse limitate come telefoni cellulari o dispositivi Internet of Things (IoT).
- Quantization: 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 calcolo limitate. Funziona bene per applicazioni in cui lievi riduzioni di accuratezza sono accettabili.
- Mixed precision: progettata per modelli su larga scala, questa tecnica riduce l'utilizzo di 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 in cui l'efficienza è importante.
- Hyperparameter tuning: sebbene intensiva dal punto di vista computazionale, è essenziale per applicazioni che richiedono un'elevata accuratezza, come l'imaging medico o la guida autonoma.
Punti chiave#
L'ottimizzazione dei modelli è una parte vitale del machine learning, specialmente per distribuire l'IA 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 performance, l'efficienza e l'utilizzo delle risorse dei modelli di computer vision. Queste ottimizzazioni rendono i modelli più veloci e meno intensivi dal punto di vista delle risorse, il che è ideale per dispositivi con memoria e potenza di elaborazione limitate. I modelli ottimizzati sono anche più facili da scalare e distribuire su diverse piattaforme, consentendo soluzioni IA che siano sia efficaci che adattabili a un'ampia gamma di usi.
Visita il repository GitHub di Ultralytics e unisciti alla nostra community per saperne di più sulle applicazioni dell'IA nella produzione e nell'agricoltura.






