.
Pesquisadores do MIT e da NVIDIA desenvolveram duas técnicas que aceleram o processamento de tensores esparsos, um tipo de estrutura de dados usada para tarefas de computação de alto desempenho. As técnicas complementares poderão resultar em melhorias significativas no desempenho e na eficiência energética de sistemas como os enormes modelos de aprendizagem automática que impulsionam a inteligência artificial generativa.
Tensores são estruturas de dados usadas por modelos de aprendizado de máquina. Ambos os novos métodos procuram explorar eficientemente o que é conhecido como esparsidade – valores zero – nos tensores. Ao processar esses tensores, pode-se pular os zeros e economizar computação e memória. Por exemplo, qualquer coisa multiplicada por zero é zero, então pode pular essa operação. E pode comprimir o tensor (zeros não precisam ser armazenados) para que uma porção maior possa ser armazenada na memória do chip.
No entanto, existem vários desafios para explorar a escassez. Encontrar valores diferentes de zero em um tensor grande não é tarefa fácil. As abordagens existentes muitas vezes limitam as localizações de valores diferentes de zero, impondo um padrão de dispersão para simplificar a pesquisa, mas isso limita a variedade de tensores esparsos que podem ser processados de forma eficiente.
Outro desafio é que o número de valores diferentes de zero pode variar em diferentes regiões do tensor. Isto torna difícil determinar quanto espaço é necessário para armazenar diferentes regiões na memória. Para garantir que a região se ajuste, muitas vezes é alocado mais espaço do que o necessário, fazendo com que o buffer de armazenamento seja subutilizado. Isso aumenta o tráfego de memória fora do chip, o que requer computação extra.
Os pesquisadores do MIT e da NVIDIA criaram duas soluções para resolver esses problemas. Por um lado, eles desenvolveram uma técnica que permite ao hardware encontrar com eficiência valores diferentes de zero para uma variedade maior de padrões de dispersão.
Para a outra solução, eles criaram um método que pode lidar com o caso em que os dados não cabem na memória, o que aumenta a utilização do buffer de armazenamento e reduz o tráfego de memória fora do chip.
Ambos os métodos aumentam o desempenho e reduzem as demandas de energia de aceleradores de hardware projetados especificamente para acelerar o processamento de tensores esparsos.
“Normalmente, quando você usa aceleradores de hardware mais especializados ou específicos de domínio, você perde a flexibilidade que obteria de um processador de uso mais geral, como uma CPU. O que se destaca nesses dois trabalhos é que mostramos que você ainda pode manter a flexibilidade e a adaptabilidade ao mesmo tempo que é especializado e eficiente”, diz Vivienne Sze, professora associada do Departamento de Engenharia Elétrica e Ciência da Computação (EECS) do MIT, membro do Laboratório de Pesquisa de Eletrônica (RLE) e co-autora sênior de artigos em ambos os avanços.
Seus coautores incluem os autores principais Yannan Nellie Wu PhD ’23 e Zi Yu Xue, estudante de graduação em engenharia elétrica e ciência da computação; e o co-autor sênior Joel Emer, professor de prática em ciência da computação e engenharia elétrica do MIT e membro do Laboratório de Ciência da Computação e Inteligência Artificial (CSAIL), bem como outros da NVIDIA. Ambos os artigos serão apresentados no IEEE/ACM International Symposium on Microarchitecture.
Destaque: Encontrando valores zero com eficiência
A dispersão pode surgir no tensor por vários motivos. Por exemplo, os pesquisadores às vezes “podam” partes desnecessárias dos modelos de aprendizado de máquina, substituindo alguns valores no tensor por zeros, criando dispersão. O grau de dispersão (porcentagem de zeros) e a localização dos zeros podem variar de modelo para modelo.
Para facilitar a localização dos restantes valores diferentes de zero num modelo com milhares de milhões de valores individuais, os investigadores muitas vezes restringem a localização dos valores diferentes de zero para que caiam num determinado padrão. No entanto, cada acelerador de hardware é normalmente projetado para suportar um padrão de dispersão específico, limitando sua flexibilidade.
Por outro lado, o acelerador de hardware projetado pelos pesquisadores do MIT, chamado HighLight, pode lidar com uma ampla variedade de padrões de dispersão e ainda ter um bom desempenho ao executar modelos que não possuem valores zero.
Eles usam uma técnica que chamam de “dispersão estruturada hierárquica” para representar com eficiência uma ampla variedade de padrões de dispersão compostos de vários padrões simples de dispersão. Essa abordagem divide os valores em um tensor em blocos menores, onde cada bloco tem seu próprio padrão simples de dispersão (talvez dois zeros e dois diferentes de zero em um bloco com quatro valores).
Em seguida, eles combinam os blocos em uma hierarquia, onde cada coleção de blocos também tem seu próprio padrão simples de dispersão (talvez um bloco zero e três blocos diferentes de zero em um nível com quatro blocos). Eles continuam combinando blocos em níveis maiores, mas os padrões permanecem simples em cada etapa.
Essa simplicidade permite que o HighLight encontre e pule zeros com mais eficiência, para que possa aproveitar ao máximo a oportunidade de reduzir o excesso de computação. Em média, o projeto do acelerador foi cerca de seis vezes mais eficiente em termos energéticos do que outras abordagens.
“No final, o acelerador HighLight é capaz de acelerar modelos densos de forma eficiente porque não introduz muita sobrecarga e, ao mesmo tempo, é capaz de explorar cargas de trabalho com diferentes quantidades de valores zero com base na dispersão estruturada hierárquica”, Wu explica.
No futuro, ela e seus colaboradores desejam aplicar a dispersão estruturada hierárquica a mais tipos de modelos de aprendizado de máquina e diferentes tipos de tensores nos modelos.
Alfaiates e Swiftiles: “overbooking” efetivamente para acelerar cargas de trabalho
Os pesquisadores também podem aproveitar a dispersão para mover e processar dados de maneira mais eficiente em um chip de computador.
Como os tensores geralmente são maiores do que o que pode ser armazenado no buffer de memória do chip, o chip apenas captura e processa uma parte do tensor por vez. Os pedaços são chamados de blocos.
Para maximizar a utiliza&cc
.png)
.png)
.png)
.png)