שיעור 13: Graph ו-Kernel Optimization — fusion, CUDA Graphs ו-TensorRT
כל פעולה על ה-GPU עולה overhead של launch, וכל פעולה כותבת וקוראת זיכרון ביניים. מודל עם מאות פעולות קטנות מבזבז את רובו על overhead. הפתרון: למזג פעולות (fusion), ללכוד ולשחזר את הגרף (CUDA Graphs / torch.compile), ובסוף לקמפל ל-engine מותאם עם TensorRT. בשיעור הזה נחבר את כל מה שלמדנו לכלי ההאצה ה
להריץ 100 פעולות נפרדות זה כמו לקנות 100 פריטים בחנות עם 100 נסיעות נפרדות. fusion זה לעשות הכל בנסיעה אחת. TensorRT זה לתכנן מראש את המסלול האופטימלי לכל החנות.
- Kernel fusion
- מיזוג כמה פעולות ל-kernel אחד — פחות קריאות launch ופחות כתיבה/קריאה של זיכרון ביניים.
- torch.compile / CUDA Graphs
- לוכדים את גרף הפעולות פעם אחת ומשחזרים אותו — מבטל את overhead ה-launch בכל הרצה.
- TensorRT
- מקמפל מודל מאומן ל-engine מותאם ל-GPU: fusion, בחירת kernels, precision (FP16/INT8) ו-graph capture.
- KV-cache
- ב-LLM, שומרים את ה-keys/values של טוקנים קודמים כדי לא לחשב אותם מחדש בכל טוקן חדש.