Rodar modelo em produção tem uma característica cruel: quando algo quebra, às vezes nada quebra visível. Esta semana o canal AI Engineer publicou duas palestras que tratam exatamente disso. Uma é uma caçada a dois bugs no vLLM que nunca levantaram exceção. A outra começa com um modelo falando de trás para frente e termina numa lição de álgebra aplicada a GPU.

O bug que não existia

Two Bugs That Hid in Plain Sight: A vLLM Debugging Detective Story · AI Engineer · 18min06s

Asaf Gardin e Yuval Belfer, da AI21, contam como o Jamba, modelo híbrido de Transformers e Mamba, passava a gerar saídas incoerentes sob certas condições de carga, sem um único erro no log. O bug aparecia em aproximadamente 1 a cada 1000 requisições, o que já basta para destruir a confiança no sistema e ainda assim escapa de quase qualquer teste.

O detalhe que mais vale o vídeo é a reprodução. O problema só se manifestava com a configuração de memória da GPU em 90%, e o time só conseguiu reproduzi-lo de forma confiável ao baixá-la para 20%. Ou seja: a condição de produção escondia o bug, e a condição de teste é que o expunha. Depois de isolado, o jogo mudou para algo mais convencional, entender a interação entre a arquitetura híbrida do Jamba e o gerenciamento de memória do vLLM, e corrigir com contribuições upstream na comunidade.

Fica a pergunta desconfortável: quantos sistemas em produção hoje geram respostas erradas a uma taxa de 0,1% e ninguém percebe, porque o erro não vem com stack trace?

A GPU não é lenta em matemática

Weight Folding, CUDA Streams, and the Bug That Made My Model Speak Backwards · AI Engineer · 17min18s

Filip Makraduli abre com uma frase que resume décadas de otimização: a GPU é rápida em matemática e lenta em tudo ao redor dela. Iniciar kernels e mover dados custa mais que a própria conta. O paper que ele apresenta ataca exatamente esse gargalo na camada de normalização RMS dos transformers.

A ideia central é o weight folding: fundir o ganho da normalização direto na matriz de pesos, o que dá de graça uma normalização a menos na inferência. Ele também mostra como adiar a divisão escalar permite paralelizar, via CUDA streams, operações que antes eram obrigatoriamente sequenciais. Em arquiteturas com RMS norm dupla, como a GEMA4, a invariância de escala permite até descartar uma das normalizações sem alterar o resultado. É a mesma família de raciocínio do Flash Attention: não fazer menos matemática, fazer menos tráfego.

E o modelo que falava de trás para frente no título? O próprio título já aponta a direção, com CUDA streams no meio da história. Provavelmente também silencioso.

Os dois vídeos juntos deixam uma lição: na inferência moderna, o inimigo raramente anuncia a chegada. Às vezes é um erro raro que só aparece sob carga, às vezes é só a memória da GPU alocada de mais.