Abordagens complementares – “HighLight” e “Tailors and Swiftiles” – poderiam aumentar o desempenho de tarefas exigentes de aprendizado de máquina.
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 aumenta o consumo de energia.
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 com um processador de uso mais geral, como uma CPU. O que se destaca com esses dois trabalhos é que mostramos que ainda é possível manter a flexibilidade e a adaptabilidade ao mesmo tempo em que somos especializados e eficientes”, 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-autor sênior de artigos sobre 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 tinha um produto de atraso de energia cerca de seis vezes melhor (uma métrica relacionada à eficiência energética) do que outras abordagens.
“No final, o acelerador HighLight é capaz de acelerar modelos densos com eficiência 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.
Tailors e Swiftiles: Efetivamente “overbooking” 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ção desse buffer e limitar o número de vezes que o chip deve acessar a memória fora do chip, que muitas vezes domina o consumo de energia e limita a velocidade de processamento, os pesquisadores procuram usar o maior bloco que caberá no buffer.
Mas em um tensor esparso, muitos dos valores dos dados são zero, portanto, um bloco ainda maior pode caber no buffer do que se poderia esperar com base em sua capacidade. Valores zero não precisam ser armazenados.
Mas o número de valores zero pode variar entre diferentes regiões do tensor, portanto também pode variar para cada bloco. Isso torna difícil determinar o tamanho do bloco que caberá no buffer. Como resultado, as abordagens existentes muitas vezes assumem de forma conservadora que não há zeros e acabam selecionando um bloco menor, o que resulta em desperdício de espaços em branco no buffer.
Para resolver esta incerteza, os pesquisadores propõem o uso de “overbooking” para permitir aumentar o tamanho do bloco, bem como uma forma de tolerá-lo se o bloco não couber no buffer.
Da mesma forma que uma companhia aérea reserva passagens em excesso para um voo, se todos os passageiros comparecerem, a companhia aérea deverá indenizar aqueles que forem expulsos do avião. Mas geralmente nem todos os passageiros aparecem.
Em um tensor esparso, um tamanho de bloco pode ser escolhido de forma que normalmente os blocos tenham zeros suficientes para que a maioria ainda caiba no buffer. Mas, ocasionalmente, um bloco terá mais valores diferentes de zero do que caberá. Nesse caso, esses dados são eliminados do buffer.
Os pesquisadores permitem que o hardware recupere apenas os dados colididos, sem capturar e processar o bloco inteiro novamente. Eles modificam a “extremidade final” do buffer para lidar com isso, daí o nome desta técnica, Tailors.
Em seguida, eles também criaram uma abordagem para encontrar o tamanho dos blocos que aproveita o overbooking. Este método, chamado Swiftiles, estima rapidamente o tamanho ideal do bloco para que uma porcentagem específica de blocos, definida pelo usuário, seja reservada em excesso. (Os nomes “Tailors” e “Swiftiles” homenageiam Taylor Swift, cuja recente turnê Eras estava repleta de códigos de pré-venda de ingressos lotados).
Swiftiles reduz o número de vezes que o hardware precisa verificar o tensor para identificar um tamanho ideal de bloco, economizando em computação. A combinação de Tailors e Swiftiles mais do que duplica a velocidade, ao mesmo tempo que requer apenas metade das exigências energéticas dos aceleradores de hardware existentes, que não conseguem lidar com overbooking.
“O Swiftiles nos permite estimar o tamanho que esses blocos precisam ter sem a necessidade de múltiplas iterações para refinar a estimativa. Isso só funciona porque há suporte para overbooking. Mesmo se você estiver errado, ainda poderá extrair um pouco de aceleração devido à forma como os números diferentes de zero são distribuídos”, diz Xue.
No futuro, os investigadores pretendem aplicar a ideia de overbooking a outros aspectos da arquitectura de computadores e também trabalhar para melhorar o processo de estimativa do nível ideal de overbooking.
Esta pesquisa é financiada, em parte, pelo Programa de Hardware de IA do MIT.
Nenhum comentário:
Postar um comentário