Ricercatori del MIT e di NVIDIA hanno sviluppato due tecniche complementari che potrebbero migliorare notevolmente la velocità e le performance di compiti di apprendimento automatico complessi.

Ricercatori del MIT e di NVIDIA scoprono due tecniche complementari per migliorare la velocità e le prestazioni dei compiti di apprendimento automatico complessi.

I ricercatori del MIT e NVIDIA hanno formulato due tecniche che accelerano l’elaborazione dei tensori sparsi (i tensori servono come strutture dati fondamentali nei modelli di apprendimento automatico, agendo come array multidimensionali che organizzano e memorizzano i dati).

Lo scopo di entrambe le nuove tecniche è sfruttare in modo efficace i valori zero dei tensori. È possibile gestire questi tensori senza elaborare gli zeri, risparmiando memoria e calcolo. Ad esempio, moltiplicare qualsiasi cosa per zero produce zero, quindi quell’operazione può essere saltata. Inoltre, può comprimere il tensore, consentendo di memorizzare di più nella memoria on-chip perché non è necessario conservare gli zeri.

La sparità nei tensori si verifica quando gli elementi non necessari vengono rimossi sostituendo alcuni valori con zeri, un processo noto come pruning. Il grado di sparità e le posizioni di questi zeri possono differire tra i modelli. Spesso i ricercatori vincolano le posizioni dei valori diversi da zero per facilitarne la localizzazione in modelli di grandi dimensioni. L’adattabilità degli acceleratori hardware è limitata perché di solito sono progettati per particolari pattern di sparità.

Il team di ricerca ha sviluppato un acceleratore hardware chiamato HighLight, in grado di gestire efficientemente diversi pattern di sparità. I ricercatori hanno utilizzato la sparità strutturata in modo gerarchico per rappresentare in modo efficiente tipi diversi di pattern di sparità costituiti da pattern più semplici. In questo metodo, suddividono i numeri in un insieme in gruppi più piccoli, e ogni gruppo segue un pattern semplice. Questi gruppi più piccoli vengono poi combinati in gruppi più grandi, formando una gerarchia. Ogni insieme di gruppi segue anche un pattern semplice (ad esempio, avendo un gruppo con zeri e tre gruppi senza in un livello con quattro gruppi). Questo processo continua con livelli più grandi, ma i pattern rimangono semplici ad ogni passo.

Questa semplicità consente a HighLight di trovare e saltare zeri in modo più efficiente, in modo da poter sfruttare appieno l’opportunità di ridurre i calcoli inutili. Il loro design dell’acceleratore ha mostrato un miglioramento di circa sei volte dei prodotti energia-ritardo (una metrica legata all’efficienza energetica) rispetto ad altri approcci.

I ricercatori possono anche sfruttare la sparità per spostare ed elaborare i dati su un chip di computer in modo più efficiente. Poiché i tensori sono spesso più grandi di ciò che può essere memorizzato nel buffer di memoria del chip, il chip prende e elabora solo una porzione del tensore alla volta. Queste porzioni sono chiamate tiles. Per massimizzare la capacità del buffer e ridurre la frequenza con cui il chip deve accedere alla memoria esterna.

Per massimizzare la capacità del buffer e ridurre il numero di volte in cui il chip deve accedere alla memoria esterna (che può essere energivora e rallentare l’elaborazione), i ricercatori mirano a utilizzare la tiles più grande possibile che si adatti al buffer.

Poiché molti valori dei dati sono zero, una tiles più grande può adattarsi al buffer rispetto a quanto potrebbe suggerire la sua capacità grezza, poiché i valori zero non devono essere memorizzati. Tuttavia, il numero di valori zero può variare tra diverse parti dei dati e quindi può anche essere diverso per ogni tiles.

Per affrontare questo problema, il gruppo di ricerca ha suggerito di utilizzare una tecnica di overbooking che consente di aumentare la dimensione delle tiles. In un set di dati sparsi, una dimensione delle tiles può essere scelta in modo che la maggior parte delle tiles abbia abbastanza zeri da adattarsi al buffer. Occasionalmente, una tiles può avere più valori diversi da zero di quanto il buffer possa ospitare. In questi casi, questi dati in eccesso vengono spinti fuori dal buffer.

Il gruppo di ricerca ha reso possibile all’hardware di recuperare solo i dati spostati senza dover prendere e elaborare nuovamente l’intera tiles. Ciò viene realizzato modificando la “parte finale” del buffer, da cui il nome della tecnica, Tailors.

Inoltre, hanno sviluppato un approccio chiamato Swiftiles per determinare in modo efficiente la dimensione delle tiles, sfruttando i vantaggi dell’overbooking. Swiftiles riduce la frequenza con cui l’hardware deve ispezionare il tensore per identificare una dimensione ottimale delle tiles, risparmiando così risorse computazionali.

La combinazione di Tailors e Swiftiles comporta un aumento delle prestazioni, raddoppiando la velocità richiedendo solo la metà del consumo di energia rispetto agli acceleratori hardware esistenti che non possono gestire l’overbooking.

Secondo i ricercatori, Swiftiles può stimare la dimensione ottimale delle tiles senza richiedere più iterazioni per affinare la stima. Questo processo è possibile grazie al supporto per l’overbooking. Anche con un errore di stima significativo, è possibile ottenere un significativo aumento di velocità grazie a una specifica distribuzione dei valori diversi da zero.