Como a hierarquia de memória da GPU afeta a velocidade de inferência dos LLM

Tradução automática

Este artigo foi traduzido automaticamente a partir da versão original em inglês.

A hierarquia de memória da GPU afeta a inferência dos LLM porque transferir um tensor intermédio para a memória principal da GPU custa mais do que reutilizá-lo num kernel em execução. A HBM contém o modelo grande e a cache de atenção. Os registos, a memória partilhada e a L2 oferecem espaços mais pequenos para reutilizar dados durante o cálculo.

Os engenheiros que analisam o desempenho da inferência precisam de distinguir a capacidade de memória do tráfego de memória. O facto de um modelo caber na HBM não demonstra que os seus kernels transferem dados de forma eficiente.

O que contém cada memória

MemóriaÂmbitoPapel na inferência
RegistosValores usados por uma threadAcumuladores e cálculos intermédios
Memória partilhadaThreads num mesmo bloco de cálculoReutilização cooperativa de blocos de matrizes e reduções
Cache L2Partilhada por toda a GPUReutilização entre blocos sem outra leitura da memória principal
HBMMemória principal da GPUPesos, KV cache, entradas, saídas e resultados intermédios maiores

Para a H100 SXM, a NVIDIA indica 80 GB de HBM3 a 3.35 TB/s, 50 MB de L2 e até 228 KB de memória partilhada por multiprocessador de streaming. A quantidade disponível para um único bloco de threads é menor e depende das definições de alocação. Estas especificações dizem respeito a esta variante de GPU, e não a limites comuns a todas as H100. Consulte as especificações da H100 e o guia de otimização da Hopper.

Porque importa um tensor intermédio

Uma sequência de kernels separados pode escrever um resultado intermédio na HBM e voltar a lê-lo no kernel seguinte. A fusão pode manter esse resultado nos registos ou na memória partilhada. O FlashAttention aplica princípios semelhantes de reutilização de dados à atenção, evitando grandes matrizes de pontuações na HBM.

O armazenamento no chip é limitado. Um kernel que usa demasiados registos ou demasiada memória partilhada pode reduzir o número de blocos executados em simultâneo. A transferência de valores dos registos para a memória por falta de espaço pode acrescentar tráfego de memória. Por isso, mais fusão não garante uma execução mais rápida.

Ao investigar uma alteração, compare os bytes transferidos através da HBM, a utilização dos registos, a utilização da memória partilhada, as transferências dos registos para a memória e o número de blocos ativos. Mantenha constantes o modelo, as formas dos tensores, a precisão e a variante de GPU. Depois meça o pedido completo: um kernel de atenção mais rápido pode representar apenas uma pequena parte da latência total.

O guia de engenharia: hierarquia de memória da GPU mostra onde estas memórias se encontram numa H100 SXM.