Che cos'è l'ottimizzazione dei modelli? Una guida rapida
Scopri come le tecniche di ottimizzazione dei modelli, come la regolazione degli iperparametri, il pruning e la quantizzazione, possono rendere più efficienti i modelli di visione artificiale.
Abirami Vina10 min di lettura
L'ottimizzazione dei modelli è un processo che mira a migliorare l'efficienza e le prestazioni dei modelli di apprendimento automatico. Affinando la struttura e il funzionamento di un modello, l'ottimizzazione consente ai modelli di ottenere risultati migliori con risorse computazionali minime e tempi di addestramento e valutazione ridotti.
Questo processo è particolarmente importante in ambiti come la visione artificiale, dove i modelli richiedono spesso risorse notevoli 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 ottimizzare i modelli si usano comunemente diverse tecniche, tra cui la regolazione degli iperparametri, il pruning dei modelli, la quantizzazione dei modelli e la precisione mista. In questo articolo esploreremo queste tecniche e i vantaggi che apportano alle applicazioni di visione artificiale.
Capire l'ottimizzazione dei modelli#
I modelli di visione artificiale hanno solitamente livelli profondi e strutture complesse, ideali per riconoscere schemi intricati nelle immagini, ma possono richiedere molta potenza di elaborazione. Quando questi modelli vengono distribuiti su dispositivi con hardware limitato, come i telefoni cellulari o i dispositivi edge, possono incontrare difficoltà o limitazioni.
La potenza di elaborazione, la memoria e l'energia limitate di questi dispositivi possono causare cali evidenti delle prestazioni, perché i modelli faticano a tenere il passo. Le tecniche di ottimizzazione dei modelli sono fondamentali per affrontare questi problemi. Aiutano a snellire il modello, ridurne il fabbisogno computazionale e garantire che continui a funzionare efficacemente anche con risorse limitate. L'ottimizzazione di un modello può avvenire semplificandone l'architettura, riducendo la precisione numerica dei calcoli o rimuovendo componenti non necessari per renderlo più leggero e veloce.

