StableHLO הוא קבוצת פעולות לפעולות ברמה גבוהה (HLO) במודלים של למידת מכונה (ML). בעיקרון, זו שכבת ניידות בין מסגרות שונות של למידת מכונה ומהדרי למידת מכונה: מסגרות של למידת מכונה שיוצרות תוכניות StableHLO תואמות למהדרי למידת מכונה שמשתמשים בתוכניות StableHLO.
המטרה שלנו היא לפשט ולהאיץ את הפיתוח של למידת המכונה על ידי יצירת יכולת פעולה הדדית בין מסגרות שונות של למידת מכונה (כמו TensorFlow, JAX ו-PyTorch) לבין מהדרי למידת מכונה (כמו XLA ו-IREE).
תכונות ותחילת העבודה
הגרסה הנוכחית של StableHLO כוללת תכונות וציוני דרך רבים:
- מפורטת במלואה: המפרט של StableHLO מוגדר לכל כ-100 הפעולות עם מאמתים והסקת טיפוסים, וגם עם יכולות של דינמיות וקידוד (quantization).
- תאימות מובטחת לתאימות לאחור למשך 5 שנים ולתאמת קדימה למשך שנתיים, ומאפשרת פריסה לטווח ארוך בשרתים או בקצה, ומחזורי עדכונים שנתיים.
- מַפְרִיץ עזר עם תמיכה בפעולות סטטיות ודינמיות, כולל ממשקי API של C++ ו-Python.
- יכולת התאמה באמצעות פעולות מורכבות וקריאות בהתאמה אישית, כדי לאפשר ניסויים מהירים או לבנות מודלים של פעולות ספציפיות לספק.
- ממשקי API ל-C++/Python לתכונות הליבה וקבצים של nightly dev-wheel להצטרפות קלה יותר.
- מדריכים ב-Colab שממחישים ממשקי API של Python לחילוץ StableHLO מסביבות פיתוח שונות, וגם פונקציות שירות אחרות.
- חבילת נתוני בדיקה של 3,000 קובצי בדיקה, כולל תוכניות דינמיות ומקוננות ותוצאות תקינות לבדיקה של שילוב ספקים, בדיקות תאימות לאחור / קדימה ותאימות של 90% ויותר של הקוד.
- טרנספורמציות של תוכניות לפישוט תוכניות שלא תלויות בחומרה, שיפור תוכניות שהוגדרו באופן דינמי באמצעות ארגומנטים ספציפיים של קלט, והמרות לדיאלקטים של MLIR במקור, כמו linalg או tosa.
- מופעל על ידי הקהילה, עם תרומות רבות מהסביבה העסקית לטרנספורמציות, וגם בקשות לעדכון קוד לשינויים ב-opset: סוגי FP8 חדשים, collective_broadcast, אופרטורים של batched gather / scatter, קצירה היברידית, ממשקי API של מתורגמים, פירוק CHLO, טרנספורמציות של הפשטת StableHLO ועוד.
מפתחי מודלים שרוצים להשתמש ב-StableHLO או ב-XLA כדי לקמפל את פרויקט ה-ML שלהם, יכולים לעיין במסמכי התיעוד המתאימים של מסגרת ה-ML:
מפתחי קומפילרים שרוצים לשלב את StableHLO יכולים לעיין במסמכי התיעוד לתחילת העבודה באתר הזה, כולל מדריכים ופרטים למפתחים. בקטע הקהילה בדף הזה אפשר למצוא תמיכה, שאלות או פתרונות לבעיות שקשורות לתהליך ההצטרפות.
הוראות פיתוח
הוראות ה-build מפורטות במאמר StableHLO ב-GitHub.
קהילה
כדי ליצור שכבת ניידות מדהימה בין מסגרות למידת מכונה ומהדרי למידת מכונה, נדרש שיתוף פעולה של כל תעשיית למידת המכונה. לכן אנחנו שמחים לקבל את עזרתכם בפרויקט StableHLO.
אנחנו משתמשים בבעיות ב-GitHub ובבקשות משיכה כדי לארגן את הפיתוח, וב-openxla-discuss כדי לנהל דיונים ארוכים יותר. יש לנו גם #stablehlo
ערוץ בשרת OpenXLA ב-Discord.