Lección 13: Optimización de grafos y kernels — Fusión, CUDA Graphs y TensorRT
Cada operación en la GPU cuesta overhead de lanzamiento, y cada operación escribe y lee memoria intermedia. Un modelo con cientos de operaciones pequeñas desperdicia la mayor parte de su tiempo en overhead. La solución: fusionar operaciones, capturar y reproducir el grafo (CUDA Graphs / torch.compil
Ejecutar 100 operaciones separadas es como comprar 100 artículos haciendo 100 viajes separados a la tienda. La fusión es hacerlo todo en un solo viaje. TensorRT es planificar de antemano la ruta óptima por toda la tienda.
- Fusión de kernels
- Combinar varias operaciones en un solo kernel — menos lanzamientos y menos escritura/lectura de memoria intermedia.
- torch.compile / CUDA Graphs
- Capturar el grafo de operaciones una sola vez y reproducirlo — eliminando el overhead de lanzamiento en cada ejecución.
- TensorRT
- Compila un modelo entrenado en un engine optimizado para la GPU: fusión, selección de kernels, precisión (FP16/INT8), y captura de grafos.
- KV-cache
- En los LLM, guarda las keys/values de los tokens pasados para no volver a calcularlas en cada token nuevo.