-sdy-aggressive-propagate

הפעלת האלגוריתם האגרסיבי להפצת חלוקה (sharding).

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

אפשרויות:

  • -keep-sharding-rules: האם לשמור את כללי הפיצול הקיימים של פעולות שנוצרו.
  • -module-dump-directory: המיקום שבו יועברו מודולים ששונו לצורך ניפוי באגים.
  • -conservative-propagation: האם לא לאפשר צירים מפוצלים וצירים של חלוקה לא ניתנים לחלוקה במהלך ההעברה.
  • -debug-sharding-origins: האם לשמור מידע על המקור של חלוקה לחלקים במודול MLIR. אלה יהיו החלוקות לפלחים של הקלט, הפלט, האילוצים על חלוקת הפלחים והחישובים הידניים לפני ההעברה.
  • -debug-edge-source-sharding: האם לשמור מידע על מקור הקצה של חלוקה למקטעים במודול MLIR. אלה הן הפעולות או התוצאות שהובילו לחלוקה לחלקים (sharding) של תוצאת פעולה מסוימת.
  • -propagation-strategy: שיטת ההפצה של הגורם שבה רוצים להשתמש.

-sdy-basic-propagate

הפעלת האלגוריתם הבסיסי להפצת חלוקה (sharding).

אלגוריתם ההעברה הבסיסי הוא האסטרטגיה הנמוכה ביותר של העברה בהיררכיה, שלא מבצעת פתרון של התנגשויות, ובמקום זאת מעבירה צירים שתואמים לכל המשתנים והתוצאות.

אפשרויות:

  • -keep-sharding-rules: האם לשמור את כללי הפיצול הקיימים של פעולות שנוצרו.
  • -module-dump-directory: המיקום שבו יועברו מודולים ששונו לצורך ניפוי באגים.
  • -conservative-propagation: האם לא לאפשר צירים מפוצלים וצירים של חלוקה לא ניתנים לחלוקה במהלך ההעברה.
  • -debug-sharding-origins: האם לשמור מידע על המקור של חלוקה לחלקים במודול MLIR. אלה יהיו החלוקות לפלחים של הקלט, הפלט, האילוצים על חלוקת הפלחים והחישובים הידניים לפני ההעברה.
  • -debug-edge-source-sharding: האם לשמור מידע על מקור הקצה של חלוקה למקטעים במודול MLIR. אלה הן הפעולות או התוצאות שהובילו לחלוקה לחלקים (sharding) של תוצאת פעולה מסוימת.

-sdy-op-priority-propagate

הרצת האלגוריתם להעברת עדיפות של פעולות

המערכת מפיצה את החלוקות לפלחים בחזרות, על סמך קבוצה של שיטות ניתוח נתונים (heuristics) לפעולות. כל שיטת חיפוש אפקטיבית קובעת אם להפיץ את הפעולה הנתונה קדימה, אחורה או בשני הכיוונים.

העדיפות מתחילה ב-0 ועולה עד שכל שיטות הניתוח ההסתברותי של הפעולות נגמרו והתוכנית מגיעה לנקודת קיפאון.

לעדיפות p, כל שיטות הניתוח של האופרטורים נלקחות בחשבון מ-0 <= i < p. הכיוון הבולט ביותר נבחר לכל פעולה באמצעות BOTH > BACKWARD == FORWARD > NONE. אם במהלך המחזור הזה, FORWARD/BACKWARD מופיע קודם ואז BACKWARD/FORWARD, הכיוון הוא BOTH.

שיטת ההעברה הזו היא הרחבה של שיטת ההעברה האגרסיבית, כלומר בכל חזרה על אופרטורים בעדיפות גבוהה, מתבצעת העברה אגרסיבית מלאה (ראו AggressivePropagationPass).

אפשרויות:

  • -keep-sharding-rules: האם לשמור את כללי הפיצול הקיימים של פעולות שנוצרו.
  • -module-dump-directory: המיקום שבו יועברו מודולים ששונו לצורך ניפוי באגים.
  • -conservative-propagation: האם לא לאפשר צירים מפוצלים וצירים של חלוקה לא ניתנים לחלוקה במהלך ההעברה.
  • -debug-sharding-origins: האם לשמור מידע על המקור של חלוקה לחלקים במודול MLIR. אלה יהיו החלוקות לפלחים של הקלט, הפלט, האילוצים על חלוקת הפלחים והחישובים הידניים לפני ההעברה.
  • -debug-edge-source-sharding: האם לשמור מידע על מקור הקצה של חלוקה למקטעים במודול MLIR. אלה הן הפעולות או התוצאות שהובילו לחלוקה לחלקים (sharding) של תוצאת פעולה מסוימת.
  • -propagation-strategy: שיטת ההפצה של הגורם שבה רוצים להשתמש.
  • -run-op-priority-propagation: האם להריץ (או לדלג) על העברה של תעדוף משימות.

-sdy-populate-op-sharding-rules

אכלוס כל הפעולות הרשמות באמצעות OpShardingRuleAttr.

מאכלס את כל הפעולות הרשמות באמצעות OpShardingRuleAttr, שמשמשים לניפוי באגים או לבדיקה של כללי הפיצול הרשומים. תהליך ההעברה כבר עושה זאת בזמן אמת, אבל בתהליך הזה הכול מתבצע בבת אחת.

אפשרויות

-conservative-propagation : whether to disllow rules that can propagate non-divisible sharding axes

-sdy-user-priority-propagate

מריצים את אלגוריתם ההפצה לפי תעדוף משתמשים.

המערכת מפיצה את החלוקות לחלקים (shards) בחזרות, החל מהעדיפות הגבוהה ביותר (המספר הנמוך ביותר, בדרך כלל p0) ועד לעדיפות הנמוכה ביותר (המספר הגבוה ביותר). במילים אחרות, בחזרה ה-i, רק חלוקות של מאפיינים עם עדיפות <=i מועברות.

שיטת ההעברה הזו היא הרחבה של שיטת ההעברה לפי תעדוף משימות, כלומר בכל חזרה על תהליך לפי תעדוף משתמש, מתבצעת העברה מלאה לפי תעדוף משימות (ראו OpPriorityPropagationPass).

אפשרויות:

  • -keep-sharding-rules: האם לשמור את כללי הפיצול הקיימים של פעולות שנוצרו.
  • -module-dump-directory: המיקום שבו יועברו מודולים ששונו לצורך ניפוי באגים.
  • -conservative-propagation: האם לא לאפשר צירים מפוצלים וצירים של חלוקה לא ניתנים לחלוקה במהלך ההעברה.
  • -debug-sharding-origins: האם לשמור מידע על המקור של חלוקה לחלקים במודול MLIR. אלה יהיו החלוקות לפלחים של הקלט, הפלט, האילוצים על חלוקת הפלחים והחישובים הידניים לפני ההעברה.
  • -debug-edge-source-sharding: האם לשמור מידע על מקור הקצה של חלוקה למקטעים במודול MLIR. אלה הן הפעולות או התוצאות שהובילו לחלוקה לחלקים (sharding) של תוצאת פעולה מסוימת.
  • -propagation-strategy: שיטת ההפצה של הגורם שבה רוצים להשתמש.
  • -run-op-priority-propagation: האם להריץ (או לדלג) על העברה של תעדוף משימות.