Che cos'è l'ottimizzazione dei modelli? 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, 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 machine learning. Perfezionando la struttura e il funzionamento di un modello, l'ottimizzazione consente ai modelli di fornire risultati migliori con minime risorse computazionali e tempi ridotti di addestramento e valutazione.
Questo processo è particolarmente importante in ambiti 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 mantenendo comunque un'elevata accuratezza.
Per ottenere l'ottimizzazione dei modelli si usano comunemente diverse tecniche, tra cui il tuning degli iperparametri, il pruning dei modelli, la quantizzazione dei modelli e la precisione mista. In questo articolo esploreremo queste tecniche e i vantaggi che offrono alle applicazioni di computer vision. Iniziamo!
Comprendere l'ottimizzazione dei modelli#
I modelli di computer vision hanno solitamente livelli profondi e strutture complesse, ottimi per riconoscere schemi intricati nelle immagini, ma possono anche richiedere una notevole potenza di elaborazione. Quando questi modelli vengono distribuiti su dispositivi con hardware limitato, come i telefoni cellulari o i dispositivi edge, possono incontrare determinate difficoltà o limitazioni.
La potenza di elaborazione, la memoria e l'energia limitate di questi dispositivi possono causare cali evidenti nelle prestazioni, poiché i modelli faticano a mantenere il passo. Le tecniche di ottimizzazione dei modelli sono fondamentali per affrontare questi problemi. Aiutano a semplificare il modello, a ridurne le esigenze computazionali e a garantire che continui a funzionare efficacemente anche con risorse limitate. L'ottimizzazione dei modelli può essere ottenuta 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 esamineremo più dettagliatamente nelle sezioni seguenti:
- Tuning degli iperparametri: consiste nella regolazione sistematica degli iperparametri, come il learning rate e la dimensione del batch, per migliorare le prestazioni 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 consiste nel ridurre la precisione dei pesi e delle attivazioni del modello, in genere da 32 bit a 16 o 8 bit, diminuendo significativamente l'occupazione di memoria e i requisiti computazionali.
- Regolazione della precisione: nota anche come addestramento a precisione mista, consiste nell'utilizzare diversi formati di precisione per parti diverse del modello e nell'ottimizzare l'uso delle risorse senza compromettere l'accuratezza.
Spiegazione: gli iperparametri nei modelli di machine learning#
Puoi aiutare un modello ad apprendere e a ottenere risultati migliori regolando i suoi iperparametri, ovvero le impostazioni che determinano il modo in cui il modello apprende dai dati. Il tuning degli iperparametri è una tecnica per ottimizzare queste impostazioni, migliorando l'efficienza e l'accuratezza del modello. A differenza dei parametri appresi dal modello durante l'addestramento, gli iperparametri sono valori preimpostati che guidano il processo di addestramento.
Vediamo alcuni esempi di iperparametri che è possibile regolare:
- Learning rate: questo parametro controlla l'ampiezza del passo con cui il modello regola i propri pesi interni. Un learning rate più alto può velocizzare l'apprendimento, ma rischia di non raggiungere la soluzione ottimale, mentre un learning rate più basso può essere più accurato, ma anche più lento.
- Dimensione del batch: definisce quanti campioni di dati vengono elaborati in ogni fase dell'addestramento. Batch più grandi offrono un apprendimento più stabile, ma richiedono più memoria. I batch più piccoli consentono un addestramento più rapido, ma possono essere meno stabili.
- Epoche: con questo parametro puoi determinare quante volte il modello analizza l'intero dataset. Un numero maggiore di epoche può migliorare l'accuratezza, ma aumenta il rischio di overfitting.
- Dimensione del kernel: definisce la dimensione del filtro nelle reti neurali convoluzionali (CNNs). I kernel più grandi catturano schemi più ampi, ma richiedono una maggiore elaborazione; quelli più piccoli si concentrano sui dettagli più fini.
Come funziona il tuning degli iperparametri#
Il tuning degli iperparametri inizia generalmente definendo un intervallo di possibili valori per ciascun iperparametro. Un algoritmo di ricerca esplora quindi diverse combinazioni all'interno di questi intervalli per individuare le impostazioni che producono le migliori prestazioni.
I metodi di tuning più comuni includono 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 le combinazioni casualmente e spesso individua più rapidamente impostazioni efficaci. L'ottimizzazione bayesiana utilizza un modello probabilistico per prevedere valori promettenti degli iperparametri sulla base dei risultati precedenti. Questo approccio riduce in genere il numero di prove necessarie.
Infine, le prestazioni del modello vengono valutate per ogni combinazione di iperparametri. Il processo viene ripetuto fino al raggiungimento dei risultati desiderati.
Iperparametri e parametri del modello a confronto#
Mentre lavori al tuning degli iperparametri, 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 dimensione del batch. Queste impostazioni rimangono fisse durante l'addestramento e influenzano direttamente il processo di apprendimento. I parametri del modello, invece, vengono appresi dal modello stesso durante l'addestramento. Includono pesi e bias, che si adattano durante l'addestramento del modello e guidano infine le sue previsioni. In sostanza, gli iperparametri definiscono il percorso di apprendimento, mentre i parametri del modello sono il risultato di tale processo.

