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 il funzionamento di un modello, l'ottimizzazione permette ai modelli di fornire risultati migliori con risorse computazionali minime e tempi ridotti di training e valutazione.
Questo processo è particolarmente importante in campi come la computer vision, dove i modelli richiedono spesso risorse sostanziali 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 rimanendo accurati.
Diverse tecniche sono comunemente utilizzate per ottenere l'ottimizzazione dei modelli, tra cui l'ottimizzazione degli iperparametri, il pruning 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!
Link to this sectionComprendere l'ottimizzazione dei modelli#
I modelli di computer vision hanno solitamente deep layers e strutture complesse ottimali per riconoscere pattern intricati nelle immagini, ma possono anche essere piuttosto esigenti in termini di potenza di elaborazione. Quando questi modelli vengono distribuiti su dispositivi con hardware limitato, come telefoni cellulari o dispositivi edge, possono affrontare alcune sfide o limitazioni.
La potenza di elaborazione, la memoria e l'energia limitate su questi dispositivi possono portare a cali evidenti nelle 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 necessità computazionali e a garantire che possa ancora funzionare efficacemente, anche con risorse limitate. L'ottimizzazione dei modelli può essere effettuata 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:
- Ottimizzazione degli iperparametri: comporta la regolazione sistematica degli iperparametri, come il learning rate e la batch size, per migliorare le performance del modello.
- Pruning del modello: questa tecnica rimuove pesi e 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, tipicamente da 32-bit a 16-bit o 8-bit, riducendo significativamente l'impronta di memoria e i requisiti computazionali.
- Regolazioni della precisione: Nota anche come training a precisione mista, prevede l'utilizzo di diversi formati di precisione per diverse parti del modello e l'ottimizzazione dell'utilizzo delle risorse senza compromettere l'accuratezza.
Link to this sectionSpiegazione: Gli iperparametri nei modelli di machine learning#
Puoi aiutare un modello a imparare e a performare meglio regolando i suoi iperparametri: impostazioni che modellano il modo in cui il modello impara 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 il training, gli iperparametri sono valori preimpostati che guidano il processo di training.
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ù alto può accelerare l'apprendimento ma rischia di mancare la soluzione ottimale, mentre un rate più basso può essere più accurato ma più lento.
- Batch size: definisce quanti campioni di dati vengono elaborati in ogni passaggio di training. 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 l'intero dataset utilizzando questo parametro. Più epoche possono migliorare l'accuratezza ma rischiano l'overfitting.
- Kernel size: definisce la dimensione del filtro nelle Convolutional Neural Networks (CNN). Kernel più grandi catturano pattern più ampi ma richiedono più elaborazione; kernel più piccoli si concentrano su dettagli più fini.
Link to this sectionCome funziona l'ottimizzazione degli iperparametri#
L'ottimizzazione degli iperparametri inizia generalmente definendo un intervallo di valori possibili per ogni 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 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 finché non si ottengono i risultati desiderati.
Link to this sectionIperparametri vs. parametri del modello#
Mentre lavori all'ottimizzazione degli iperparametri, potresti chiederti quale sia la differenza tra iperparametri e parametri del modello.
Gli iperparametri sono valori impostati prima del training che controllano come il modello impara, come il learning rate o la batch size. Queste impostazioni sono fisse durante il training e influenzano direttamente il processo di apprendimento. I parametri del modello, d'altra parte, vengono appresi dal modello stesso durante il training. Questi includono pesi e biases, che si regolano mentre il modello si addestra e in definitiva guidano le sue predizioni. In sostanza, gli iperparametri danno forma al percorso di apprendimento, mentre i parametri del modello sono i risultati di quel processo di apprendimento.

Fig 2. Confronto tra Parametri e Iperparametri.
Link to this sectionPerché il pruning del modello è importante nel deep learning#
Il pruning del modello è 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 neural networks 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 pruning del modello.
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ù grandi, come filtri convoluzionali o neuroni in strati densamente connessi, ottimizzando l'efficienza del modello. Una volta completato il pruning, il modello viene riaddestrato per fine-tune i parametri rimanenti, garantendo che mantenga un'elevata accuratezza in una forma ridotta.
Link to this sectionRidurre la latenza nei modelli AI con la quantizzazione#
La quantizzazione del modello riduce il numero di bit utilizzati per rappresentare i pesi e le attivazioni di un modello. Tipicamente 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 dei 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 abbassa la precisione dei pesi del modello, bilanciando la riduzione delle dimensioni con l'accuratezza. La 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.
Link to this sectionCome la precisione mista accelera le inferenze AI#
La precisione mista è 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 rende possibile ai modelli di computer vision di accelerare il training 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. Il training a precisione mista utilizza sia tipi in virgola mobile a 16-bit (FP16) che a 32-bit (FP32).
Link to this sectionBilanciare accuratezza ed efficienza del modello#
Ora che abbiamo coperto diverse tecniche di ottimizzazione dei modelli, discutiamo come decidere quale utilizzare in base alle tue esigenze specifiche. 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.
Per 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 performance. Ecco come ogni tecnica si allinea con obiettivi diversi:
- 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).
- Quantizzazione: Un'ottima opzione per restringere le dimensioni del modello e velocizzare l'inferenza, particolarmente su dispositivi mobili e sistemi embedded con memoria e potenza di elaborazione limitate. Funziona bene per applicazioni in cui lievi riduzioni dell'accuratezza sono accettabili.
- Precisione mista: Progettata per modelli su larga scala, questa tecnica riduce l'utilizzo di memoria e accelera il training su hardware come GPU e TPU che supportano operazioni a precisione mista. È spesso utilizzata in attività ad alte performance dove l'efficienza è importante.
- Ottimizzazione degli iperparametri: Sebbene computazionalmente intensiva, è essenziale per applicazioni che richiedono un'elevata accuratezza, come l'imaging medico o la guida autonoma.
Link to this sectionPunti 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 IA nel settore manifatturiero e nell'agricoltura.






