Fronteira

O modelo roofline

Um gráfico posiciona cada kernel por arithmetic intensity; o prefill do Qwen3.8-27B fica acima do ridge point, limitado por compute, enquanto o decode em batch 1 e suas camadas de DeltaNet ficam bem à esquerda, limitados por bandwidth.

Atualizada em

01 · Conceito

Conceito

Um relatório de profiling cai na sua mesa. O kernel de decode do Qwen3.8-27B atinge três décimos de um por cento da taxa de ponto flutuante de pico da GPU. A leitura óbvia é que alguém escreveu um kernel péssimo e que uma reescrita recupera duas ordens de grandeza. O modelo roofline existe para dizer a você, em uns trinta segundos e sem tocar no código, que essa leitura está quase certamente errada e que o kernel talvez já esteja perfeito.

Williams, Waterman e Patterson publicaram o modelo em 2009 justamente para tornar esse julgamento barato. Ele comprime uma máquina em dois números e um kernel em um. A máquina contribui com sua taxa aritmética de pico e sua memory bandwidth de pico. O kernel contribui com sua arithmetic intensity, as operações que realiza por byte que precisa mover da memória. O desempenho atingível é então o menor entre o que as unidades aritméticas podem entregar e o que o sistema de memória consegue alimentar:

Patingıˊvel(I) = min(Ppico, βI),P_{\text{atingível}}(I) \ =\ \min\left(P_{\text{pico}},\ \beta \cdot I\right),

onde β\beta é a bandwidth em bytes por segundo e II é a intensidade em operações por byte. Plotado com a intensidade no eixo horizontal e o desempenho no vertical, ambos em escala logarítmica, isso desenha uma reta inclinada de coeficiente um que para abruptamente num teto horizontal. A dobra é o ridge point, a intensidade na qual os dois limites se igualam:

I = Ppicoβ.I^{*} \ =\ \frac{P_{\text{pico}}}{\beta}.
cristadecode lote 1prefill 8k
0,11101001.000
0,11101001.00010.000

Intensidade aritmética (FLOP/byte)

Desempenho atingível (TFLOP/s)

  • Teto de banda
  • Teto de computação
Ver os dados desta figura
Intensidade aritméticaTeto de bandaTeto de computação
0,10,335
13,35
295,224989989
8.192989
10.000989
O modelo rooflineO desempenho atingível é o menor de dois tetos. À esquerda da crista o kernel é limitado por banda e só mais aritmética por byte ajuda; à direita, só mais computação. A decodificação fica bem à esquerda, e é por isso que ela é uma máquina diferente do prefill.

Usando os números classe H100 informados pelo fabricante na lição 9.1, aproximadamente mil teraflops densos em bf16 contra 3,35 TB/s de HBM3, o ridge point cai perto de 300 operações por byte, em agosto de 2026 e sujeito a todas as ressalvas que esses números carregam. À esquerda do ridge, o sistema de memória é a restrição. À direita, a aritmética é. Esse é o modelo inteiro, e ele basta para precificar a maioria das propostas de otimização antes de alguém escrever código.

Posicione o Qwen3.8-27B nele. O prefill de um prompt de 8.192 tokens carrega a intensidade estabelecida na lição 7.3, cerca de 8.192 operações por byte de peso, porque cada peso buscado serve todas as posições do prompt simultaneamente. Isso é aproximadamente 27 vezes além do ridge point, então o prefill corre sobre o teto plano de compute. Seu desempenho atingível é PpicoP_{\text{pico}}, e as perguntas honestas de engenharia ali são sobre ocupação dos tensor cores, tiling e formato numérico, porque é isso que move você ao longo de um teto contra o qual você de fato está pressionado. O time to first token responde à aritmética. Comprar FLOPs para o prefill é uma compra defensável.

O decode em batch 1 carrega intensidade perto de um. Seu desempenho atingível é, portanto,

Patingıˊvel = 3.35×1012 Bs×1 opB = 3.35 TFLOP/s,P_{\text{atingível}} \ =\ 3.35\times10^{12}\ \frac{\text{B}}{\text{s}} \times 1\ \frac{\text{op}}{\text{B}} \ =\ 3.35\ \text{TFLOP/s},

o que, contra um teto de mil teraflops, é cerca de 0,34 por cento do pico. Então o relatório de profiling descreve um kernel sentado exatamente sobre seu roofline. Ele não é ineficiente. Ele está num teto diferente. Nada no fluxo de instruções pode ser reordenado para corrigir isso, porque as unidades aritméticas nunca foram o recurso escasso, e essa é a correção que poupa times de meses de micro-otimização de kernel que recupera percentuais de um dígito. Fazer batch de 32 sequências move o ponto para intensidade 32 e permite cerca de 107 teraflops, um ganho de aproximadamente trinta e duas vezes, ainda uma ordem de grandeza aquém do ridge, ainda no teto inclinado, e obtido inteiramente por mudar a carga de trabalho em vez do kernel.

