1 pontos por GN⁺ 2025-05-06 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2025-05-06
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

    • Processamento dentro da DRAM é uma ideia antiga, e nos anos 90 já havia vários artigos tentando transformar bancos de DRAM em máquinas SIMD
      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”

    • Algum dia vou colocar como contribuidores nosso departamento inteiro, os funcionários da deli e até as pessoas que estavam no parque às 14h
    • Isso parece um erro de formatação
      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

    • Esse tipo de comportamento existe desde as primeiras DRAMs com endereços de linha/coluna multiplexados
      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

    • Sim, e, surpreendentemente, conseguem fazer isso até em RAM padrão ao violar intencionalmente os parâmetros de temporização
      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
    • Rodar inferência de LLM em qualquer coisa deve virar o próximo “roda Doom”
  • 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

    • Em trading de alta frequência e baixa latência, isso acontece especialmente com placas de rede
      À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
    • Isso normalmente entra na categoria de testes de interoperabilidade, mas em geral é mitigado por firmware, não por hardware
      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
    • Comportamento indefinido em C/C++ é debatido há muito tempo
      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?

    • Matrizes são uma forma de representar funções lineares. Por exemplo, funções que combinam bem com adição e multiplicação por escalar
      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
    • Quatérnios têm apenas 4 dimensões fixas
      Redes neurais precisam de muito mais dimensões
    • Parece que você está misturando vários conceitos. Quatérnios ficam na mesma categoria que números complexos
      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
    • Pelo que entendi, em computação gráfica a principal vantagem dos quatérnios é representar rotações de uma forma que não sofre de gimbal lock
      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...

    • Acho bem provável que existam materiais ainda anteriores
      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?

  • É 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 :-)

    • Sim, mas o impacto é pequeno
      Para mais detalhes, basta ler o artigo ou pesquisar por “temperature”