הבעיה ש-Tensor Parallelism פותר
הבעיה ש-Tensor Parallelism פותר
ב-Model Parallelism קלאסי מחלקים את המודל לשכבות: מאיץ אחד מחשב שכבות מוקדמות, מאיץ אחר מחשב שכבות מאוחרות.
אבל מה קורה כששכבה בודדת עצמה כבדה מאוד? לדוגמה: שכבת Linear ענקית במודל שפה, או מטריצה רחבה במיוחד.
אי אפשר “לחתוך” אותה בזמן - היא חישוב אחד.
Tensor Parallelism מגיע בדיוק לנקודה הזו.
מה זה בעצם Tensor Parallelism?
Tensor Parallelism אומר: מפצלים את החישוב של שכבה אחת בין כמה מאיצים.
לא שכבות שונות. לא דגימות שונות. אלא אותו חישוב מתמטי - מחולק לחלקים.
במקום שמאיץ אחד יכפיל מטריצה גדולה מאוד, כמה מאיצים מכפילים כל אחד חלק ממנה, ובסוף מאחדים את התוצאה.
המודל הלוגי נשאר זהה. הביצוע הפיזי - מתפצל.
דוגמה אינטואיטיבית
נחשוב על חישוב של מכפלת מטריצה ווקטור.
בגישה רגילה: מאיץ אחד מחשב את כל השורות.
ב-Tensor Parallelism: כל מאיץ מחשב קבוצת שורות אחרת. כל אחד מחזיר תוצאה חלקית. בסוף מחברים את החלקים - ומקבלים בדיוק את אותו פלט.
שום שינוי מתמטי. רק חלוקה חכמה של עבודה.
המשל
אם שכבה היא קיר ארוך שצריך לצבוע:
Model Parallelism מחלקים את הבניין לקומות - כל פועל אחראי על קומה אחרת.
Tensor Parallelism כל הפועלים עומדים מול אותו קיר, וכל אחד צובע רצועה משלו.
הקיר אחד. העבודה - מקבילית.
למה זה קריטי ב-LLMs וב-Inference מודרני?
במודלים גדולים:
- שכבות Linear עצומות
- Attention עם מטריצות רחבות
- שימוש כבד ב-GEMM
כאן צוואר הבקבוק אינו עומק המודל - אלא רוחב החישוב.
Tensor Parallelism מאפשר:
- להריץ שכבות שלא נכנסות בזיכרון של מאיץ אחד
- לקצר זמן חישוב של שכבה בודדת
- לנצל טוב יותר כמה מאיצים גם כש-batch קטן
וב-Inference, שבו latency חשוב לא פחות מתפוקה - זה משנה הכל.
המחיר: תקשורת
Tensor Parallelism אינו “חינם”.
אחרי שכל מאיץ מחשב את החלק שלו, צריך לאסוף ולסנכרן תוצאות:
- All-Reduce
- All-Gather
- תקשורת בין מאיצים
לכן הוא עובד טוב במיוחד כשיש:
- חיבור מהיר בין מאיצים (NVLink, interconnect ייעודי)
- תכנון מודע של גבולות החלוקה
בלי זה - הרווח בחישוב עלול להיבלע בתקשורת.
טיפ אדריכלי
Tensor Parallelism כמעט אף פעם לא עומד לבד.
במערכות אמיתיות משלבים:
- Data Parallelism בין בקשות
- Pipeline Parallelism בין שכבות
- Tensor Parallelism בתוך שכבות כבדות
כלומר: המקביליות האמיתית היא רב-שכבתית - בדיוק כמו המודל עצמו.