Voltar
Não escreva kernels, derive-os
⚙️CEVIU IA

Tang propõe derivar kernels em tempo de execução, em vez de escrevê-los à mão

Aprofundamento CEVIU

Aprofundamento

A proposta do Tang parte de um incômodo conhecido: todo modelo rápido hoje roda sobre kernels escritos à mão, um por operador, por chip e por fusão. Cada um congela escolhas de fusão, localização dos dados e divisão de trabalho entre threads, certas para uma forma em um dispositivo. A IR tensorial do Tang tem duas construções. Views são mapas afins do espaço de iteração para coordenadas do tensor. Comprehensions são reduções sob um monoide, com corpo em grafo de expressões escalares. O resto é reescrita ou schedule. Fusão é uma regra de substituição, e a flash attention sai do reconhecimento do online softmax como monoide, sem kernel dedicado.

Os números mostram um resultado misto, e a própria fonte diz isso. Numa RTX 3090 ociosa, o forward de um bloco transformer em sequência 512 é 1,2× mais rápido que o PyTorch capturado em CUDA graph com TF32. Em sequência 128, o PyTorch é 1,2× mais rápido, e forward mais backward empata. O Qwen3-8B decodifica como um único grafo de IR a 148,7 tok/s, empatado com o llama.cpp em contexto curto e a 92% dele em 4k. A atenção derivada fica atrás da FlashAttention-2 em todos os tamanhos testados, e na RTX 3090 chega a ser cerca de 150× mais lenta em um caso sem tensor core gerado. Contra a FlashAttention-3, roda a 0,43 a 0,54 da velocidade no forward e 0,22 a 0,40 no backward.

No motor de um MoE de 80B em uma H200, a camada de experts derivada é 18% mais lenta no batch 1, 7% mais lenta no 4, empata no 8 e é 5% mais rápida no 64. O passo de decode cai 5 a 12% entre 16 e 48 streams, mas o caminho derivado não passa o critério de concordância do motor em 48 streams (98,93% contra 99%). O tempo até o primeiro token em 44k tokens cai de 8,33 s para 5,54 s, só que o vLLM com checkpoint FP8 chega ao primeiro token cerca de 12× mais rápido que esse motor. O ganho é sobre o baseline próprio, não sobre o estado da arte. O backward de atenção fused em bf16 também erra a tolerância f32 e a busca o rejeita.

Por que isso importa

Para quem opera inferência em hardware variado, a leitura é que o ganho do Tang está menos em bater kernels afinados e mais em cobrir WGSL, CUDA, Metal e outros alvos a partir de um grafo só. Isso reduz o custo de manter cópias da mesma aritmética. Quem busca desempenho máximo em datacenter ainda tem motivos para ficar com FlashAttention e vLLM, já que o trabalho admite ficar atrás deles em vários casos.

Perguntas frequentes

O que o Tang propõe de diferente?

Em vez de escrever um kernel por operador, chip e fusão, o Tang deriva os kernels de uma IR com views e comprehensions. Fusão, flash attention e o backward saem de reescritas. O schedule, como precisão e mapeamento de threads, é escolhido por medição no dispositivo.

O Tang é mais rápido que o PyTorch e o FlashAttention?

Depende do caso. Na RTX 3090, o forward de um bloco transformer em sequência 512 é 1,2× mais rápido que o PyTorch com CUDA graph, mas em 128 o PyTorch ganha por 1,2×. Contra a FlashAttention-2, a atenção derivada fica atrás em todos os tamanhos testados.

Quais alvos de hardware o Tang cobre?

O mesmo grafo é compilado para WGSL, CUDA com tensor cores, Metal com simdgroup matrices, OpenCL, GLSL e C. Isso vai de GPUs de datacenter e desktop a laptops e ao SoC do tamanho de um celular em um robô humanoide.

O Tang já serve modelos grandes em produção?

Ele substituiu kernels manuais em um motor que serve um MoE de 80B em uma H200, com ganhos em alguns regimes e perdas em outros. O decode completo derivado empata com o motor manual no Qwen3-8B e fica 13 a 35% atrás no MoE de 80B.

Fontes

Avalie este artigo:
Categoria
CEVIU IA
Publicado
12 de novembro de 2026
Editoria
CEVIU IA

Quer receber mais sobre CEVIU IA?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser