جریان تنسور:: خدمت:: BasicManager

این یک کلاس انتزاعی است.

#include <basic_manager.h>

به مدیریت چرخه حیات سرویس‌ها از جمله بارگیری، سرویس دهی و تخلیه آنها کمک می‌کند.

خلاصه

مدیر سرویس پذیرها را در قالب Loader می پذیرد.

ما مدیریت یک سرویس پذیر را از طریق یکی از روش های ManageServable* شروع می کنیم. شما می توانید در رفتن به بار servable پس از این با تماس LoadServable () . بارگیری همچنین باعث می شود که سرویس قابل ارائه برای سرویس دهی شود. هنگامی که شما تصمیم به آن خالی کردن، شما می توانید پاسخ UnloadServable () بر روی آن، که باعث می شود آن را در دسترس برای خدمت و سپس خالی کردن servable.

Servables تا زمانی حفظ StopManagingServable () نامیده می شود. این به یک مدیر سطح بالاتر با اطلاعات بیشتر اجازه می‌دهد تصمیم بگیرد که چه زمانی می‌تواند یک سرویس قابل سرویس را فراموش کند.

BasicManager آهنگ منابع (مثلا RAM) استفاده شده توسط servables لود، و تنها اجازه می دهد تا بارگذاری servables جدید است که در استخر منابع کلی مناسب.

BasicManager می توان به پیکربندی به استفاده از یک موضوع استخر به انجام بار و بارگیری آن است. این باعث می شود LoadServable () و UnloadServable () روش برنامه ریزی بار / بارگیری نشود به جای اجرای آنها همزمان. اگر تعداد بارها/تخلیه‌های معلق بیشتری نسبت به نخ‌ها در مخزن نخ وجود داشته باشد، آنها به ترتیب FIFO پردازش می‌شوند.

در حضور لودرهایی که نیازهای منابع قابل خدمت خود را بیش از حد تخمین می زنند و/یا فقط منابع قابل سرویس خود را به نمونه های دستگاه متصل می کنند، همزمانی بارگذاری/تخلیه بار را می توان به زیر اندازه thread-pool کاهش داد. دلیلش این است که ممکن است مجبور باشیم تا بارگذاری/تخلیه یک سرویس پذیر به پایان برسد تا در دسترس بودن منبع برای بارگیری یک سرویس پذیر دیگر مشخص شود.

نیاز دارد:

  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 ()
اگر برای استفاده از یک thread-pool load/unload پیکربندی شده باشد، صبر می‌کند تا تمام بارگذاری‌ها و تخلیه‌های برنامه‌ریزی‌شده به پایان برسد و سپس مجموعه رشته‌ها را از بین می‌برد.

انواع عمومی

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 :: گزینه

گزینه های پیکربندی و اشیاء نردبان که توسط استفاده 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 () .

اگر سرویس‌پذیر مدیریت نشود، کاری انجام نمی‌دهد.

اگر تلاش‌های مجدد لغو شوند، سرویس‌پذیر به وضعیتی وابسته به آخرین بار ()بر روی آن فراخوانی می‌شود. اگر آخرین بار () موفقیت آمیز بود، در حالت kReady و در غیر این صورت در kError خواهد بود.

GetAdditionalServableState

T * GetAdditionalServableState(
  const ServableId & id
)

نیاز: این مدیر باید قبلاً این سرویس پذیر را مدیریت می کرد، در غیر این صورت nullptr را برمی گردانیم.

جزئیات
برمی گرداند
حالت اضافی برای قابل خدمت. اگر تنظیم حالت اضافی وجود نداشته باشد یا عدم تطابق نوع بین آنچه تنظیم شده و آنچه خواسته شده باشد، nullptr را برمی گرداند.

GetAvailableUntypedServable Handles

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
)

سرویس‌پذیر را با این شناسه بارگیری می‌کند و نقشه سرویس را نیز به‌روزرسانی می‌کند.

تماس با OK 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
)

قابل ارائه را با این شناسه بارگیری می کند و نقشه سرویس را نیز به روز می کند.

تماس با OK done_callback IFF servable موفقیت تخلیه شد، بازده دیگری به وضعیت خطا.

اگر از thread-pool استفاده می شود، این روش مهار قابل سرویس را به حالت kQuiescing تغییر می دهد، تخلیه بار را زمان بندی می کند و برمی گرداند، در غیر این صورت تخلیه را قبل از بازگشت کامل می کند.

نیاز به: این مدیر باید لود شده و ساخته شده این servable موجود، آن را به تخلیه شود، تماس دیگری با وضعیت خطا done_callback. این را چندین بار در یک سرویس دهنده صدا نکنید. فقط یکی از آنها موفق خواهد شد و بقیه با وضعیت خطا شکست خواهند خورد.

~مدیر پایه

 ~BasicManager() override

اگر برای استفاده از یک thread-pool load/unload پیکربندی شده باشد، صبر می‌کند تا تمام بارگذاری‌ها و تخلیه‌های برنامه‌ریزی‌شده به پایان برسد و سپس مجموعه رشته‌ها را از بین می‌برد.