tensorflow:: מָנָה:: BasicManager
זהו שיעור מופשט.#include <basic_manager.h>
עוזר לנהל את מחזור החיים של חומרי הגשה כולל טעינה, הגשה ופריקה שלהם.
סיכום
המנהל מקבל קבצים להגשה בצורה של Loaders.
אנו מתחילים לנהל קובץ הגשה באמצעות אחת משיטות ManageServable*. אתה יכול להמשיך לטעון את servable אחרי זה באמצעות הטלפון LoadServable () . הטעינה גם תהפוך את הניתן להגשה זמין להגשה. ברגע שאתה מחליט לפרוק אותה, אתה יכול להתקשר UnloadServable () על זה, אשר יהפוך אותן לבלתי לשרת, אז לפרוק את servable.
Servables נשמרת עד StopManagingServable () נקראת. זה מאפשר למנהל ברמה גבוהה יותר עם מידע רב יותר להחליט מתי בטוח לשכוח קובץ שניתן להגשה.
BasicManager עוקב משאבים (RAM למשל) המשמשים servables טעון, ורק מאפשר טעינת servables החדש שמתאים בתוך בריכה המשאבים הכוללת.
BasicManager יכול להיות מוגדר לשימוש א-מאגר חוט כדי לעשות עומס של אותו ופורק. זה הופך את LoadServable () ו UnloadServable () שיטות לתזמן את העומס / מסיר ולא להוציא אותם להורג באופן סינכרוני. אם יש יותר טעינה/פריקה בהמתנה מאשר שרשורים במאגר השרשורים, הם מעובדים בסדר FIFO.
בנוכחות מעמיסים שמעריכים יתר על המידה את צורכי המשאבים הניתנים לשרת שלהם ו/או רק קושרים את משאבי השרתים שלהם למופעי מכשירים, ניתן להפחית את במקביליות הטעינה/פריקה מתחת לגודל מאגר השרשורים. הסיבה לכך היא שאולי נצטרך להמתין לסיום הטעינה/פריקה של רכיב שרת אחד כדי לקבוע את זמינות המשאב לטעינת רכיב שרת אחר.
דורש:
- סדר הקריאות שיטת - ManageServable () (וגירסאות) -> LoadServable () -> UnloadServable () -> StopManagingServable () .
- אין לתזמן טעינה ופריקות בו-זמנית של אותו חומר הגשה.
- אל תתקשר לטעון או לפרוק מספר פעמים על אותו קובץ הגשה.
מחלקה זו בטוחה לשרשור.
שימוש לדוגמה:
const ServableId id = {kServableName, 0}; std::unique_ptr<Loader> loader = ...; ... BasicManager manager; TF_CHECK_OK(manager.ManageServable( CreateServableData(id, std::move(loader)))); TF_CHECK_OK(manager.LoadServable(id)); ... TF_CHECK_OK(manager.GetServableHandle( ServableRequest::Latest(kServableName), &handle)); ... TF_CHECK_OK(manager.UnloadServable(id)); TF_CHECK_OK(manager.StopManagingServable(id));
יְרוּשָׁה
יורש מ: tensorflow :: המשרת :: מנהלבנאים והורסים | |
---|---|
~BasicManager () אם מוגדר להשתמש במאגר של טעינה/פריקה, ממתין עד לסיום כל הטעינות והפריקות המתוזמנות ולאחר מכן הורס את ערכת השרשורים. |
טיפוסים ציבוריים | |
---|---|
DoneCallback | באמצעותstd::function< void(const Status &status)> התקשרות חוזרת נקראת בסוף {Load,Unload}Servable(). |
PreLoadHook | באמצעותstd::function< void(const ServableId &)> |
חוגי חברים | |
---|---|
test_util::BasicManagerTestAccess | friend class |
פונקציות סטטיות ציבוריות | |
---|---|
Create ( Options options, std::unique_ptr< BasicManager > *manager) | Status |
תפקידים ציבוריים | |
---|---|
CancelLoadServableRetry (const ServableId & id) | void בטל שתנסה שוב את עומס servable במהלך LoadServable () . |
GetAdditionalServableState (const ServableId & id) | T * |
GetAvailableUntypedServableHandles () const override | virtual std::map< ServableId, std::unique_ptr< UntypedServableHandle > > |
GetManagedServableNames () const | std::vector< string > |
GetManagedServableStateSnapshot (const ServableId & id) | optional< ServableStateSnapshot< T > > |
GetManagedServableStateSnapshots (const string & servable_name) const | std::vector< ServableStateSnapshot< T > > |
GetUntypedServableHandle (const ServableRequest & request, std::unique_ptr< UntypedServableHandle > *untyped_handle) override | virtual Status |
ListAvailableServableIds () const override | virtual std::vector< ServableId > מקבל רשימה של כל המזהים הזמינים להגשה, כלומר |
LoadServable (const ServableId & id, DoneCallback done_callback) | void טוען את קובץ ההגשה עם המזהה הזה, ומעדכן גם את מפת ההגשה. |
ManageServable (ServableData< std::unique_ptr< Loader >> servable) | Status מתחיל לנהל את הניתן להגשה. |
ManageServableWithAdditionalState (ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state) | Status בדומה לשיטה שלעיל, אבל מתקשרים, בדרך כלל מנהלים אחרים שנבנו על השיטה הזו, יכולים לשייך מצב נוסף לשרת. |
StopManagingServable (const ServableId & id) | Status אומר למנהל להפסיק לנהל את קובץ ההגשה הזה. |
UnloadServable (const ServableId & id, DoneCallback done_callback) | void פורק את הניתן להגשה עם המזהה הזה, ומעדכן גם את מפת ההגשה. |
מבנים | |
---|---|
tensorflow :: המשרתים :: BasicManager :: אפשרויות | אפשרויות Config וחפצים לחיבור אשר ישמשו ידי BasicManager . |
טיפוסים ציבוריים
הסתיימה התקשרות חזרה
std::function< void(const Status &status)> DoneCallback
התקשרות חוזרת נקראת בסוף {Load,Unload}Servable().
אנו מעבירים בסטטוס המבצע להתקשרות חוזרת.
PreLoadHook
std::function< void(const ServableId &)> PreLoadHook
חוגי חברים
test_util::BasicManagerTestAccess
friend class test_util::BasicManagerTestAccess
פונקציות סטטיות ציבוריות
לִיצוֹר
Status Create( Options options, std::unique_ptr< BasicManager > *manager )
תפקידים ציבוריים
CancelLoadServableRetry
void CancelLoadServableRetry( const ServableId & id )
בטל שתנסה שוב את עומס servable במהלך LoadServable () .
לא עושה כלום אם ההגשה לא מנוהל.
אם הניסיונות החוזרים מבוטלים, השרת נכנס למצב התלוי ב-Load() האחרון שנקרא עליו. אם ה-Load() האחרון הצליח, הוא יהיה במצב kReady, אחרת ב-kError.
GetAdditionalServableState
T * GetAdditionalServableState( const ServableId & id )
דורש: המנהל הזה היה צריך לנהל את השרת הזה כבר, אחרת אנחנו מחזירים nullptr.
פרטים | |
---|---|
החזרות | המצב הנוסף עבור הניתן להגשה. מחזירה nullptr אם אין הגדרת מצב נוספת או אם יש חוסר התאמה בין מה שהוגדר למה שמתבקש. |
GetAvailableUntypedServableHandles
virtual std::map< ServableId, std::unique_ptr< UntypedServableHandle > > GetAvailableUntypedServableHandles() const override
GetManagedServableNames
std::vector< string > GetManagedServableNames() const
פרטים | |
---|---|
החזרות | השמות של כל המנות המנוהלות על ידי מנהל זה. השמות יהיו ללא כפילויות ולא בסדר מסוים. |
GetManagedServableStateSnapshot
optional< ServableStateSnapshot< T > > GetManagedServableStateSnapshot( const ServableId & id )
דרישות: המנהל הזה היה צריך לנהל כבר את השרת הזה, אחרת אנחנו מחזירים nullopt.
פרטים | |
---|---|
החזרות | תמונת המצב של מזהה שניתן להגשה מסוים המנוהל על ידי מנהל זה, אם זמין. |
GetManagedServableStateSnapshots
std::vector< ServableStateSnapshot< T > > GetManagedServableStateSnapshots( const string & servable_name ) const
T הוא סוג המצב הנוסף, אם קיים.
פרטים | |
---|---|
החזרות | את תמונת המצב של כל השרתים של זרם מסוים, המנוהלים על ידי מנהל זה. |
GetUntypedServableHandle
virtual Status GetUntypedServableHandle( const ServableRequest & request, std::unique_ptr< UntypedServableHandle > *untyped_handle ) override
ListAvailableServableIds
virtual std::vector< ServableId > ListAvailableServableIds() const override
מקבל רשימה של כל המזהים הזמינים להגשה, כלומר
ניתן לאחזר כל אחד מאלה באמצעות GetServableHandle.
LoadServable
void LoadServable( const ServableId & id, DoneCallback done_callback )
טוען את קובץ ההגשה עם המזהה הזה, ומעדכן גם את מפת ההגשה.
שיחות done_callback עם אישור IFF servable נטענה בהצלחה, חוזר אחר בעל מעמד שגיאה.
אם משתמשים ב-Thread-pool, שיטה זו מעבירה את הרתמה הניתנת להגשה למצב kLoading, מתזמנת את העומס וחוזרת, אחרת היא משלימה את הטעינה לפני החזרה.
דורש: מנהל זה היה צריך לנהל servable זה כבר, על מנת שניתן יהיה טעון, אחר שאנו מכנים done_callback עם מצב שגיאה. אל תקרא לזה מספר פעמים על אותו קובץ הגשה. רק אחד מהם יצליח והשאר ייכשלו עם סטטוס שגיאה.
ManageServable
Status ManageServable( ServableData< std::unique_ptr< Loader >> servable )
מתחיל לנהל את הניתן להגשה.
מחזיר שגיאה אם ניתן להגשה שכבר מנוהל.
אם servable הוא במצב שגיאה, שיטה זו אינה מחזירה שגיאה. במקום זאת, המנהל מקבל את קובץ ההגשה, מעביר אותו למצב kError (עם הודעה שנשלחה לאוטובוס האירוע), ואז מיד מפסיק לנהל אותו. התנהגות זו מאפשרת טיפול אחיד בשגיאות המתרחשות במקורות (למשל נתיב קובץ לא חוקי לנתונים הניתנים להצגה) וכאלה המתרחשות במנהל (למשל, אין מספיק משאבים לטעינת קבצים שניתן להגיש).
ManageServableWithAdditionalState
Status ManageServableWithAdditionalState( ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state )
בדומה לשיטה שלעיל, אבל מתקשרים, בדרך כלל מנהלים אחרים שנבנו על השיטה הזו, יכולים לשייך מצב נוסף לשרת.
מצב נוסף עשוי להיות ACL או מטא נתונים לכל החיים עבור אותו ניתן להגשה. הבעלות על המדינה מועברת למעמד זה.
StopManagingServable
Status StopManagingServable( const ServableId & id )
אומר למנהל להפסיק לנהל את קובץ ההגשה הזה.
מחייב שהקובץ המשרת מנוהל כעת ושהמצב שלו הוא אחד של {kNew, kError, kDisabled}.
UnloadServable
void UnloadServable( const ServableId & id, DoneCallback done_callback )
פורק את הניתן להגשה עם המזהה הזה, ומעדכן גם את מפת ההגשה.
שיחות done_callback עם אישור IFF servable נפרק בהצלחה, חוזר אחר בעל מעמד שגיאה.
אם משתמשים ב-thread-pool, שיטה זו מעבירה את הרתמה הניתנת להגשה למצב kQuiescing, מתזמנת את הפריקה וחוזרת, אחרת היא משלימה את הפריקה לפני החזרה.
דורש: מנהל זה צריך טעון ועשה זאת servable זמין, על מנת שניתן יהיה פרקו, שיחות אחרות done_callback עם מצב שגיאה. אל תקרא לזה מספר פעמים על אותו קובץ הגשה. רק אחד מהם יצליח והשאר ייכשלו עם סטטוס שגיאה.
~מנג'ר בסיסי
~BasicManager() override
אם מוגדר להשתמש במאגר של טעינה/פריקה, ממתין עד לסיום כל הטעינות והפריקות המתוזמנות ולאחר מכן הורס את ערכת השרשורים.
אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers. Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2019-07-10 (שעון UTC).