Efficient INT8 Inference of Small NLP Models on Server CPUs with PyTorch Native Stack
Questo articolo presenta un'implementazione nativa in PyTorch di SmoothQuant per l'inferenza INT8 di piccoli modelli NLP su CPU server, ottenendo un incremento del throughput fino a 5,8x con una perdita di accuratezza trascurabile attraverso la fusione a livello di grafo e la selezione ottimizzata dei kernel, con la soluzione ora integrata in PyTorch e TorchAO.
Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Nel mondo dell'intelligenza artificiale, una rivoluzione silenziosa sta avvenendo accanto ai titoli fragorosi che parlano di chatbot massicci e onniscienti. Mentre l'attenzione del pubblico è fissa su modelli enormi in grado di scrivere poesie o risolvere complessi enigmi logici, i motori che alimentano il traffico quotidiano di Internet — risultati di ricerca, raccomandazioni di prodotti e filtri antispam — si affidano a programmi più piccoli e specializzati. Questi programmi, spesso basati su una famiglia di design nota come BERT, sono i cavalli di battaglia dell'economia digitale. Essi girano su server standard, quelli che si trovano nei data center di tutto il mondo, piuttosto che su schede grafiche specializzate ed costose. Per questi sistemi, la velocità e il costo contano più delle dimensioni pure. La sfida per gli ingegneri è stata a lungo capire come far girare questi modelli più velocemente senza sacrificare l'accuratezza che li rende utili. Un modo potente per farlo è semplificare la matematica eseguita dal computer, scambiando un briciolo di precisione con un enorme guadagno in velocità, una tecnica nota come quantizzazione.
Un team di ricercatori presso Intel Corporation ha ora costruito un ponte che permette a questi modelli linguistici più piccoli di girare con questa matematica semplificata direttamente all'interno degli strumenti software più popolari utilizzati oggi dagli sviluppatori. Il loro lavoro si concentra su un metodo specifico chiamato SmoothQuant, che prepara un modello a gestire la matematica semplificata senza perdere la sua capacità di comprendere il linguaggio. Integrando questo metodo nello standard software PyTorch, hanno creato un percorso che non richiede strumenti di terze parti speciali o riscrizioni complesse. Il risultato è un sistema in grado di prendere un modello linguistico standard e renderlo significativamente più veloce sui moderni processori server, mantenendo al contempo le risposte corrette come prima.
I ricercatori sono partiti da un problema comune: sebbene i moderni processori per computer abbiano istruzioni integrate per gestire rapidamente la matematica semplificata, gli strumenti software utilizzati per costruire questi modelli spesso non sapevano come usarle in modo efficiente. Quando un modello veniva preparato per la velocità, il software spesso si incagliava nei passaggi necessari per convertire i dati o gestire i calcoli semplificati, sprecando proprio la velocità che l'hardware prometteva. Per risolvere questo problema, il team ha combinato tre pezzi distinti di tecnologia in un unico flusso di lavoro fluido. Per prima cosa, hanno usato uno strumento chiamato TorchAO per preparare il modello, ammorbidendo i dati in modo che potessero essere semplificati in sicurezza. Successivamente, hanno usato un compilatore chiamato TorchInductor per esaminare l'intero flusso dei calcoli del modello e fonderli insieme, eliminando i passaggi non necessari che di solito rallentano le cose. Infine, hanno insegnato al sistema a scegliere il modo assolutamente più veloce per eseguire le operazioni matematiche principali, a seconda che il processore del computer fosse un modello più recente con capacità avanzate o un modello più vecchio e affidabile ancora ampiamente in uso.
Per testare la loro creazione, il team ha eseguito esperimenti su due diverse generazioni di processori server Intel. Hanno testato il sistema su tre diversi tipi di modelli linguistici, che spaziavano da versioni grandi e complesse a versioni più piccole e compatte. I risultati sono stati sorprendenti. Sui processori più recenti, il sistema è stato fino a 5,8 volte più veloce della versione standard non ottimizzata. Sui processori più vecchi, è riuscito comunque a girare quasi tre volte più velocemente. Forse, cosa più importante, la velocità non è arrivata a scapito della qualità. Quando i ricercatori hanno testato i modelli su compiti del mondo reale, come rispondere a domande da un testo o giudicare il sentiment di una frase, i modelli semplificati davano le risposte corrette con la stessa frequenza delle versioni originali più lente. In molti casi, la differenza di accuratezza era così piccola da non poter essere nemmeno misurata.
Il team ha anche esaminato da vicino perché si siano verificati i guadagni di velocità, utilizzando un metodo che mappa i limiti di quanto velocemente un computer può spostare i dati rispetto a quanto velocemente può eseguire i calcoli. Hanno scoperto che per i processori più nuovi, la velocità era limitata dalla rapidità con cui i dati potevano essere spostati, mentre per i processori più vecchi, era limitata dalla velocità con cui veniva eseguita la matematica. Il loro sistema è riuscito a navigare efficacemente entrambi questi limiti. Hanno scoperto che preparando i dati in anticipo e rimuovendo la necessità per il computer di fermarsi e riorganizzare le informazioni mentre era al lavoro, potevano sbloccare il pieno potenziale dell'hardware. Hanno persino trovato un astuto aggiramento per i processori più vecchi che mancavano di un'istruzione specifica per la matematica semplificata, permettendo loro di usare un'altra istruzione disponibile per ottenere risultati simili.
Questo lavoro è importante perché rimuove una barriera significativa per le aziende che vogliono implementare questi modelli in modo efficiente. Precedentemente, ottenere questo livello di prestazioni spesso significava utilizzare strumenti specializzati che erano difficili da mantenere o che richiedevano di abbandonare l'ambiente software standard. Ora, gli sviluppatori possono semplicemente usare gli strumenti che già conoscono per ottenere le stesse alte prestazioni. I ricercatori hanno condiviso il loro codice con la comunità più ampia, il che significa che chiunque utilizzi questi strumenti standard può ora accedere immediatamente a questo aumento di velocità. Lo studio conferma che è possibile rendere i cavalli di battaglia di Internet più veloci ed efficienti senza cambiare la natura fondamentale dei modelli o del software su cui girano. Ottimizzando attentamente il modo in cui il computer gestisce la matematica, il team ha dimostrato che il futuro di un'intelligenza artificiale efficiente sui server standard non è solo una possibilità, ma una realtà pronta per essere utilizzata oggi.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.