הקשר בין Yocto ל-Inference: למה סביבת הריצה חשובה כמו המודל
הקשר בין Yocto ל-Inference: למה סביבת הריצה חשובה כמו המודל
כשמדברים על Inference, רוב השיח מתרכז במודל: דיוק, גודל, ארכיטקטורה, מאיץ.
אבל Inference לא רץ באוויר. הוא רץ על מערכת.
וכאן Yocto נכנס לתמונה.
Inference הוא תהליך רגיש במיוחד לסביבה שלו.
לא רק למה שהמודל עושה, אלא ל:
- זמני אתחול
- זמני טעינת ספריות
- ניהול זיכרון
- תזמון תהליכים
- וזרימת נתונים דרך המערכת
אותו מודל, עם אותו קוד, יכול להתנהג אחרת לגמרי על שתי מערכות שונות.
Yocto משפיע על Inference לא דרך המודל - אלא דרך כל מה שסביבו.
מערכת ריצה מינימלית
Yocto מאפשר לבנות מערכת ריצה:
- מינימלית
- צפויה
- ונטולת רכיבים מיותרים
וב-Inference, כל רכיב מיותר הוא latency נסתר או מקור לחוסר יציבות.
שליטה בתזמון
עוד נקודה קריטית היא שליטה בתזמון.
Inference רגיש ל:
- scheduler של הקרנל
- IRQs
- ניהול threads
- ואופן טעינת דרייברים
Yocto מאפשר:
- לבחור קרנל מותאם
- להוריד שירותים שמפריעים
- ולשלוט בסדר האתחול
זו לא אופטימיזציה של המודל - זו אופטימיזציה של הקרקע שעליה הוא עומד.
חומרה, דרייברים ונתיב הנתונים
גם בהקשר של חומרה, Yocto משחק תפקיד מרכזי.
מאיצים, דרייברים, ספריות low-level - כולם חלק מהמערכת, לא מהאפליקציה.
כש-Inference “איטי”, הרבה פעמים הבעיה היא:
- בדרייבר
- ב-DMA
- או בנתיב הנתונים
Yocto מאפשר לבנות את כל השרשרת הזו בצורה עקבית, נשלטת, ומשוחזרת.
המשל
אפשר לבנות מנוע מרוצים מעולה. אבל אם שמים אותו על שלדה לא מתאימה - הביצועים ייפגעו.
Yocto הוא תכנון השלדה.
סיכום
הקשר בין Yocto ל-Inference הוא קשר בין אלגוריתם למציאות.
מודל טוב צריך:
- מערכת רזה
- יציבה
- וצפויה
Yocto לא משפר דיוק. הוא משפר התנהגות.
וב-Inference, התנהגות עקבית חשובה לא פחות מהתוצאה עצמה.