Potenziare l’inferenza dei modelli di Intelligenza Artificiale: tre metodi comprovati per accelerare i vostri modelli

Articolo in lingua originale di Minhajul Hoque

La popolarità dell’intelligenza artificiale (AI) continua a crescere, così come la necessità di un’inferenza efficiente. Dopo tutto, chi vuole aspettare minuti prima che un modello classifichi un’immagine o ritorni il risultato di una query?

Fortunatamente, esistono diversi metodi per rendere più veloce l’inferenza dei modelli di AI. Ecco tre modi principali per accelerare il processo di inferenza:

  1. Fargli fare inferenza più rapidamente
  2. Utilizzare un modello più piccolo
  3. Eseguire il modello su componenti hardware migliori

 

Il processo di velocizzazione dell’inferenza si chiama ottimizzazione dell’inferenza. Ciò include l’ottimizzazione del codice software che esegue il modello, nonché l’ottimizzazione dell’hardware che esegue il software. Alcune ottimizzazioni software comuni comprendono la riduzione dei calcoli ridondanti, il miglioramento della disposizione dei dati in memoria e l’utilizzo di algoritmi migliori. Le ottimizzazioni hardware includono l’uso di hardware specializzato, come le unità di elaborazione grafica (GPU) o le unità di elaborazione tensoriale (TPU), che possono eseguire le operazioni di moltiplicazione delle matrici più rapidamente delle unità di elaborazione centrale (CPU) tradizionali.

 

Un altro approccio per accelerare l’inferenza consiste nell’utilizzare un modello più piccolo. Questo processo è chiamato compressione del modello. Un modello più piccolo ha meno parametri e quindi richiede meno memoria e meno calcoli per essere eseguito. Esistono diverse tecniche per comprimere i modelli, ma in questo post ci concentreremo sulle quattro seguenti:

 

  • Ottimizzazione a basso rango (low-rank)
  • Distillazione della conoscenza
  • Potatura (pruning)
  • Quantizzazione

Ottimizzazione low-rank

L’idea chiave dell’ottimizzazione a basso rango consiste nel sostituire i tensori ad alta dimensione con tensori a bassa dimensione. Questa tecnica è stata utilizzata in modelli come MobileNet, che utilizza filtri convoluzionali depthwise e pointwise. Un altro esempio è LORA, dove le matrici dei pesi di grandi dimensioni sono rappresentate da matrici di pesi addestrabili a basso rango. HuggingFace ha implementato una nuova libreria chiamata PEFT che consente una facile messa a punto di LORA.

Distillazione della conoscenza

La distillazione della conoscenza è una tecnica in cui un modello più piccolo (chiamato modello studente) viene addestrato per imitare un modello più grande (chiamato modello insegnante). Il modello studente è leggermente meno preciso del modello insegnante, ma è molto più veloce. Questa tecnica è utile quando si dispone di un modello di grandi dimensioni che è accurato ma troppo lento per essere utilizzato e si vuole creare un modello più piccolo che sia comunque abbastanza accurato per l’uso pratico. Un modello di distillazione della conoscenza molto diffuso è DistilBERT, addestrato utilizzando BERT come modello genitore.

Pruning

La potatura è una tecnica utilizzata da tempo negli alberi decisionali. Nel contesto delle reti neurali, la potatura significa rimuovere interi nodi dall’architettura o trovare i parametri meno utili e azzerarli. In questo modo si crea una rete più rada che tende a occupare meno spazio rispetto alle reti dense. Un meccanismo di potatura molto diffuso è il decadimento del peso. Questo algoritmo aggiunge un termine di regolarizzazione alla funzione di perdita che incoraggia i pesi piccoli. Durante l’addestramento, alcuni pesi possono diventare molto piccoli e possono essere eliminati senza influire sull’accuratezza del modello.

Quantizzazione

La quantizzazione è probabilmente il metodo più diffuso per comprimere i modelli. Consiste nell’utilizzare un minor numero di bit per rappresentare i parametri. Ad esempio, si possono convertire i parametri rappresentati in formato a virgola mobile a 32 bit (FP32) in formato a virgola mobile a 16 bit (FP16) o addirittura in formato a virgola fissa a 8 bit (INT8). In questo modo si crea un modello più piccolo e si accelera l’addestramento e l’inferenza grazie alla minore precisione di calcolo. Gli studi dimostrano che la quantizzazione influisce in modo trascurabile sulla precisione e può essere applicata durante l’addestramento o l’inferenza del modello. È possibile utilizzare bitsandbytes per la quantizzazione dell’addestramento e algoritmi come Nvidia TensorRT per la quantizzazione dell’inferenza.

Conclusione

Esistono diversi modi per rendere più veloce l’inferenza dei modelli di AI, tra cui l’ottimizzazione del software e dell’hardware, l’utilizzo di un modello più piccolo e la compressione dei modelli. Tra le tecniche di compressione, l’ottimizzazione a basso rango, la distillazione della conoscenza, il pruning e la quantizzazione sono alcuni dei metodi più efficaci. Utilizzando queste tecniche, è possibile creare modelli più piccoli, più veloci e comunque sufficientemente accurati per l’uso pratico.

Share:

Contenuti
Torna in alto