1 pontos por GN⁺ 2024-09-08 | 1 comentários | Compartilhar no WhatsApp

LLMs acelerados por hardware: pesquisa abrangente e comparação

  • Os LLMs surgiram como ferramentas poderosas em tarefas de processamento de linguagem natural, revolucionando a área com sua capacidade de compreender e gerar texto semelhante ao humano
  • Este artigo faz uma investigação abrangente de diversos esforços de pesquisa sobre a aceleração de redes Transformer para grandes modelos de linguagem usando aceleradores de hardware

Framework e comparação

  • Apresenta o framework proposto e realiza comparações qualitativas e quantitativas sobre tecnologia, plataforma de processamento (FPGA, ASIC, In-Memory, GPU), ganho de velocidade, eficiência energética, desempenho (GOPs) e eficiência energética (GOPs/W)
  • O principal desafio é que cada esquema proposto foi implementado em tecnologias de processo diferentes, o que dificulta uma comparação justa
  • A principal contribuição deste artigo é estimar os resultados de desempenho e eficiência energética na mesma tecnologia, permitindo uma comparação justa

Experimentos e resultados

  • Implementa partes de LLMs em vários chips FPGA para estimar os resultados na mesma tecnologia de processo e comparar o desempenho de forma justa

Resumo do GN⁺

  • Este artigo oferece uma pesquisa abrangente sobre a aceleração de hardware de grandes modelos de linguagem (LLMs)
  • Compara desempenho e eficiência energética em diferentes plataformas de processamento, permitindo uma comparação justa
  • Usa experimentos com chips FPGA para estimar resultados na mesma tecnologia
  • Pode ser útil para pessoas interessadas em melhorar o desempenho de LLMs na área de processamento de linguagem natural
  • Outros projetos com funcionalidades semelhantes incluem os aceleradores de GPU da NVIDIA e as TPUs do Google

