Leçon 13 : Optimisation de graphe et de kernel — fusion, CUDA Graphs et TensorRT
Chaque opération sur le GPU coûte un overhead de lancement, et chaque opération écrit et lit de la mémoire intermédiaire. Un modèle avec des centaines de petites opérations gaspille l'essentiel de son temps en overhead. La solution : fusionner les opérations (fusion), capturer et rejouer le graphe (
Exécuter 100 opérations séparées, c'est comme acheter 100 articles au magasin avec 100 trajets séparés. La fusion, c'est tout faire en un seul trajet. TensorRT, c'est planifier à l'avance l'itinéraire optimal dans tout le magasin.
- Kernel fusion
- Fusionner plusieurs opérations en un seul kernel — moins de lancements et moins d'écriture/lecture de mémoire intermédiaire.
- torch.compile / CUDA Graphs
- Capturer le graphe d'opérations une fois et le rejouer — élimine l'overhead de lancement à chaque exécution.
- TensorRT
- Compile un modèle entraîné en un engine adapté au GPU : fusion, sélection de kernels, précision (FP16/INT8) et graph capture.
- KV-cache
- Dans un LLM, on garde les keys/values des tokens précédents pour ne pas les recalculer à chaque nouveau token.