Fig. 2. Confronto tra parametri e iperparametri.
Perché il pruning dei modelli è 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, soprattutto con le reti neurali profonde, un numero elevato di parametri, come pesi e attivazioni (output intermedi che aiutano a calcolare l'output finale), può aumentare sia la complessità sia i requisiti computazionali. Il pruning contribuisce a semplificare il modello identificando e rimuovendo i parametri che incidono in misura minima sulle prestazioni, producendo un modello più leggero ed efficiente.

Fig. 3. Prima e dopo il pruning del modello.
Dopo l'addestramento del modello, tecniche come il pruning basato sulla magnitudine o l'analisi di sensibilità possono valutare l'importanza di ciascun parametro. I parametri meno importanti vengono quindi sottoposti a pruning mediante una delle tre tecniche principali: pruning dei pesi, pruning dei neuroni o pruning strutturato.
Il pruning dei pesi rimuove le singole connessioni con un impatto minimo sull'output. Il pruning dei neuroni rimuove interi neuroni il cui output contribuisce poco al funzionamento del modello. Il pruning strutturato elimina sezioni più ampie, come i filtri convoluzionali o i neuroni nei livelli completamente connessi, ottimizzando l'efficienza del modello. Una volta completato il pruning, il modello viene riaddestrato per regolare finemente i parametri rimanenti, assicurando che mantenga un'elevata accuratezza in una forma ridotta.
Ridurre la latenza dei modelli di AI 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 valori in virgola mobile ad alta precisione a 32 bit in valori a precisione inferiore, come interi a 16 o 8 bit. Riducendo la precisione in bit, la quantizzazione diminuisce significativamente le dimensioni del modello, l'occupazione di memoria e il costo computazionale.
Nella computer vision, i valori float a 32 bit sono lo standard, ma la conversione a 16 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, diminuendo ulteriormente i requisiti di memoria e di calcolo.

Fig. 4. Esempio di quantizzazione da float a 32 bit a intero a 8 bit.
Come la precisione mista accelera le inferenze dell'AI#
La precisione mista è una tecnica che utilizza diverse precisioni numeriche per varie parti di una rete neurale. Combinando valori a precisione maggiore, come i float a 32 bit, con valori a precisione inferiore, come i float a 16 o 8 bit, la precisione mista consente ai modelli di computer vision di accelerare l'addestramento e ridurre l'uso della memoria senza sacrificare l'accuratezza.
Durante l'addestramento, la precisione mista viene ottenuta utilizzando una precisione inferiore in livelli specifici e mantenendo una precisione maggiore dove necessario all'interno della rete. Questo avviene tramite il casting e il loss scaling. Il casting converte i tipi di dati tra diverse precisioni secondo quanto richiesto dal modello. Il loss scaling adatta la precisione ridotta per prevenire l'underflow numerico e garantire un addestramento stabile. La precisione mista è particolarmente utile per modelli e batch di grandi dimensioni.

Fig. 5. L'addestramento a precisione mista utilizza tipi a virgola mobile a 16 bit (FP16) e a 32 bit (FP32).
Bilanciare accuratezza ed efficienza del modello#
Ora che abbiamo esaminato diverse tecniche di ottimizzazione dei modelli, vediamo 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, nonché il livello di accuratezza richiesto.
Ad esempio, i modelli più piccoli e veloci sono più adatti ai dispositivi mobili con risorse limitate, mentre i modelli più grandi e accurati possono essere utilizzati su sistemi ad alte prestazioni. Ecco come ciascuna tecnica si allinea ai diversi obiettivi:
- Pruning: è ideale per ridurre le dimensioni del modello senza incidere significativamente sull'accuratezza, il che lo rende perfetto per dispositivi con risorse limitate, come i telefoni cellulari o i dispositivi dell'Internet delle cose (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 le GPU e le TPU che supportano operazioni a precisione mista. Viene spesso utilizzata in attività ad alte prestazioni in cui l'efficienza è importante.
- Tuning degli iperparametri: sebbene richieda molte risorse computazionali, è essenziale per le applicazioni che richiedono un'elevata accuratezza, come l'imaging medico o la guida autonoma.
Punti chiave#
L'ottimizzazione dei modelli è una componente fondamentale del machine learning, soprattutto per la distribuzione dell'AI in applicazioni reali. Tecniche come il tuning degli iperparametri, il pruning dei modelli, la quantizzazione e la precisione mista contribuiscono 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, caratteristica ideale per i dispositivi con memoria e potenza di elaborazione limitate. I modelli ottimizzati sono anche più facili da scalare e distribuire su piattaforme diverse, consentendo di realizzare soluzioni di AI efficaci e adattabili a un'ampia gamma di utilizzi.
Visita il repository GitHub di Ultralytics e unisciti alla nostra community per saperne di più sulle applicazioni dell'AI nella produzione e nell'agricoltura.









