האגינג פייס משחררת 207 קרנלי WebGPU וכלי בנצ'מרק בדפדפן להרצת מודלים מקומית

הספרייה והכלי
האגינג פייס (Hugging Face) השיקה את @huggingface/kernels, ספריית ג'אווהסקריפט מינימלית לטעינה והרצה של קרנלי WebGPU מותאמים ישירות מההאב (Hub) של החברה, יחד עם אוסף ראשוני של 207 קרנלים במאגר webgpu-kernels. במקביל הושק Fleet, סוויטת בנצ'מרק ובדיקות שרצה בדפדפן ומדרגת את הקרנלים על החומרה של המשתמש; בהסכמה, כל הרצה תורמת ראיות ביצועים ותקינות שמאפשרות לאתר כשלים, לשפר וריאנטים ולקבל החלטות אופטימיזציה על בסיס מכשירים אמיתיים שהמעבדה לא יכולה לכסות.
למה פורטביליות לא מספיקה
מודל שרץ בדפדפן מתפרק בסופו של דבר לרצף פעולות GPU: כפולות מטריצות, נרמולים, קונבולוציות, פרימיטיבי קשב (attention), פעולות קוונטיזציה, טרנספורמציות פריסת נתונים ועוד. WebGPU מספק API נייד לדפדפנים מודרניים ו-WGSL שפה משותפת לשיידרים, אבל ניידות לא מבטיחה ביצועים. שני שיידרים יכולים לממש אותה פעולה ולייצר פלט זהה, ובכל זאת להתנהג אחרת לגמרי על מאיצים שונים, גדלי workgroup, דפוסי גישה לזיכרון, וקטוריזציה, טיפוסי נתונים ואסטרטגיות פיוז'ן (fusion) כולם משפיעים, והבחירה האופטימלית משתנה עם צורת הקלט, המכשיר, הדפדפן והיכולות הזמינות של WebGPU.
קונטרקטים מפורשים וראיות משחזרות
כל קרנל באוסף מתפרסם כחבילה מגורסת וגרסתית: הממשק, תבניות השיידר, קייסים של נכונות (correctness), קייסים של בנצ'מרק והוראות שימוש, כולם חיים יחד בהאב תחת רישיון Apache-2.0. לכל קרנל יש מאגר משלו וכרטיס קרנל (kernel card) שמתעד סמנטיקה, קלטים, פלטים, מאפיינים, טיפוסי נתונים נתמכים, קבצי מקור ודוגמה מוכנה להרצה עם @huggingface/kernels. מאחורי הכרטיס נמצאים הקבצים שמאפשרים להבין ולהעריך את המימוש: manifest.json הוא מקור האמת לחוזה הפעולה, מגדיר קלטים, פלטים, מאפיינים, אילוצי טיפוסים וכללי גזירת צורה; metadata.json מתעד מזהה, דיג'סטים ומקור; test.json מכיל קייסי נכונות לבדיקה מול התנהגות מצופה; bench.json מכיל קייסי בנצ'מרק וכוונון שמייצגים את עומסי העבודה ששימשו להערכה.
דוגמה: חיבור אלמנט-וואיז עם ברודקאסטינג
למשל, ai.onnx.Add מממש חיבור אלמנט-וואיז עם ברודקאסטינג רב-כיווני, אחת הפעולות הפשוטות ברשת נוירונים, שנמצאת בכל מקום מחיבורי שיור (residual connections) ועד הוספת bias. הכרטיס שלו מתעד את שני הקלטים, צורת הפלט אחרי ברודקאסטינג, טיפוסי נתונים נתמכים והווריאנטים הזמינים לצורות וציודים שונים. המבנה הזה חוזר על עצמו בכל הקרנלים: חוזה יציב, בדיקות נכונות, קייסי ביצועים, וגרסאות שניתן להחליף בלי לשבור את השכבות שמעל.
שכבת יסוד לאינפרנס מהיר בדפדפן
קרנלים מהווים שכבת יסוד לאינפרנס מהיר בדפדפן, ראנטיים (runtime) ברמה גבוהה יכול להיות יעיל רק כמו הפעולות שהוא משגר. כשהפעולות ניתנות לגילוי, בדיקה, בנצ'מרק וגרסה בנפרד, אפשר לשפר את הבסיס באופן עצמאי תוך שמירה על חוזה יציב לשכבות העליונות. Fleet הופך את השיפור הזה למחזורי: הקהילה תורמת ראיות ממכשירים אמיתיים, המערכת מזהה מקרי קצה איטיים או שגויים, וגרסאות חדשות של הקרנלים משתחררות עם חוזה שלא נשבר.