למה המודל שלך “מרגיש איטי”?

תוכן עניינים

למה המודל שלך “מרגיש איטי”?

הגיע הזמן לדבר על Profiling - הכלי שיגלה לך למה זה קורה.

כשאנחנו מריצים מודל, לפעמים הוא עובד - אבל לא מספיק מהר. ואז עולה השאלה: מה בדיוק מעכב אותו? כאן נכנס לתמונה profiling - תהליך שמודד איפה הביצועים “נעלמים”.

מה זה Profiling?

Profiling הוא ניתוח מדויק של זמן הביצוע של כל שלב במערכת. המטרה: לזהות צווארי בקבוק - שלבים שגוזלים זמן או משאבים מיותרים.

במערכות Inference, זה כולל למשל:

  • כמה זמן לוקח שלב ה-Prefill לעומת ה-Decoding.
  • האם המאיץ (GPU) מנוצל ב-100% או ממתין לנתונים מה-CPU.
  • כמה זמן מבוזבז על העברת נתונים לזיכרון (Memory I/O).
  • מהו אחוז הזמן שהמודל באמת “חושב” מול הזמן שהוא “מחכה”.

איך זה נראה בפועל?

תוצר של profiling הוא בדרך כלל גרף זמן או תרשים להבה (Flame Graph) שבו אפשר לראות כל פעולה - וכמה זמן היא לקחה.

לדוגמה:

  • 40% מהזמן מוקדש ל-Matrix Multiplication.
  • 25% לבניית KV Cache.
  • 20% להעברת נתונים לזיכרון.
  • 15% ממתין ל-CPU Scheduler.

הנתונים האלו מאפשרים לאפטם נקודתית, במקום “לנחש”.

כלים נפוצים

  • NVIDIA Nsight / CUPTI - למדידת עומסים ב-GPU.
  • PyTorch Profiler / TensorBoard - לניתוח קוד Deep Learning.
  • Perf / VTune - לכלי ניתוח כללי של CPU ו-Memory.

כל אחד מציג את אותה שאלה מזווית אחרת: איפה הזמן שלך הולך לאיבוד?

למה זה חשוב

בלי profiling, קשה לדעת האם לשפר את הקוד, להעביר עומס למאיץ, או לשנות גודל Batch. עם profiling, אתה רואה את התמונה - ומחליט על הצעד הבא בביטחון.

תגובות