Compilador Esparso: Desbloqueando Novas Fronteiras na Inferência de LLM | GPU A100 Potencializa Computação Esparsa

Compilador Esparso: Desbloqueando Novas Fronteiras na Inferência de LLM | GPU A100 Potencializa Computação Esparsa

Técnicas Esparsas para Aceleração de 100x na Inferência de Modelos de Linguagem Grandes. Explore como compiladores esparsos revolucionam a inferência de LLM, desbloqueando eficiência e velocidade sem precedentes. Na discussão anterior sobre “Como os LLMs Aceleram a Inferência através da Esparsidade”, exploramos a segunda parte, “Acelerando a Inferência com Esparsidade de Ativação.” Clique aqui para revisar a primeira parte, “Como os LLMs Realizam Poda.” Nesta edição, vamos nos aprofundar na terceira parte, “O Impacto dos Compiladores Esparsos na Inferência de LLM.”

A Necessidade de Compiladores

Desenvolvimentos recentes indicam que os cálculos de aprendizado profundo estão se tornando cada vez mais esparsos, ou seja, as operações são realizadas em tensores com múltiplos zeros. Além dos pesos esparsos do modelo (tipicamente estáticos e conhecidos a priori), foram descobertos padrões esparsos mais dependentes da entrada e conhecidos apenas em tempo de execução, nomeadamente a esparsidade dinâmica. Por exemplo, grandes modelos de linguagem (LLMs) como GPT e OPT exibem vários tipos de esparsidade dinâmica. Primeiramente, modelos Transformer (e outros tipos de modelos) demonstram esparsidade dinâmica inerente em suas entradas, ativações e gradientes. Em gráficos de ativação, apenas uns poucos elementos são diferentes de zero (por exemplo, 3,0% para T5-Base, 6,3% para ViT-B/16). Em segundo lugar, a esparsidade dinâmica é usada para escalar ainda mais os modelos DNN. A maioria dos modelos existentes com mais de um trilhão de parâmetros adota uma arquitetura de mistura de especialistas (MoE), que ativa especialistas dinamicamente com base em entradas esparsas. Além disso, o treinamento com esparsidade dinâmica poda dinamicamente conexões menos importantes no modelo durante o treinamento, ganhando cada vez mais atenção por sua eficiência computacional superior. A esparsidade dinâmica, onde os padrões esparsos são desconhecidos antes da execução, apresenta desafios significativos ao aprendizado profundo. As soluções avançadas de aprendizado profundo conscientes de esparsidade são limitadas a padrões esparsos estáticos predefinidos devido à sobrecarga significativa associada ao pré-processamento. A execução eficiente de cálculos dinamicamente esparsos frequentemente enfrenta inconsistência entre configurações de blocos de tensores amigáveis à GPU para execução eficiente e minimização do desperdício de cobertura (valores diferentes de zero em tensores) em formas de blocos conscientes de esparsidade. A esparsidade em LLMs requer o uso de operadores esparsos, e bibliotecas tradicionais como cuSPARSE ou Sputnik, devido aos seus designs genéricos em vez de otimais, envolvem ou o suporte apenas a kernels esparsos compilados estaticamente ou a necessidade de conversão dinâmica de matrizes esparsas para formato denso, resultando em sobrecarga de desempenho significativa em cenários de esparsidade dinâmica.

Comparação de Compiladores Principais

Os principais compiladores de computação esparsa atuais incluem cuSPARSE, Sputnik, OpenAI Block Sparse, SparTA e PIT, conforme referência [11]. Abaixo está uma tabela comparativa de dados de aceleração: Cenário: Multiplicação de matrizes de tamanho 4096 × 4096 × 4096 Métrica: Latência (ms)

Vale mencionar que o PIT supera a otimização esparsa de última geração, alcançando acelerações de até 88,7x, 5,8x, 17,5x e 5,7x em comparação com cuSPARSE, Sputnik, OpenAI Block Sparse e SparTA, respectivamente.

O impacto dos compiladores na inferência de LLM

OPT

O experimento [11] avalia o PIT usando o conjunto de dados Alpaca em duas versões do modelo OPT: OPT13B e 30B, em oito GPUs V100–32GB. O PIT aplica duas otimizações de esparsidade dinâmica no OPT: (1) eliminação da sobrecarga de padding para frases de diferentes comprimentos no mesmo lote; (2) aproveitamento da esparsidade fina (até 99%) criada pelas ativações ReLU nas camadas FFN. O tamanho do lote é definido como 32, e o PyTorch-S utiliza o Triton como backend.

Latência ponta a ponta por lote e pegadas de memória do OPT O desempenho do PIT supera PyTorch, PyTorchS e DeepSpeed em 2,1x ∼ 2,3x, 2,5x ∼ 3,0x e 2,0x ∼ 2,2x, respectivamente. Evitar o padding em sequências dinâmicas contribui para que o PIT alcance uma aceleração de 1,6x ∼ 1,7x em relação à linha de base. Ao aproveitar ainda mais a esparsidade dinâmica nas ativações ReLU das camadas FFN, o PIT aumenta o desempenho em 1,3x ∼ 1,4x. Comparado ao PyTorch-S que usa kernels esparsos em bloco do Triton com tamanho de bloco 32x32, o PIT emprega micro-blocos menores (ou seja, 1x32) e computações eficientes com SRead e SWrite, evitando desperdício computacional. Além disso, o PyTorch-S também é afetado pela sobrecarga da conversão de formato esparso, portanto apresenta a maior latência. Em termos de consumo de memória, o DeepSpeed tem o menor uso de memória, pois funde toda a camada do codificador em um único operador, economizando memória de ativação.