Fig. 1. Motivi per ottimizzare i modelli. Immagine dell'autore.
Ecco alcune delle tecniche di ottimizzazione dei modelli più comuni, che approfondiremo nelle sezioni seguenti:
- Regolazione degli iperparametri: consiste nel modificare sistematicamente gli iperparametri, come il tasso di apprendimento e la dimensione del batch, per migliorare le prestazioni del modello.
- Potatura del modello: questa tecnica rimuove pesi e connessioni superflui dalla rete neurale, riducendone la complessità e il costo computazionale.
- Quantizzazione dei modelli: la quantizzazione riduce la precisione dei pesi e delle attivazioni del modello, in genere da 32 bit a 16 o 8 bit, riducendo notevolmente l'ingombro in memoria e i requisiti computazionali.
- Regolazione della precisione: nota anche come addestramento a precisione mista, consiste nell'utilizzare formati di precisione diversi per le varie parti del modello e nell'ottimizzare l'uso delle risorse senza compromettere l'accuratezza.
Spiegazione degli iperparametri nei modelli di apprendimento automatico#
Puoi aiutare un modello ad apprendere e a ottenere prestazioni migliori regolando i suoi iperparametri, ovvero le impostazioni che determinano come apprende dai dati. La regolazione degli iperparametri è una tecnica che ottimizza queste impostazioni e migliora 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 possono essere regolati:
- Tasso di apprendimento: questo parametro controlla l'ampiezza del passo con cui il modello modifica i propri pesi interni. Un tasso di apprendimento più alto può accelerare l'apprendimento, ma comporta il rischio di non raggiungere la soluzione ottimale; un tasso più basso può offrire maggiore precisione, ma richiede più tempo.
- Dimensione del batch: definisce quanti campioni di dati vengono elaborati a ogni passaggio di addestramento. I batch più grandi favoriscono un apprendimento più stabile, ma richiedono più memoria. I batch più piccoli si addestrano più velocemente, ma possono essere meno stabili.
- Epoche: questo parametro consente di determinare quante volte il modello esamina l'intero set di dati. Un numero maggiore di epoche può migliorare l'accuratezza, ma comporta il rischio di overfitting.
- Dimensione del kernel: definisce la dimensione del filtro nelle reti neurali convoluzionali (CNNs). I kernel più grandi rilevano schemi più ampi, ma richiedono più elaborazione; quelli più piccoli si concentrano sui dettagli più fini.
Come funziona la regolazione degli iperparametri#
La regolazione degli iperparametri inizia in genere definendo un intervallo di valori possibili per ciascun iperparametro. Un algoritmo di ricerca esplora quindi diverse combinazioni all'interno di questi intervalli per individuare le impostazioni che producono le prestazioni migliori.
I metodi di regolazione più comuni includono la ricerca a griglia, la ricerca casuale e l'ottimizzazione bayesiana. La ricerca a griglia verifica tutte le possibili combinazioni di valori negli intervalli specificati. La ricerca casuale seleziona combinazioni a caso e spesso individua più rapidamente impostazioni efficaci. L'ottimizzazione bayesiana usa 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, si valutano le prestazioni del modello per ogni combinazione di iperparametri. Il processo viene ripetuto fino a ottenere i risultati desiderati.
Iperparametri e parametri del modello a confronto#
Mentre lavori alla regolazione degli iperparametri, potresti chiederti qual è 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 tasso di apprendimento o la dimensione del batch. Queste impostazioni restano fisse durante l'addestramento e influenzano direttamente il processo di apprendimento. I parametri del modello, invece, vengono appresi dal modello stesso durante l'addestramento. Tra questi rientrano pesi e bias, che si modificano durante l'addestramento del modello e ne guidano infine le 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é la potatura dei modelli è importante nel deep learning#
Il pruning dei modelli è una tecnica di riduzione delle dimensioni che rimuove pesi e parametri non necessari da un modello, rendendolo più efficiente. Nella visione artificiale, soprattutto con le reti neurali profonde, un numero elevato di parametri, come pesi e attivazioni (uscite intermedie che aiutano a calcolare l'uscita finale), può aumentare sia la complessità sia il fabbisogno computazionale. Il pruning aiuta a snellire il modello individuando e rimuovendo i parametri che contribuiscono in misura minima alle prestazioni, ottenendo così un modello più leggero ed efficiente.

Fig. 3 Prima e dopo il pruning del modello.
Dopo l'addestramento del modello, tecniche come la potatura basata sulla magnitudine o l'analisi di sensibilità possono valutare l'importanza di ciascun parametro. I parametri poco importanti vengono quindi potati mediante una delle tre tecniche principali: potatura dei pesi, potatura dei neuroni o potatura strutturata.
Il pruning dei pesi rimuove singole connessioni con un impatto minimo sull'output. Il pruning dei neuroni elimina neuroni interi i cui output contribuiscono poco al funzionamento del modello. Il pruning strutturato elimina sezioni più ampie, come filtri convoluzionali o neuroni nei livelli completamente connessi, ottimizzando l'efficienza del modello. Una volta completato il pruning, il modello viene riaddestrato per perfezionare i parametri rimanenti, assicurando che mantenga un'elevata accuratezza in una forma ridotta.
Ridurre la latenza dei modelli di IA con la quantizzazione#
La quantizzazione dei modelli riduce il numero di bit usati 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 precisione inferiore, come numeri in virgola mobile a 16 bit o interi a 8 bit. Riducendo la precisione in bit, la quantizzazione diminuisce notevolmente le dimensioni del modello, l'ingombro in memoria e il costo computazionale.
Nella visione artificiale si usano comunemente valori in virgola mobile a 32 bit, ma la conversione a 16 o 8 bit può migliorare l'efficienza. Esistono due tipi principali di quantizzazione: la quantizzazione dei pesi e quella 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 il fabbisogno di memoria e di calcolo.

Fig. 4 Un esempio di quantizzazione da virgola mobile a 32 bit a intero a 8 bit.
Come la precisione mista accelera le inferenze dell'IA#
La precisione mista è una tecnica che usa precisioni numeriche diverse per varie parti di una rete neurale. Combinando valori a precisione maggiore, come i numeri in virgola mobile a 32 bit, con valori a precisione inferiore, come quelli a 16 o 8 bit, la precisione mista consente ai modelli di visione artificiale di accelerare l'addestramento e ridurre l'uso di memoria senza sacrificare l'accuratezza.
Durante l'addestramento, la precisione mista si ottiene usando una precisione inferiore in specifici layer e mantenendo una precisione superiore dove necessario nella rete. Questo avviene tramite il casting e il ridimensionamento della loss. Il casting converte i tipi di dati tra diverse precisioni, secondo le necessità del modello. Il ridimensionamento della loss adegua la precisione ridotta per evitare l'underflow numerico e garantire un addestramento stabile. La precisione mista è particolarmente utile per i modelli di grandi dimensioni e i batch di grandi dimensioni.

Fig. 5 L'addestramento a precisione mista usa tipi in virgola mobile sia a 16 bit (FP16) sia a 32 bit (FP32).
Trovare un equilibrio tra precisione ed efficienza del modello#
Ora che abbiamo esaminato diverse tecniche di ottimizzazione dei modelli, vediamo come scegliere quella più adatta alle tue 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, i modelli più piccoli e veloci sono più adatti ai dispositivi mobili con risorse limitate, mentre quelli più grandi e accurati possono essere usati su sistemi ad alte prestazioni. Ecco come ciascuna tecnica si adatta a obiettivi diversi:
- Potatura: è ideale per ridurre le dimensioni del modello senza compromettere significativamente la precisione, ed è quindi perfetta per i dispositivi con risorse limitate, come i telefoni cellulari o i dispositivi dell'Internet delle cose (IoT).
- Quantizzazione: un'ottima scelta per ridurre le dimensioni del modello e accelerare l'inferenza, soprattutto su dispositivi mobili e sistemi embedded con memoria e potenza di elaborazione limitate. È adatta alle applicazioni in cui sono accettabili lievi riduzioni dell'accuratezza.
- Precisione mista: progettata per i modelli su larga scala, questa tecnica riduce l'uso di memoria e accelera l'addestramento su hardware come GPU e TPU che supportano operazioni a precisione mista. Viene spesso usata in attività ad alte prestazioni in cui l'efficienza è importante.
- Regolazione degli iperparametri: pur richiedendo molte risorse computazionali, è essenziale per le applicazioni che necessitano di un'elevata accuratezza, come l'imaging medico o la guida autonoma.
Punti chiave#
L'ottimizzazione dei modelli è una parte fondamentale del machine learning, soprattutto per implementare l'IA in applicazioni del mondo reale. Tecniche come l'ottimizzazione degli iperparametri, la potatura dei modelli, la quantizzazione e la precisione mista contribuiscono a migliorare le prestazioni, l'efficienza e l'utilizzo delle risorse dei modelli di computer vision. Queste ottimizzazioni rendono i modelli più veloci e meno dispendiosi in termini di risorse, l'ideale per i dispositivi con memoria e potenza di elaborazione limitate. Inoltre, i modelli ottimizzati sono più facili da scalare e distribuire su piattaforme diverse, consentendo di realizzare soluzioni di IA efficaci e 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.
Scritto da
Commenti
Fai una domanda, condividi i tuoi risultati o aiuta qualcun altro.










