כוונון אוטומטי קבוע (GPU בלבד)

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

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

ניתן להוסיף או לטעון את תוצאות הכוונון האוטומטי באמצעות הפרמטרים הבאים:

--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=

אם נציין קובץ .txt או .textproto, המטמון יועבר בפורמט textproto, אחרת הוא יהיה בפורמט בינארי protobuf.

בבדיקות

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

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

ביצוע בדיקה באמצעות כוונון אוטומטי עקבי

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

  1. אנחנו צריכים לייצא את תוצאות ההתאמה האוטומטית מהבדיקה, לדוגמה, על ידי ציון הפרמטרים האלה לפקודת הבדיקה:

    --test_env=XLA_FLAGS=--xla_gpu_dump_autotune_results_to=TEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto
    --test_sharding_strategy=disabled
    

    כדי לקבל מטמון של כוונון אוטומטי אחד לכל הבדיקות, צריך להשבית את הפיצול.

  2. ואז להעלות את המטמון הזה למאגר הקודים שלנו.

  3. לאחר מכן צריך להוסיף את המטמון לתלות הנתונים של יעד הבדיקה, ולטעון אותו באמצעות משתנה סביבה.

    data = ["test_autotune_cache.textproto"],
    env = {"XLA_FLAGS": "--xla_gpu_load_autotune_results_from=" +
                        "$(execpath test_autotune_cache.textproto)"},
    

    (מותר להשתמש בפיצול בבדיקות שטענו את תוצאות הכוונון האוטומטי).

אפשר לראות גם את הבדיקות לדוגמה ב-xla/service/gpu/tests/BUILD:

  • load_autotune_results_using_execpath_test
  • load_autotune_results_from_test_workspace_test
  • dump_autotune_results_to_test_outputs_test

התיישנות של המטמון

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

אותו הדבר חל גם אם נתחיל להשתמש בסוג חדש של GPU לצורך הרצת הבדיקות.

המטמון עשוי גם להיות מיושן אם המהדר (compiler) ב-XLA מתפתח ויוצר מיזוגי Fusion שונים.