Por que o Design do Modelo é a Próxima Fronteira de Performance

A maioria das discussões sobre engenharia de IA foca na infraestrutura de serviço: mais GPUs, melhores agendadores, caching inteligente. Mas a arquitetura do modelo em si dita silenciosamente o quão eficientemente o hardware pode rodar. Um modelo que ignora as restrições de hardware não roda apenas mais devagar—custa mais, escala pior e frustra usuários com respostas lentas.

A pesquisa recente da NVIDIA, detalhada no post de co-design de modelo de IA, fornece um guia prático para desenvolvedores de modelos. A ideia central: ao alinhar as dimensões e a estrutura do modelo com a forma como as GPUs executam operações, você pode empurrar toda a fronteira de Pareto de throughput vs. latência para fora, sem sacrificar a precisão.

Este guia traduz esses achados em 7 diretrizes acionáveis que você pode aplicar hoje.

NVIDIA GB300 server with GPU accelerators for high-throughput AI inference Coding Session Visual

O Modelo Roofline: Conheça seu Gargalo

Primeiro, entenda o modelo roofline: a performance é limitada ou por compute (FLOPS) ou por banda de memória. Workloads com baixa intensidade aritmética (operações por byte) são limitados por memória; alta intensidade significa que são limitados por compute. Para throughput, você quer estar no regime de compute. Para decodificação sensível à latência, você geralmente está limitado por memória.

Diretriz 1: Prefira Matrizes de Peso Quase Quadradas

Dimensões pequenas (tamanho oculto H ou tamanho intermediário H') deixam as GPUs subutilizadas. Por exemplo, com H'=512 e H=8192, mesmo com altas contagens de tokens, o GEMM permanece limitado por memória devido à pequena dimensão de redução.

# Exemplo conceitual: dimensões GEMM em uma camada transformer
# FFN-2: (Tokens, H) x (H, H') -> (Tokens, H')
# Se H' é pequeno (ex: 512), o GEMM é limitado por memória.
# Prefira H' próximo de H para melhor intensidade aritmética.

def gemm_arith_intensity(M, N, K):
    """Calcula a intensidade aritmética de um GEMM."""
    flops = 2 * M * N * K
    bytes_moved = M * K * 4 + N * K * 4  # assumindo FP32
    return flops / bytes_moved

# Exemplo: M=2048, N=8192, K=512 -> baixa intensidade
print(gemm_arith_intensity(2048, 8192, 512))  # ~0.5 FLOPs/byte
# Exemplo: M=2048, N=8192, K=8192 -> alta intensidade
print(gemm_arith_intensity(2048, 8192, 8192)) # ~2.0 FLOPs/byte

Diretriz 2: Alinhe Dimensões aos Tamanhos de Tile

GPUs executam GEMMs dividindo a matriz de saída em tiles. Se as dimensões não forem múltiplas dos tamanhos de tile (128, 256 com clusterMMA, 512 com CGA), você desperdiça ciclos com tiles parcialmente preenchidos. Sempre faça as dimensões múltiplas de 128, preferencialmente 256 ou 512.

Line chart showing Pareto frontier trade-off between throughput and latency in LLM serving Algorithm Concept Visual

Mais Largo vs. Mais Profundo, e Outras Alavancas de Paralelismo

Diretriz 3: Prefira Modelos Mais Largos

Para o mesmo orçamento de parâmetros, modelos mais largos (H maior, menos camadas) têm maior intensidade aritmética e menor latência. Eles reutilizam pesos mais e têm um caminho sequencial mais curto. No entanto, a profundidade importa para a precisão, então não sacrifique qualidade por largura.

Diretriz 4: Projete para Quantização

Quantização para NVFP4 (4 bits) pode aumentar drasticamente o throughput e reduzir o tráfego de memória. Projete camadas que tolerem execução de baixa precisão. O Model Optimizer e LLM Compressor da NVIDIA facilitam isso.

Diretriz 5: Escale o Paralelismo de Especialistas

Para modelos Mixture-of-Experts, o paralelismo de especialistas distribui os especialistas FFN entre as GPUs, enquanto a atenção usa paralelismo de dados. Isso evita o overhead de AllReduce do paralelismo de tensor e aumenta o throughput.

Diretriz 6: Use Padrões de Camadas Regulares para Pipeline Paralelo

O Chunked Pipeline Parallelism (CPP) divide as camadas e chunks de entrada entre as GPUs. Para funcionar, os estágios do pipeline devem ser balanceados. Use padrões de camadas regulares e repetíveis.

Diretriz 7: Desacople Atenção e FFN para Latência

Para serviço de baixa latência, paralelize atenção e FFNs independentemente. O Helix Parallelism fragmenta o cache KV na dimensão da sequência, permitindo melhor escalabilidade do que o paralelismo de tensor sozinho.

Framework diagram of Mixture-of-Experts model with expert parallelism across GPUs Software Concept Art

Juntando Tudo

Essas diretrizes formam um checklist para o design do seu próximo modelo:

  • Mantenha as dimensões quase quadradas e alinhadas a 128 (idealmente 256)
  • Prefira largura sobre profundidade
  • Projete para execução de baixa precisão (NVFP4)
  • Use padrões de camadas regulares e repetíveis
  • Escale o paralelismo de especialistas para MoE

Pequenas escolhas na arquitetura do modelo têm efeitos desproporcionais no desempenho real. Ao projetar com o hardware em mente, você pode entregar inferência mais rápida, maior throughput e melhores experiências de usuário—sem sacrificar a precisão.

Para um mergulho mais profundo na infraestrutura de serviço, confira nossa análise sobre modal vs. página separada em UX, ou aprenda como a Netflix roteia milhões de requisições de inferência de ML para entender o stack completo de serviço.

Limitações e Próximos Passos

Essas diretrizes são focadas principalmente em GPUs NVIDIA e podem não se aplicar diretamente a outros aceleradores. Além disso, o equilíbrio ideal entre largura e profundidade depende dos seus requisitos específicos de precisão. Como próximo passo, experimente com o TensorRT-LLM e Model Optimizer da NVIDIA em seus próprios modelos para medir o impacto.

Este conteúdo foi elaborado com o auxílio de ferramentas de IA, com base em fontes confiáveis, e revisado pela nossa equipe editorial antes da publicação. Não substitui o aconselhamento de um profissional especializado.