אנחנו משתמשים ב-OpenAI Triton כדי ליצור חלק מהליבות של ה-GPU. Triton מאפשר ליצור ליבות GPU מהירים למיזוגים מסוימים, אבל אנחנו צריכים להתאים כמה פרמטרים לכל מיזוג כזה.
התהליך הזה עשוי להימשך זמן רב אם יש הרבה שילובים, לכן אנחנו מספקים דרך לטעון את תוצאות הכיוון האוטומטי, תוך כדי הפעלה רגילה של שלבי הידור אחרים. הכוונון האוטומטי של המטמון עדיין יהיה שימושי אם מבצעים כמה שינויים: המיזוגים שנמצאים במטמון ישתמשו במטמון והאחרים יעברו כוונון אוטומטי כרגיל.
מומלץ: ספריית מטמון
--xla_gpu_per_fusion_autotune_cache_dir=your/directory
שימוש במטמון של אוטו-טיונינג לכל שילוב (fusion) ובתחזוקה שלו בספרייה שצוינה. ייווצר קובץ אחד לכל שילוב ייחודי.
היתרון העיקרי של הגישה הזו הוא שאפשר להשתמש באותה ספריית מטמון למספר פעולות XLA (של מודלים שונים), והמטמון יגדל בכל פעולה חדשה של מיזוג – כך שתהיה לכם אפשרות להאיץ את הפעולות הבאות. יש גם תמיכה בסיסית בהפעלה של כמה מכונות XLA בו-זמנית עם אותה ספריית מטמון.
XLA יקרא תוצאות קיימות כשיהיו נחוצות, ויכתוב תוצאות חדשות אחרי שהן יקבעו.
- הספרייה חייבת להתקיים לפני שמפעילים את XLA, וצריכה להיות אפשרות לכתוב בה.
- המשתמש צריך לטפל בניקוי המטמון:
- אם רוצים להתחיל עם מטמון ריק, צריך להשתמש בספרייה ריקה.
- המשתמש צריך לבצע את הבדיקות לגבי גרסת ה-XLA:
- אם רוצים להשתמש במטמון נפרד לגרסאות שונות של XLA, צריך להשתמש בספריות שונות.
המטמון מושבת כברירת מחדל (אם לא מציינים את הפרמטר).
מגבלה: לא בטוח שהשיטה הזו תפעל טוב בשילוב עם שיטת האחסון במטמון האחרת שמתוארת בהמשך.
חלופה: טעינת כל התוצאות מ-HLO נתון או הטמעת אותן בקובץ אחד
אפשר לדגום או לטעון את תוצאות ההתאמה האוטומטית באמצעות הפרמטרים הבאים:
--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=
אם מציינים קובץ .txt או .textproto, המטמון יוטמע בפורמט textproto. אחרת, הוא יוטמע בפורמט protobuf בינארי.
בבדיקות
ניתן להשתמש גם בכוונון אוטומטי קבוע בבדיקות. מומלץ להשתמש בה אם הבדיקות גדולות מאוד, במיוחד אם הביצועים של סביבת הבדיקה מוגבלים.
התכונה פועלת בצורה טובה רק אם המטמון של Autotune מכיל תוצאות שנוצרו באותו סוג של GPU שבו הרצתם את הבדיקות.
ביצוע בדיקה לשימוש בכוונון אוטומטי קבוע
בשלב הזה נניח שבבדיקה הרלוונטית תמיד נעשה שימוש באותו סוג GPU.
אנחנו צריכים לייצא את תוצאות האוטו-טיונינג מהבדיקה, למשל על ידי ציון הפרמטרים הבאים בפקודת הבדיקה:
--test_env=XLA_FLAGS=--xla_gpu_dump_autotune_results_to=TEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto --test_sharding_strategy=disabled
כדי לקבל מטמון של כוונון אוטומטי אחד לכל הבדיקות, צריך להשבית את הפיצול.
לאחר מכן צריך להעלות את המטמון הזה למאגר הקוד שלנו.
לאחר מכן צריך להוסיף את המטמון ליחסי התלות בנתונים של יעד הבדיקה, ולטעון אותו באמצעות משתנה סביבה.
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 להרצת הבדיקות, אותו הדבר יקרה.
המטמון עשוי להיות לא רלוונטי גם אם המהדר של XLA יתפתח ויוצר שילובים שונים.