1 comentários

 
GN⁺ 2024-09-08
Opiniões no Hacker News
  • Este artigo tem uma contextualização superficial, então, para acrescentar contexto: desde o início dos anos 1990 havia a observação de que o desempenho de computação da CPU (FLOPs) melhorava mais rapidamente do que a largura de banda de memória; em 1995, William Wulf e Sally Mckee previram que essa diferença levaria a uma barreira de memória, na qual a maior parte da computação seria limitada não por operações aritméticas, mas pelo acesso a dados.
    Nos últimos 20 anos, o pico de FLOPS do hardware de servidores aumentou 3 vezes a cada 2 anos, mas a largura de banda de DRAM e de interconexão cresceu apenas cerca de 1,6 vez e 1,4 vez, respectivamente.
    Por isso, no treinamento e na inferência de LLMs, o gargalo de desempenho está se deslocando cada vez mais para a largura de banda de memória e, em especial nos modelos decodificadores Transformer autorregressivos, isso pode se tornar o gargalo dominante.
    Essa tendência está criando demanda por tecnologias como Compute-in-memory (CIM) e processing-in-memory (PIM). Como se trata de hardware que opera diretamente sobre os dados dentro da memória, sem primeiro movê-los para registradores da CPU, ele pode reduzir latência e consumo de energia, além de ter potencial para contornar a barreira de memória.
    O artigo extrapola até um nó de 16 nm por meio de ajuste polinomial para comparar hardware ASIC e FPGA em diferentes tamanhos de processo semicondutor: “Com base em ‘Scaling equations for the accurate prediction of CMOS device performance from 180 nm to 7nm’, de Aaron Stillmaker e B. Baas, extrapolamos o desempenho e a eficiência energética em tecnologia de 16 nm para uma comparação justa”.
    Mas, para CIM/PIM, ele diz: “Como o desempenho de aceleradores in-memory não se baseia apenas na tecnologia de processo, realizamos a extrapolação apenas para aceleradores FPGA e ASIC, nos quais a tecnologia de processo afeta significativamente o desempenho do sistema”, e não faz a extrapolação. À primeira vista, parece uma decisão estranha, e provavelmente há alguém que possa explicar melhor esse ponto.
    Leituras adicionais: https://arxiv.org/abs/2403.14123, https://en.m.wikipedia.org/wiki/In-memory_processing, http://vcl.ece.ucdavis.edu/pubs/2017.02.VLSIintegration.Tech...

    • Essas tentativas em geral fracassaram no mercado, e deixei uma lista organizada aqui: https://news.ycombinator.com/item?id=41069685
      Ainda assim, gosto de produtos que vêm em formato de módulo de RAM e têm preço baixo. Dá para imaginar encher uma placa 1U com vários desses módulos e conectá-los por uma interconexão de alta velocidade, ou até lotar uma placa PCI com eles.
    • Talvez isso estivesse correto até antes de 2018, mas desde então a Ethernet 400GbE se tornou a interconexão adotada mais rapidamente, e hoje já existem interconexões de 1,6 Tbit.
      O PCI-e V4 passou rápido demais, parece que teve uma vida útil de só uns 2 anos, e o NVMeOF vem escalando bem junto com o desempenho da malha. O H100 DGX atual tem uma interconexão de 400 GB/s.
    • Fico me perguntando o que aconteceu, afinal, com os memristores e com a promessa de que a memória passaria a existir ao lado da CPU.
    • Exato. O Dr. Jung Bae Lee, da Samsung, também disse algo parecido recentemente.
      “O crescimento explosivo dos modelos de IA está sendo limitado pelo aumento da lacuna entre desempenho computacional e largura de banda de memória. Modelos de próxima geração como o GPT-5 devem chegar a uma escala sem precedentes de 3 a 5 trilhões de parâmetros, mas o gargalo técnico da largura de banda de memória está se tornando um obstáculo central para realizar plenamente seu potencial.”
      https://www.lycee.ai/blog/2024-09-04-samsung-memory-bottlene...
  • Sempre gostei de arranjos sistólicos e, depois de examinar várias opções ao longo das últimas décadas, considero que uma grade cartesiana de células é a solução ideal.
    Cada célula tem 4 bits de entrada vindos dos vizinhos, um de cada, e 4 bits de saída indo para os vizinhos, um para cada. No centro há um registrador de deslocamento de 64 bits em uma longa cadeia de varredura, e sua saída entra em 4 multiplexadores 16:1 e em um latch de 4 bits.
    Usando a mágica da coloração de grafos para aplicar clock a todas as células em um padrão xadrez, os dados podem fluir em qualquer direção sem viés para uma direção específica e sem condições de corrida. As entradas de qualquer célula ficam em estado estável.
    Esse método oferece a flexibilidade de um FPGA sem precisar se preocupar com problemas de temporização, condições de corrida, glitches etc. Os fios também são todos curtos, então tudo é local, rápido e de baixo consumo.
    Por outro lado, não é eficiente em termos de portas nem oferece o caminho lógico mais curto. Todas as operações individuais acontecem, na prática, em paralelo, e todos os cálculos são pipelineados.
    É uma ideia que tenho desde cerca de 1982, e eu gostaria que alguém a assumisse e a construísse direito. Chamo-a de BitGrid.

    • Parece parecido com o chip GA144, criado pelo inventor do Forth.
    • Lembra uma TPU.
  • Material relacionado: https://arxiv.org/pdf/2406.08413
    Memory Is All You Need: An Overview of Compute-in-Memory Architectures for Accelerating Large Language Model Inference

  • Quero ver um LLM rodando em WebGL, onde tudo é textura. Ver visualmente as diferenças de arquitetura deve ser bem interessante.

    • Não seria meio parecido com assistir a ruído estático?
    • O Google não tem uma ferramenta para verificar o estado de ativação das matrizes? Acho que era o Gemma Scope.
  • O gargalo hoje em dia é a movimentação de memória, e é por isso que HBM é caro. O design da Nvidia também é otimizado, tanto no nível do chip quanto no nível do sistema, para a memória, que é o verdadeiro gargalo.

    • Fico me perguntando por que todas as GPUs não migraram para HBMx.
      Na prática, não se vê muito isso.
  • Será que uma arquitetura híbrida de FPGA + ASIC + in-memory pode ter um papel em escalabilidade e flexibilidade? Como cada um tem seus pontos fortes — FPGA em flexibilidade, ASIC em desempenho e in-memory em eficiência energética — fico curioso se uma abordagem híbrida que integre tudo isso poderia elevar ainda mais o desempenho de LLMs

    • Normalmente, começa-se primeiro com FPGA + memória e, quando se acerta o ponto adequado em que há volume de mercado, troca-se o FPGA por ASIC para reduzir custo e aumentar desempenho. Empresas grandes tendem a ir direto para ASIC
  • In-memory parece fazer sentido não só em termos de desempenho, mas também como direção. Não faz muito sentido criar um ASIC ou programar um FPGA para um modelo que, mesmo com sorte, provavelmente ficará ultrapassado em alguns meses

  • Houve um artigo sobre executar LLMs com energia no nível de uma lâmpada
    https://arxiv.org/abs/2406.02528
    https://news.ucsc.edu/2024/06/matmul-free-llm.html

    • Ele afirma uma redução de 90% na memória, com código open source reproduzível em GPUs padrão: https://github.com/ridgerchu/matmulfreellm
      O ponto central é usar duas técnicas para evitar multiplicação de matrizes. Primeiro, força todos os números dentro das matrizes a assumirem apenas três valores ternários, -1, 0 e +1, reduzindo multiplicações a somas. Segundo, em vez de multiplicar todos os elementos um por um, sobrepõe as matrizes e executa apenas as operações importantes
      Os pesquisadores dizem ter introduzido computação baseada em tempo no treinamento do modelo para manter o desempenho da rede neural, o que dá à rede uma “memória” das informações importantes que processa e melhora o desempenho
      Em GPUs padrão, o uso de memória caiu para cerca de um décimo e a velocidade aumentou cerca de 25%; isso pode abrir caminho para executar o algoritmo em capacidade máxima mesmo em dispositivos com pouca memória, como smartphones. Um protótipo em FPGA feito em três semanas superou uma taxa de processamento legível por humanos usando apenas 13 W, enquanto uma GPU precisaria de cerca de 700 W, tornando o hardware customizado mais de 50 vezes mais eficiente que uma GPU, segundo eles
  • Não tenho certeza se in-memory aqui se refere a um hardware especial que combina CPU e RAM

    • Imagino que seja uma abordagem que coloca hardware de MAC no die de DRAM. Se for HBM empilhada, talvez possa entrar no die do substrato
      Citando um artigo antigo de aceleração que mostrou melhoria de 19× em relação a DRAM + GPU: “Como operações MAC dominam a maior parte do tempo de execução das tarefas de machine learning, propomos multiplicação dentro do subarray e acumulação dentro do banco. A multiplicação é processada por um método baseado em colunas que executa operações AND e somas, adicionando menos de 1% de overhead de área”
      https://arxiv.org/pdf/2105.03736
    • In-memory geralmente significa não recarregar os dados do armazenamento
  • Existe uma forma de ver o conteúdo do Arxiv de um jeito mais legível?
    Toda vez que entro nesse site, fico me perguntando se aquilo sequer tem uma interface, me perco e acabo saindo antes de chegar ao conteúdo

    • Clicando em View PDF ou HTML (experimental) no canto superior direito, dá para ir ao texto
    • Como é um site de pré-publicação de artigos, basicamente tudo fica em formato PDF. Recentemente também foi adicionado HTML: https://arxiv.org/html/2409.03384v1
      Para artigos individuais, esse é o melhor jeito, e também existem alguns front-ends para o Arxiv, como https://arxiv-sanity-lite.com/
    • Eu também abri esse link hoje e pensei: “ah, só tem o resumo, vou sair”. Já li artigos do Arxiv antes, mas, olhando só para a UI, não parece que o conteúdo está disponível