tensorflow:: מָנָה:: מטעין
זהו שיעור מופשט.#include <loader.h>
הפשטה סטנדרטית לאובייקט שמנהל את מחזור החיים של חומר הגשה, כולל טעינה ופריקה שלו.
סיכום
שרתים הם אובייקטים שרירותיים המשרתים אלגוריתמים או נתונים שלעתים קרובות, אם כי לא בהכרח, משתמשים במודל שנלמד על ידי מכונה.
Loader עבור אובייקט servable מייצג מופע אחד של זרם של גרסאות servable, כל שיתוף השם הנפוץ (למשל "my_servable") והגדלת מספרי גרסאות, בדרך כלל המייצגת פרמטרים במודל המעודכן ללמוד מהנתונים הכשרה טריים.
Loader צריך להתחיל במצב טעון, כלומר אין עבודה נעשתה כדי להכין לבצע פעולות. מופע טיפוסי שעדיין לא נטען מכיל רק מצביע למיקום שממנו ניתן לטעון את הנתונים שלו (למשל נתיב של מערכת קבצים או מיקום רשת). בנייה והשמדה של מקרים צריכים להיות זולים למדי. צריך להיעשות פעולות אתחול יקר טען () .
Subclasses גם לבחור לאחסן מצביע על המקור שמקורם זה, לגישת המדינה המשותפת בין מספר אובייקטי servable בזרם servable נתון.
הטמעות צריכות להבטיח שהשיטות שהם חושפים בטוחות בשרשור, או לתעד ו/או לתאם בקפידה את מאפייני בטיחות השרשור שלהן עם הלקוחות שלהן כדי להבטיח נכונות. Servables לא צריך לדאוג ביצוע במקביל של Load () / לפרוק () כפי המתקשר יבטיח כי לא קורה.
יְרוּשָׁה
כוון ידוע subclasses: tensorflow :: המשרתים :: ResourceUnsafeLoaderבנאים והורסים | |
---|---|
~Loader () הורס לעולם להיקרא על Loader אשר servable נטען כרגע, כלומר |
תפקידים ציבוריים | |
---|---|
EstimateResources (ResourceAllocation *estimate) const =0 | virtual Status מעריך את המשאבים שניתן להגשה ישתמש בהם. |
Load () | virtual Status המאחזרת כל הנתונים שיש לטעון לפני השימוש servable שמחזיר servable () . |
LoadWithMetadata (const Metadata & metadata) | virtual Status בדומה לשיטה הנ"ל, אבל לוקח Metadata בתור פרמטר, אשר עשוי לשמש את יישום מטעין כראוי. |
Unload ()=0 | virtual void משחררת כל המשאבים שהוקצו במהלך טען () (למעט אולי משאבים משותפים ברחבי servables כי עדיין נדרשים עבור הפעלתנים אחרים). |
servable ()=0 | virtual AnyPtr מחזיר ממשק אטום לאובייקט הניתן להגשה הבסיסי. |
מבנים | |
---|---|
tensorflow :: המשרתים :: Loader :: Metadata | המטא נתונים מורכבים מה-ServableId. |
תפקידים ציבוריים
EstimateResources
virtual Status EstimateResources( ResourceAllocation *estimate ) const =0
מעריך את המשאבים שניתן להגשה ישתמש בהם.
חשוב: הטמעה של שיטה זו חייבת לציית לדרישות הבאות, המאפשרות למערכת ההגשה לנמק בצורה נכונה אילו רכיבי שירות ניתן לטעון בבטחה:
- האומדן חייב לייצג גבול עליון של הערך בפועל.
- לפני הטעינה, האומדן עשוי לכלול משאבים שאינם קשורים לאף מופע מכשיר ספציפי, למשל זיכרון RAM באחד משני ה-GPUs.
- בזמן טעינה, עבור כל התקנים עם מספר מופעים (למשל שני GPUs), האומדן חייב לציין את המופע אליו קשור כל משאב.
- האומדן חייב להיות מונוטוני שאינו עולה, כלומר אינו יכול לעלות עם הזמן. סיבות לכך שזה עשוי לרדת עם הזמן
החזרות אומדן של המשאבים שהשרת יצרוך לאחר הטעינה. אם קובץ ההגשה כבר נטען, מחזיר אומדן של השימוש בפועל במשאבים.
לִטעוֹן
virtual Status Load()
המאחזרת כל הנתונים שיש לטעון לפני השימוש servable שמחזיר servable () .
לא עשוי להגביר את צריכת משאבים מהאומדן שדווח על ידי EstimateResources () .
אם אתה רוצה להטמיע טענת () , אתה לא צריך לעקוף LoadWithMetadata () .
LoadWithMetadata
virtual Status LoadWithMetadata( const Metadata & metadata )
בדומה לשיטה הנ"ל, אבל לוקח Metadata בתור פרמטר, אשר עשוי לשמש את יישום מטעין כראוי.
אם אתה שולט LoadWithMetadata () , כי אתה יכול להשתמש metadata כראוי, אתה יכול לדלג דריסה טען () .
לִפְרוֹק
virtual void Unload()=0
ניתן להגשה
virtual AnyPtr servable()=0
מחזיר ממשק אטום לאובייקט הניתן להגשה הבסיסי.
על המתקשר לדעת את סוג הממשק המדויק כדי לעשות בו שימוש בפועל. לדוגמה:
CustomLoader יישום:
class CustomLoader : public Loader { public: ... Status Load() override { servable_ = ...; } AnyPtr servable() override { return servable_; } private: CustomServable* servable_ = nullptr; };
הגשת בקשת משתמש:
ServableHandle<CustomServable> handle = ... CustomServable* servable = handle.get(); servable->...
אם servable () נקרא לאחר מוצלח טען () ולפני לפרוק () , היא מחזירה אובייקט AnyPtr תקף, שאינו ריקה. אם נקרא לפני מוצלח טען () שיחה או אחרי לפרוק () , היא מחזירה AnyPtr null.