[ad_1]
I ricercatori del MIT e NVIDIA hanno sviluppato due tecniche che accelerano l’elaborazione di tensori sparsi, un tipo di struttura dati utilizzata per attività di calcolo ad alte prestazioni. Le tecniche complementari potrebbero portare a miglioramenti significativi delle prestazioni e dell’efficienza energetica di sistemi come i massicci modelli di apprendimento automatico che guidano l’intelligenza artificiale generativa.
I tensori sono strutture dati utilizzate dai modelli di apprendimento automatico. Entrambi i nuovi metodi cercano di sfruttare in modo efficiente ciò che è noto come scarsità (valori zero) nei tensori. Quando si elaborano questi tensori, è possibile saltare gli zeri e risparmiare sia sul calcolo che sulla memoria. Ad esempio, qualsiasi cosa moltiplicata per zero dà zero, quindi può saltare l’operazione. E può comprimere il tensore (non è necessario memorizzare gli zeri) in modo che una porzione più grande possa essere memorizzata nella memoria su chip.
Tuttavia, ci sono diverse sfide per sfruttare la scarsità. Trovare i valori diversi da zero in un grande tensore non è un compito facile. Gli approcci esistenti spesso limitano le posizioni dei valori diversi da zero imponendo un modello di scarsità per semplificare la ricerca, ma ciò limita la varietà di tensori sparsi che possono essere elaborati in modo efficiente.
Un’altra sfida è che il numero di valori diversi da zero può variare in diverse regioni del tensore. Ciò rende difficile determinare quanto spazio è necessario per archiviare diverse regioni in memoria. Per garantire che la regione sia adatta, spesso viene allocato più spazio del necessario, causando un sottoutilizzo del buffer di archiviazione. Ciò aumenta il traffico di memoria off-chip, che aumenta il consumo di energia.
I ricercatori del MIT e NVIDIA hanno creato due soluzioni per affrontare questi problemi. Innanzitutto, hanno sviluppato una tecnica che consente all’hardware di trovare in modo efficiente i valori diversi da zero per una più ampia varietà di modelli di scarsità.
Per l’altra soluzione, hanno creato un metodo in grado di gestire il caso in cui i dati non rientrano nella memoria, aumentando l’utilizzo del buffer di archiviazione e riducendo il traffico di memoria off-chip.
Entrambi i metodi aumentano le prestazioni e riducono le richieste energetiche degli acceleratori hardware appositamente progettati per accelerare l’elaborazione di tensori sparsi.
“In genere, quando si utilizzano acceleratori hardware più specializzati o specifici del dominio, si perde la flessibilità che si otterrebbe da un processore più generico, come una CPU. Ciò che risalta in questi due lavori è che dimostriamo che è ancora possibile mantenere flessibilità e adattabilità pur essendo specializzati ed efficienti”, afferma Vivienne Sze, professoressa associata presso il Dipartimento di ingegneria elettrica e informatica (EECS) del MIT, membro del Laboratorio di ricerca di elettronica (RLE) e co-autore senior di articoli su entrambi i progressi.
I suoi coautori includono gli autori principali Yannan Nellie Wu PhD ’23 e Zi Yu Xue, uno studente laureato in ingegneria elettrica e informatica; e il co-autore senior Joel Emer, professore del MIT in informatica e ingegneria elettrica e membro del Computer Science and Artificial Intelligence Laboratory (CSAIL), così come altri di NVIDIA. Entrambi i documenti saranno presentati al Simposio internazionale IEEE/ACM sulla microarchitettura.
In evidenza: Trovare in modo efficiente i valori zero
La sparsità può verificarsi nel tensore per una serie di ragioni. Ad esempio, i ricercatori a volte “eliminano” parti non necessarie dei modelli di apprendimento automatico sostituendo alcuni valori nel tensore con zeri, creando scarsità. Il grado di scarsità (percentuale di zeri) e la posizione degli zeri può variare a seconda dei modelli.
Per facilitare la ricerca dei restanti valori diversi da zero in un modello con miliardi di valori individuali, i ricercatori spesso limitano la posizione dei valori diversi da zero in modo che rientrino in un determinato schema. Tuttavia, ciascun acceleratore hardware è in genere progettato per supportare uno specifico modello di scarsità, limitandone la flessibilità.
Al contrario, l’acceleratore hardware progettato dai ricercatori del MIT, chiamato HighLight, può gestire un’ampia varietà di modelli di scarsità e funzionare comunque bene quando si eseguono modelli che non hanno valori zero.
Usano una tecnica che chiamano “sparsità strutturata gerarchica” per rappresentare in modo efficiente un’ampia varietà di modelli di sparsità composti da diversi modelli di sparsità semplici. Questo approccio divide i valori in un tensore in blocchi più piccoli, dove ogni blocco ha il proprio modello semplice di scarsità (forse due zeri e due diversi da zero in un blocco con quattro valori).
Quindi combinano i blocchi in una gerarchia, dove ogni raccolta di blocchi ha anche il proprio modello semplice e scarso (forse un blocco zero e tre blocchi diversi da zero in un livello con quattro blocchi). Continuano a combinare i blocchi in livelli più grandi, ma gli schemi rimangono semplici ad ogni passaggio.
Questa semplicità consente a HighLight di trovare e saltare gli zeri in modo più efficiente, in modo da poter sfruttare appieno l’opportunità di ridurre i calcoli in eccesso. In media, la progettazione del loro acceleratore aveva un prodotto di ritardo energetico circa sei volte migliore rispetto ad altri approcci.
“Alla fine, l’acceleratore HighLight è in grado di accelerare in modo efficiente modelli densi perché non introduce molto sovraccarico e, allo stesso tempo, è in grado di sfruttare carichi di lavoro con diverse quantità di valori zero in base alla scarsità strutturata gerarchica”, Wu spiega.
In futuro, lei e i suoi collaboratori vogliono applicare la scarsità strutturata gerarchica a più tipi di modelli di apprendimento automatico e a diversi tipi di tensori nei modelli.
Sarti e Swiftiles: “overbooking” efficace per accelerare i carichi di lavoro
I ricercatori possono anche sfruttare la scarsità per spostare ed elaborare in modo più efficiente i dati su un chip di computer.
Poiché i tensori sono spesso più grandi di quanto può essere memorizzato nel buffer di memoria del chip, il chip cattura ed elabora solo una parte del tensore alla volta. I pezzi sono chiamati tessere.
Per massimizzare l’utilizzo di quel buffer e limitare il numero di volte in cui il chip deve accedere alla memoria esterna al chip, che spesso determina il consumo di energia e limita la velocità di elaborazione, i ricercatori cercano di utilizzare la tessera più grande che possa entrare nel buffer.
Ma in un tensore sparso, molti dei valori dei dati sono zero, quindi nel buffer può entrare un riquadro ancora più grande di quanto ci si potrebbe aspettare in base alla sua capacità. Non è necessario memorizzare i valori zero.
Ma il numero di valori zero può variare tra diverse regioni del tensore, quindi possono variare anche per ciascuna tessera. Ciò rende difficile determinare la dimensione della tessera adatta al buffer. Di conseguenza, gli approcci esistenti spesso presuppongono in modo conservativo che non vi siano zeri e finiscono per selezionare un riquadro più piccolo, il che si traduce in spazi vuoti sprecati nel buffer.
Per affrontare questa incertezza, i ricercatori propongono l’uso dell’“overbooking” per consentire loro di aumentare la dimensione della tessera, nonché un modo per tollerarlo se la tessera non si adatta al buffer.
Allo stesso modo in cui una compagnia aerea prenota in eccesso i biglietti per un volo, se tutti i passeggeri si presentano, la compagnia aerea deve risarcire quelli che vengono sbalzati dall’aereo. Ma di solito non si presentano tutti i passeggeri.
In un tensore sparso, è possibile scegliere una dimensione delle tessere tale che solitamente le tessere avranno abbastanza zeri da poter essere ancora inserite nel buffer. Ma occasionalmente, una tessera avrà più valori diversi da zero di quanti ne possano contenere. In questo caso, tali dati vengono eliminati dal buffer.
I ricercatori consentono all’hardware di recuperare solo i dati danneggiati senza acquisire ed elaborare nuovamente l’intera tessera. Modificano la “coda” del buffer per gestire questo problema, da qui il nome di questa tecnica, Tailors.
Quindi hanno anche creato un approccio per trovare la dimensione delle tessere che sfrutta l’overbooking. Questo metodo, chiamato Swiftiles, stima rapidamente la dimensione ideale delle tessere in modo che una percentuale specifica di tessere, impostata dall’utente, venga prenotata in eccesso. (I nomi “Tailors” e “Swiftiles” rendono omaggio a Taylor Swift, il cui recente tour Eras era pieno di codici di prevendita overbooking per i biglietti).
Swiftiles riduce il numero di volte in cui l’hardware deve controllare il tensore per identificare la dimensione ideale della piastrella, risparmiando sui calcoli. La combinazione di Tailors e Swiftiles più che raddoppia la velocità richiedendo solo la metà del fabbisogno energetico degli acceleratori hardware esistenti che non sono in grado di gestire l’overbooking.
“Swiftiles ci consente di stimare quanto devono essere grandi queste tessere senza richiedere più iterazioni per perfezionare la stima. Funziona solo perché è supportato l’overbooking. Anche se sei indietro di una discreta quantità, puoi comunque ottenere un bel po’ di accelerazione grazie al modo in cui sono distribuiti i valori diversi da zero”, afferma Xue.
In futuro, i ricercatori vogliono applicare l’idea dell’overbooking ad altri aspetti dell’architettura informatica e lavorare anche per migliorare il processo di stima del livello ottimale di overbooking.
Questa ricerca è finanziata, in parte, dal programma hardware AI del MIT.
[ad_2]
Source link