Lição 13: Otimização de Grafo e Kernel — Fusion, CUDA Graphs e TensorRT
Toda operação de GPU custa launch overhead, e toda operação escreve e lê memória intermediária. Um modelo com centenas de operações pequenas desperdiça a maior parte do tempo em overhead. A solução: fundir operações (fusion), capturar e reproduzir o grafo (CUDA Graphs / torch.compile), e por fim com
Rodar 100 operações separadas é como comprar 100 itens com 100 viagens separadas ao mercado. Fusion é fazer tudo em uma única viagem. TensorRT é planejar a rota ideal por todo o mercado com antecedência.
- Kernel fusion
- Fundir várias operações em um único kernel — menos launches e menos escrita/leitura de memória intermediária.
- torch.compile / CUDA Graphs
- Capturar o grafo de operações uma vez e reproduzi-lo — eliminando o launch overhead a cada execução.
- TensorRT
- Compila um modelo treinado em uma engine ajustada para a GPU: fusion, seleção de kernels, precisão (FP16/INT8) e captura de grafo.
- KV-cache
- Em LLMs, guarda as keys/values dos tokens passados para que não sejam recalculadas a cada novo token.