انضم إلى مجتمع SIG TFX-Addons وساعد في جعل TFX أفضل! انضم إلى SIG TFX-Addons

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

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

#include <basic_manager.h>

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

ملخص

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

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

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

يتتبع BasicManager الموارد (مثل ذاكرة الوصول العشوائي) المستخدمة بواسطة الخوادم المحملة ، ويسمح فقط بتحميل الخوادم الجديدة التي تناسب مجموعة الموارد الإجمالية.

يمكن تكوين 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 :: serve :: Manager

البنائين والمدمرين

~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 :: serve :: BasicManager :: Options

خيارات التكوين والكائنات القابلة للتوصيل التي سيتم استخدامها بواسطة 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

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