جریان تنسور:: خدمت:: BasicManager
این یک کلاس انتزاعی است.#include <basic_manager.h>
به مدیریت چرخه حیات سرویسها از جمله بارگیری، سرویس دهی و تخلیه آنها کمک میکند.
خلاصه
مدیر سرویس پذیرها را در قالب Loader می پذیرد.
ما مدیریت یک سرویس پذیر را از طریق یکی از روش های ManageServable* شروع می کنیم. شما می توانید در رفتن به بار servable پس از این با تماس LoadServable () . بارگیری همچنین باعث می شود که سرویس قابل ارائه برای سرویس دهی شود. هنگامی که شما تصمیم به آن خالی کردن، شما می توانید پاسخ UnloadServable () بر روی آن، که باعث می شود آن را در دسترس برای خدمت و سپس خالی کردن servable.
Servables تا زمانی حفظ StopManagingServable () نامیده می شود. این به یک مدیر سطح بالاتر با اطلاعات بیشتر اجازه میدهد تصمیم بگیرد که چه زمانی میتواند یک سرویس قابل سرویس را فراموش کند.
BasicManager آهنگ منابع (مثلا RAM) استفاده شده توسط servables لود، و تنها اجازه می دهد تا بارگذاری servables جدید است که در استخر منابع کلی مناسب.
BasicManager می توان به پیکربندی به استفاده از یک موضوع استخر به انجام بار و بارگیری آن است. این باعث می شود LoadServable () و UnloadServable () روش برنامه ریزی بار / بارگیری نشود به جای اجرای آنها همزمان. اگر تعداد بارها/تخلیههای معلق بیشتری نسبت به نخها در مخزن نخ وجود داشته باشد، آنها به ترتیب FIFO پردازش میشوند.
در حضور لودرهایی که نیازهای منابع قابل خدمت خود را بیش از حد تخمین می زنند و/یا فقط منابع قابل سرویس خود را به نمونه های دستگاه متصل می کنند، همزمانی بارگذاری/تخلیه بار را می توان به زیر اندازه thread-pool کاهش داد. دلیلش این است که ممکن است مجبور باشیم تا بارگذاری/تخلیه یک سرویس پذیر به پایان برسد تا در دسترس بودن منبع برای بارگیری یک سرویس پذیر دیگر مشخص شود.
نیاز دارد:
- سفارش از تماس های روش - 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 () اگر برای استفاده از یک 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 پیکربندی شده باشد، صبر میکند تا تمام بارگذاریها و تخلیههای برنامهریزیشده به پایان برسد و سپس مجموعه رشتهها را از بین میبرد.
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2019-07-10 بهوقت ساعت هماهنگ جهانی.