MOE

Em experimentos [11] no SwinMoE, um modelo de visão grande com estrutura de codificador e MoE, o desempenho do PIT foi avaliado em A100 usando precisão float16. Para transformers visuais, as imagens de entrada dentro do mesmo lote foram redimensionadas para a mesma resolução para garantir comprimento de sequência consistente. Em nossos experimentos, comparamos a latência de inferência ponta a ponta e o uso de memória do Swin-MoE com diferentes tamanhos de lote e contagens de especialistas. O MegaBlocks supera outras linhas de base ao executar todos os especialistas simultaneamente, utilizando efetivamente kernels esparsos para evitar desperdício computacional. O PIT melhora ainda mais o desempenho ao suportar reordenamento de dados no movimento de dados entre hierarquias de memória em comparação com o MegaBlocks.

Latência ponta a ponta e pegadas de memória do SwinMoE em A100 Em comparação com PyTorch, PyTorchS, Tutel, DeepSpeed e MegaBlocks, o PIT alcançou acelerações de 1,5x ∼ 6,3x, 1,5x ∼ 2,9x, 1,1x ∼ 1,8x, 1,2x ∼ 1,6x e 1,1x ∼ 1,4x, respectivamente. A melhoria de desempenho do PIT no Swin-MoE é menor do que no Switch Transformer, pois o Swin-MoE tem significativamente menos especialistas que o Switch Transformer. Portanto, quando o número de especialistas aumenta de 8 para 32, a camada MoE contribui apenas com 23,6% a 61,2% da latência ponta a ponta. Ao comparar a latência apenas da camada MoE, o PIT é aproximadamente 1,2x ∼ 1,7x mais rápido que o MegaBlocks. Aqui estão os dados comparativos compilados para o PIT:

Finalmente, vamos discutir o suporte de hardware necessário para aceleração.

GPU

NVIDIA A100

O A100 utiliza a nova arquitetura Ampere, com até 6912 núcleos CUDA e 40 GB de memória HBM2 de alta velocidade. Ele também suporta a tecnologia NVLink de segunda geração, permitindo comunicação rápida GPU-para-GPU e aumentando as velocidades de treinamento para modelos grandes. O A100 introduz novos e poderosos Tensor Cores de terceira geração, juntamente com suporte abrangente para tipos de dados DL e HPC, bem como novos recursos de esparsidade para dobrar ainda mais a taxa de transferência. As operações TF32 Tensor Core no A100 fornecem um caminho direto para acelerar dados de entrada/saída FP32 em frameworks DL e HPC, rodando 10 vezes mais rápido que as operações FP32 FMA do V100, ou 20 vezes mais rápido no caso de esparsidade. Para DL de precisão mista FP16/FP32, o desempenho do A100 é 2,5 vezes o do V100, aumentando para 5 vezes com esparsidade. Ao executar modelos de IA com o framework PyTorch, em comparação com o chip V100 da geração anterior, o A100 demonstra uma melhoria de desempenho de 6x no treinamento do modelo BERT e uma melhoria de 7x na inferência do BERT.

Intel Max Series GPU

De acordo com a referência [18], implementações recentes de duas operações de matriz esparsa na GPU NVIDIA V100 mostraram ganhos de desempenho de até 10 vezes em comparação com a implementação de referência no V100.

Conclusão

Em resumo, aqui estão três conclusões sobre a aceleração da inferência de LLM através da esparsidade:

  • A esparsidade de pesos (50%), a esparsidade de ativação (90%) e a esparsidade MOE (por exemplo, Mistral 8x7B com 75% de esparsidade dinâmica) são fatores ortogonais (os efeitos podem ser cumulativos, mas o desempenho do modelo pode ser afetado). Combinado com o efeito de aceleração de 2–3x do compilador PIT em modelos esparsos, em comparação com os frameworks de inferência atuais (TGI/vLLM, etc.), há um limite de aceleração teórico de 5 a 30 vezes.
  • A latência é o foco principal das atuais técnicas de esparsidade (a esparsidade tem certa eficácia; quanto maior o tamanho do lote, pior o efeito da esparsidade). A direção de throughput será uma nova direção de otimização porque a esparsidade de ativação exibe uma certa distribuição de lei de potência, oferecendo potencial significativo de otimização de engenharia.
  • Converter ativações não ReLU para ativações ReLU em LLM tem custos relativamente baixos (cerca de 3% de custo de fine-tuning; a qualidade dos dados é relativamente importante). Além disso, treinar preditores no DejaVu tem custos mais baixos (treinamento rápido e independente dos dados). Combinado com a redução de custo trazida pelo aumento da velocidade de inferência, esta é uma iniciativa de alto ROI e comercialmente viável.

Artigo de Referência

[11]Pit: Optimization of dynamic sparse deep learning models via permutation invariant transformation [18]Performance Optimization of Deep Learning Sparse Matrix Kernels on Intel Max Series GPU

novita.ai fornece API Stable Diffusion e centenas de APIs de geração de imagens de IA rápidas e mais baratas para 10.000 modelos.🎯 Geração mais rápida em apenas 2 segundos, Pay-As-You-Go, a partir de $0,0015 por imagem padrão, você pode adicionar seus próprios modelos e evitar manutenção de GPU. Compartilhe extensões de código aberto gratuitamente.

Leitura recomendada Unveiling LLM-Pruner Techniques: Doubling Inference Speed

Activation Sparsity Revolution: Enhancing Model Performance and Speedup Inference without Retraining!