O layout híbrido coloca dois pontos distintos no gráfico para um só modelo, o que é o que torna o Qwen3.8-27B interessante de perfilar. As 16 camadas de full attention leem um histórico de key-value que cresce a 64 KiB por token, o número derivado na lição 7.2, enquanto a aritmética que cada nova query realiza contra esse histórico cresce na mesma taxa. A intensidade delas é aproximadamente constante e baixa, mas os bytes absolutos por passo sobem, então, conforme o contexto se alonga, essas camadas consomem uma fatia crescente do tempo de passo no teto de bandwidth. As 48 camadas de Gated DeltaNet se comportam de forma diferente. Elas leem e atualizam um estado recorrente fixo de aproximadamente 3 MiB por camada, cerca de 144 MiB no total no caminho float32 de referência, não importa quão longa a conversa tenha ficado. O ponto delas não se move. Três quartos da profundidade do modelo, portanto, contribuem com um custo constante e limitado a cada passo de decode, enquanto um quarto contribui com um custo crescente — que é a barganha arquitetural reenunciada em termos de roofline.

Transformar isso de esboço em evidência exige contadores reais, não estimativas. Profilers de kernel reportam bandwidth atingida e aritmética atingida separadamente e conseguem posicionar um kernel medido sobre um roofline medido, incluindo tetos secundários para L2 e memória compartilhada. Essa distinção importa porque a intensidade estimada que você deriva no papel e a intensidade que um kernel de fato exibe divergem sempre que caching, padding ou layout de memória diferem da idealização.

O retorno é um hábito. Antes de otimizar, estime a intensidade, compare com o ridge point e deixe o gráfico dizer se você está comprando bytes ou operações. A lição 9.4 aplica esse hábito a silício específico, onde uma peça mais nova muda os dois tetos ao mesmo tempo e também a capacidade por baixo deles.

02 · Analogia

Analogia

Uma bicicleta de carga tem velocidade máxima e carga máxima, e uma rota tem um número fixo de entregas por quilômetro. Coloque entregas por quilômetro num eixo e você lê, sem pedalar, se a viagem é limitada pela velocidade com que você pedala ou pela frequência com que você para. Rotas densas são limitadas pela pedalada; rotas esparsas são limitadas pelas paradas, e comprar uma bicicleta mais rápida só ajuda uma delas. O roofline é esse gráfico para kernels, com a arithmetic intensity no papel de entregas por quilômetro.

03 · Explique de volta

Explique de volta

Enuncie a fórmula do roofline, calcule o ridge point de uma GPU classe H100 e posicione o prefill do Qwen3.8-27B, o decode em batch 1 e as camadas de DeltaNet no gráfico resultante.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Aguardando sua explicação.

Comparar com uma resposta-modelo

O desempenho atingível é o mínimo entre a taxa aritmética de pico da máquina e sua memory bandwidth multiplicada pela arithmetic intensity do kernel, então o gráfico é um teto inclinado de bandwidth que encontra um teto plano de compute no ridge point, onde a intensidade iguala os FLOPs de pico divididos pela bandwidth. Para uma peça classe H100 com números informados pelo fabricante perto de mil teraflops e 3,35 TB/s, o ridge point fica em torno de 300 operações por byte. O prefill de um prompt de 8.192 tokens tem intensidade perto de 8.192, muito à direita do ridge, então ele corre sobre o teto plano de compute e é limitado por aritmética. O decode em batch 1 tem intensidade perto de um, então fica no teto inclinado a aproximadamente 3,35 teraflops, cerca de três décimos de um por cento do pico, e é limitado por bandwidth. As 16 camadas de full attention mantêm uma intensidade baixa aproximadamente fixa conforme o contexto cresce, porque cada nova query lê 64 KiB a mais de histórico por token e executa proporcionalmente mais aritmética sobre ele — a razão quase não se move, mas os bytes absolutos por passo sobem, então essas camadas passam a ocupar uma fatia crescente do tempo de passo no teto de bandwidth. As 48 camadas de Gated DeltaNet mantêm posição e custo, porque seus aproximadamente 144 MiB de estado float32 de referência não crescem nem encolhem com o contexto.

04 · Teste seu entendimento

Teste seu entendimento

01Um kernel de decode atinge 0,3 por cento do pico de FLOPs de uma H100. O que o modelo roofline conclui?
Resposta e explicação

O kernel pode já estar a 100 por cento do roofline atingível; só elevar a arithmetic intensity ou a bandwidth ajuda — Com intensidade perto de uma operação por byte, o teto de bandwidth permite apenas cerca de 3,35 teraflops; atingir isso é eficiência perfeita, e a correção está na intensidade, não no escalonamento de instruções.

02A lição 7.2 derivou 64 KiB de key-value cache por token para o Qwen3.8-27B. Conforme a conversa cresce, como as 16 camadas de full attention se movem no gráfico roofline?
Resposta e explicação

Quase não se movem, porque bytes lidos e aritmética crescem juntos com o contexto — mas o custo absoluto por passo sobe, ocupando uma fatia crescente do tempo no teto de bandwidth — Cada nova query atende sobre um histórico cada vez maior E executa proporcionalmente mais aritmética sobre ele, então a intensidade permanece aproximadamente constante e baixa. O que cresce são os bytes absolutos movidos por passo, e é por isso que essas camadas dominam um decode de contexto longo sem nunca derivar para a esquerda.

Conclua o teach-back e acerte o quiz para finalizar a aula.

◎ · Marcador de evidência

Fontes

  1. Samuel Williams, Andrew Waterman e David Patterson (2009). Roofline: An Insightful Visual Performance Model for Multicore Architectures.
  2. NVIDIA Corporation (2026). Nsight Compute Documentation.
  3. Qwen Team (2026). Qwen3.8-27B Model Card.