تينسورفلو :: خدمة:: المدير الأساسي
هذه فئة مجردة.#include <basic_manager.h>
تساعد في إدارة دورة حياة المواد الصالحة للخدمة ، بما في ذلك تحميلها وتقديمها وتفريغها.
ملخص
يقبل المدير الخدمات في شكل لوادر.
نبدأ في إدارة خدمة قابلة للخدمة من خلال إحدى طرق ManageServable *. يمكنك الذهاب إلى تحميل قابل للعرض بعد ذلك بمطالبة LoadServable () . سيؤدي التحميل أيضًا إلى إتاحة الخدمة القابلة للخدمة. بمجرد اتخاذ قرار لتفريغ ذلك، يمكنك الاتصال UnloadServable () على ذلك، الأمر الذي سيجعل من غير متوفرة لخدمة، ثم تفريغ قابل للعرض.
يتم الاحتفاظ 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 يلغي إعادة المحاولة الحمل قابل للعرض خلال 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 :: خيارات | خيارات التكوين والأهداف للتوصيل التي سيتم استخدامها من قبل BasicManager . |
الأنواع العامة
تم
std::function< void(const Status &status)> DoneCallback
استدعاء رد الاتصال في نهاية {Load، Unload} Servable ().
نمرر حالة العملية إلى رد الاتصال.
الخطاف المسبق
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 )
يلغي إعادة المحاولة الحمل قابل للعرض خلال LoadServable () .
لا تفعل شيئًا إذا لم تتم إدارة الخدمة.
إذا تم إلغاء عمليات إعادة المحاولة ، ينتقل الجهاز القابل للخدمة إلى حالة تعتمد على آخر تحميل () يتم استدعاؤه عليه. إذا كان التحميل الأخير () ناجحًا ، فسيكون في حالة 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.
تحميل
void LoadServable( const ServableId & id, DoneCallback done_callback )
يقوم بتحميل الخدمة مع هذا المعرف ، ويحدّث خريطة العرض أيضًا.
المكالمات done_callback مع طيب المنتدى تم تحميل قابل للعرض بنجاح، يعود شيء آخر في حالة الخطأ.
في حالة استخدام تجمع الخيوط ، تقوم هذه الطريقة بتحويل الحزام القابل للخدمة إلى حالة kLoading ، وجدولة الحمل والعودة ، وإلا فإنه يكمل الحمل قبل العودة.
يتطلب ما يلي: هذا المدير كان يجب أن تدير هذا قابل للعرض بالفعل، لذلك ليتم تحميلها، وإلا فإننا ندعو done_callback مع حالة الخطأ. لا تستدعي هذا عدة مرات على نفس الخدمة. سينجح واحد منهم فقط وسيفشل الباقي مع حالة الخطأ.
ManageServable
Status ManageServable( ServableData< std::unique_ptr< Loader >> 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}.
تفريغ
void UnloadServable( const ServableId & id, DoneCallback done_callback )
يفرغ الجهاز القابل للخدمة بهذا المعرّف ، ويحدّث خريطة العرض أيضًا.
المكالمات done_callback مع طيب المنتدى تم تفريغ قابل للعرض بنجاح، يعود شيء آخر في حالة الخطأ.
في حالة استخدام مجموعة مؤشرات الترابط ، تقوم هذه الطريقة بتحويل الأداة القابلة للخدمة إلى حالة kQuiescing ، وتقوم بجدولة التفريغ والعودة ، وإلا فإنها تكمل عملية التفريغ قبل العودة.
يتطلب ما يلي: هذا المدرب يجب أن يكون تحميل وجعل هذا قابل للعرض المتاحة، من أجل أن يتم تفريغها، والمكالمات شيء آخر done_callback مع حالة الخطأ. لا تستدعي هذا عدة مرات على نفس الخدمة. سينجح واحد منهم فقط وسيفشل الباقي مع حالة الخطأ.
~ المدير الأساسي
~BasicManager() override
إذا تم تكوينه لاستخدام تحميل / إلغاء تحميل تجمع مؤشرات الترابط ، فانتظر حتى تنتهي جميع عمليات التحميل والتفريغ المجدولة ، ثم يدمر مجموعة مؤشرات الترابط.
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2019-07-10 (حسب التوقيت العالمي المتفَّق عليه)