تينسورفلو :: خدمة:: المدير الأساسي

هذه فئة مجردة.

#include <basic_manager.h>

تساعد في إدارة دورة حياة المواد الصالحة للخدمة ، بما في ذلك تحميلها وتقديمها وتفريغها.

ملخص

يقبل المدير الخدمات في شكل لوادر.

نبدأ في إدارة خدمة قابلة للخدمة من خلال إحدى طرق ManageServable *. يمكنك الذهاب إلى تحميل قابل للعرض بعد ذلك بمطالبة LoadServable () . سيؤدي التحميل أيضًا إلى إتاحة الخدمة القابلة للخدمة. بمجرد اتخاذ قرار لتفريغ ذلك، يمكنك الاتصال UnloadServable () على ذلك، الأمر الذي سيجعل من غير متوفرة لخدمة، ثم تفريغ قابل للعرض.

يتم الاحتفاظ Servables حتى StopManagingServable () ويسمى. يسمح هذا لمدير ذي مستوى أعلى بمزيد من المعلومات أن يقرر متى يكون من الآمن نسيان أمر قابل للخدمة.

BasicManager يقيس الموارد (مثل RAM) المستخدمة من قبل servables تحميلها، ويسمح فقط للتحميل servables الجديدة التي تدخل ضمن تجمع الموارد بشكل عام.

BasicManager يمكن تهيئتها لاستخدام السباحة موضوع للقيام حمولة انها وافرغت. وهذا يجعل من LoadServable () و UnloadServable () أساليب جدولة تحميل / افرغت بدلا من تنفيذها بشكل متزامن. إذا كان هناك تحميل / إلغاء تحميل معلق أكثر من سلاسل الرسائل في تجمع مؤشرات الترابط ، فستتم معالجتها بترتيب FIFO.

في ظل وجود اللوادر التي تبالغ في تقدير احتياجات موارد الخوادم الخاصة بهم و / أو تقوم فقط بربط موارد الخوادم الخاصة بهم بمثيلات الجهاز ، يمكن تقليل تزامن التحميل / إلغاء التحميل إلى أقل من حجم تجمع الخيوط. هذا لأنه قد نضطر إلى انتظار تحميل / إلغاء تحميل واحد قابل للخدمة حتى ينتهي لتحديد مدى توفر الموارد لتحميل آخر قابل للخدمة.

يستوجب:

  1. ترتيب استدعاءات الأسلوب - ManageServable () (والمتغيرات) -> LoadServable () -> UnloadServable () -> StopManagingServable () .
  2. لا تقم بجدولة تحميل وتفريغ متزامن لنفس الخدمة.
  3. لا تستدعي تحميل أو تفريغ عدة مرات على نفس الخدمة.

هذه الفئة هي موضوع آمن.

استخدام المثال:

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

إذا تم تكوينه لاستخدام تحميل / إلغاء تحميل تجمع مؤشرات الترابط ، فانتظر حتى تنتهي جميع عمليات التحميل والتفريغ المجدولة ، ثم يدمر مجموعة مؤشرات الترابط.