- O MVDRAM é um sistema que acelera operações GeMV para inferência de LLMs de baixa precisão usando DRAM sem modificações
- Ele utiliza a DRAM como mecanismo de GeMV para oferecer alta taxa de processamento
- Elimina os custos de pré-organização de entradas e de conversão de bits de saída das abordagens PUD existentes
- Resultados experimentais mostram desempenho superior ao de implementações baseadas em processador em LLMs de baixa precisão
- Aponta novas possibilidades para hardware de IA
MVDRAM: aceleração de LLMs de baixa precisão com DRAM sem modificações
- As operações GeMV continuam sendo um gargalo importante de latência na inferência de grandes modelos de linguagem (LLMs)
- Processing-Using-DRAM (PUD) tem potencial para reaproveitar a DRAM como um mecanismo de GeMV
- No entanto, aplicar PUD ao pipeline de inferência de LLMs gera overhead significativo
A abordagem inovadora do MVDRAM
- O MVDRAM coordena processador e DRAM aproveitando padrões de compartilhamento de dados e linearidade matemática
- Ele acelera operações GeMV ao eliminar os custos das abordagens PUD tradicionais
Resultados experimentais
- Em experimentos com quatro módulos DDR4 DRAM, o MVDRAM apresentou desempenho superior ao de implementações baseadas em processador em LLMs de baixa precisão (4 bits ou menos)
- Alcançou até 7,29x de ganho de velocidade e 30,5x de eficiência energética
Melhoria geral na inferência de LLMs
- Em modelos de baixa precisão quantizados em 2 bits e 4 bits, mostrou melhorias de taxa de processamento de 2,18x e 1,31x, respectivamente
- A eficiência energética também melhorou em 3,04x e 2,35x, respectivamente
Novas possibilidades para hardware de IA
- O MVDRAM demonstra a possibilidade de usar DRAM padrão como acelerador para LLMs
- Tem potencial para abrir novos horizontes para hardware de IA
1 comentários
Opiniões no Hacker News
Como material de contexto, há uma das primeiras propostas de in-DRAM compute, https://users.ece.cmu.edu/~omutlu/pub/in-DRAM-bulk-AND-OR-ie..., a primeira demonstração com componentes de prateleira https://parallel.princeton.edu/papers/micro19-gao.pdf, a ferramenta de implementação DRAM Bender https://github.com/CMU-SAFARI/DRAM-Bender, e um artigo recente de revisão sobre processamento in-DRAM https://arxiv.org/abs/2412.19275
Não eram formas tão engenhosas ou avançadas quanto a ideia atual, mas, no fim, estes artigos são quase uma versão moderna de uma ideia antiga
Chama a atenção como as listas de autores das referências 1 e 3 são absurdamente longas
Achei que o post de 2016 https://news.ycombinator.com/item?id=12469270 também estaria lá, e o de 2019 https://news.ycombinator.com/item?id=22712811 de fato aparece
Claro, esse tipo de operação fora da especificação da DRAM, especialmente a capacidade de cópia, também está relacionada ao bug notório https://news.ycombinator.com/item?id=5314959
Parece que várias pessoas observaram esse fenômeno de forma independente e pensaram: “talvez isso seja um comportamento útil”
Quando a lista de autores é gigantesca assim, normalmente se usa só o primeiro nome e o restante fica como “et al.”
“Emite comandos DRAM que violam intencionalmente os parâmetros de temporização especificados pelo fabricante para obter até 65.536 operações de bits em paralelo” — parece um golpe contra aqueles blobs binários de treinamento de DRAM
Isso é realmente estranho a ponto de dar um nó na cabeça e, ao mesmo tempo, brilhantemente criativo
Às vezes, mergulhar até os detalhes mais baixos compensa. Excelente
A Mostek MK4096 de 1973 provavelmente também conseguia fazer isso; levou mais ou menos meio século para alguém descobrir
Então eles estão fazendo operações matriciais na própria DRAM? Loucura, mas interessante
O processamento usando DRAM (PUD) aproveita características analógicas inerentes da DRAM para viabilizar computação bit-serial altamente paralela dentro do array de memória
Trabalhos anteriores mostraram que DRAMs comerciais de prateleira também conseguem obter funcionalidades de PUD sem modificação de hardware, violando intencionalmente parâmetros de temporização
As operações centrais são duas: RowCopy e majority-of-X (MAJX). RowCopy emite um comando ACT imediatamente após um PRE, antes de a pré-carga da bitline terminar, para mover dados para outra linha dentro do mesmo subarray; como afeta simultaneamente todas as células de uma linha, é cerca de 100 vezes mais rápido que a movimentação de dados mediada pelo processador
MAJX realiza uma votação por maioria ativando simultaneamente X células que compartilham a mesma bitline e, em DRAM comercial, é implementado emitindo rapidamente ACT, PRE e ACT em sequência, sem atraso. Com isso, é possível ativar de 2 a 32 linhas ao mesmo tempo, tornando-se a unidade computacional básica do PUD, que explora o paralelismo de subarray com 65.536 colunas
No mundo de hardware também existe o risco de explorar um bug que o fabricante pode corrigir um dia?
Em software, é uma má ideia depender de um bug da plataforma para criar algum recurso ou corrigir outro bug
Daqui a 15 anos esse bug pode ser corrigido, e então o sistema explode sem que ninguém saiba por quê
Acho que houve uma discussão parecida recentemente, talvez relacionada a comportamento indefinido de alguma função em C
Às vezes uma placa de rede específica tem um bug, ou uma combinação de recursos se comporta de um jeito interessante, que dá vantagem a uma firma de trading
Esses bugs ou recursos também podem desaparecer porque foram corrigidos, ou porque se concluiu que não são necessários para um mercado maior. Por isso, empresas às vezes tentam comprar todo o estoque restante de um modelo específico
No pior caso, você precisa fazer funcionar até com hardware de um fornecedor famoso que desapareceu 15 anos atrás. Grandes clientes vêm usando aquele equipamento sem problemas há 15 anos e, se ao conectar o equipamento novo não funcionar, eles vão culpar o seu hardware
Em equipamentos de telecomunicações isso é especialmente importante, então há todo tipo de tratamento especial para fornecedores que não seguem a especificação. E é preciso manter esses tratamentos especiais no firmware para não quebrar o sistema dos outros
Se você imaginar equipamentos antigos, equipamentos de empresas que já sumiram e equipamentos de concorrentes atuais ocupando uma parede inteira, com braços robóticos conectando cabos, dá para ter uma ideia de como são alguns laboratórios de validação de hardware
Firmware de fabricantes de placas-mãe também é cheio de tratamentos especiais para CPUs, chipsets etc. específicos
O impacto dele quando combinado com compiladores otimizadores parece ter chegado a um público mais amplo por volta de 2010, talvez 2013, e já faz mais de 12 anos
Este artigo não trata tanto de depender de um bug, mas de mostrar o que pode ser possível com DRAM e de esperar que esses recursos sejam padronizados
Multiplicação geral matriz-vetor (GeMV), hein; não sou lá muito bom em matemática
Numa aula de matemática 3D, quando aprendemos quatérnios, passamos rapidamente pela história dos cálculos com matrizes no desenvolvimento gráfico. Reprovei nessa aula de primeira, então realmente não sou uma pessoa de matemática
Pelo que entendi, os quatérnios ficaram populares porque são quase tão precisos quanto matrizes, mas têm complexidade computacional muito menor
Já houve alguma tentativa de criar LLMs com quatérnios em vez de matrizes? Ou a otimização com quatérnios é mais útil em gráficos em tempo real?
Um subconjunto específico delas pode ser usado para descrever rotações no espaço 3D, e os quatérnios, embora isso seja discutível, conseguem fazer isso melhor
Mas não dá para descrever uma função linear arbitrária com quatérnios, então não parecem adequados para LLMs
Redes neurais precisam de muito mais dimensões
Eles podem ser representados por matrizes, e provavelmente há bons usos, como QDNN, para matrizes que usam quatérnios como elementos em vez de números reais
Pela minha experiência, em estruturas de grande escala como LLMs, a forma mais simples tende a ter mais sucesso, a menos que haja uma vantagem real em expressar tudo com um tipo escalar mais sofisticado, como em física ou gráficos 3D
Além disso, esse tipo de representação de rotação não escala tão bem com quatérnios à medida que se adicionam dimensões
Números complexos são a representação complexa de um espaço 2D, quatérnios são a representação complexa de um espaço 3D, e, para ir a 4D, são necessários octônios com 8 elementos
Parece um pouco anticientífico não citar o material original de 1997 sobre Intelligent RAM (IRAM)
https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=iram...
Mas IRAM parece estar mais perto de computação próxima à memória, adicionando uma ALU ao chip de memória, enquanto computação dentro da memória usa o próprio array de memória
Para ser justo, antes do surgimento do deep learning com comprimentos de vetor enormes, a computação dentro da memória era muito menos atraente. Por isso, parece que as pessoas tentavam criar formas de controlar as operações com mais granularidade
Dá para esperar que multiplicação de matrizes e talvez outras operações migrem das CPUs tradicionais para a DRAM, até com suporte de hardware dedicado?
Essa mudança do local de processamento daria vantagem a empresas como a Samsung? Onde ficariam empresas como a NVIDIA?
https://www.patentlyapple.com/2024/12/apple-plans-to-transit...
É um hack interessante. Não li o artigo, mas esse tipo de operação parece ser termicamente instável
Então os resultados de inferência de LLMs poderiam variar conforme a temperatura ambiente :-)
Para mais detalhes, basta ler o artigo ou pesquisar por “temperature”