此页面由 Cloud Translation API 翻译。
Switch to English

张量流:: 服务:: 基本管理器

这是一个抽象类。

#include <basic_manager.h>

帮助管理服务项目的生命周期,包括加载,服务和卸载它们。

摘要

经理接受装载机形式的可食用物品。

我们开始通过ManageServable *方法之一管理可服务对象。之后,您可以通过调用LoadServable()继续加载servable 。加载也会使可食用的东西可供使用。一旦决定卸载它,就可以对其调用UnloadServable() ,这将使其无法使用,然后卸载可使用的对象。

保留可服务项,直到调用StopManagingServable()为止。这使具有更多信息的更高级别的经理可以决定何时可以安全地忘记可服务项目。

BasicManager跟踪已加载的可服务对象使用的资源(例如,RAM),并且仅允许加载适合整个资源池的新可服务对象。

可以将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 :: serving :: 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 >
获取所有可用的可服务ID的列表,即
LoadServable (const ServableId & id, DoneCallback done_callback)
void
使用此ID加载可投放对象,并更新投放地图。
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
使用此ID卸载可投放对象,并更新投放地图。

结构

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

公共静态功能

创造

526

公共职能

CancelLoadServableRetry

void CancelLoadServableRetry(
  const ServableId & id
)

取消在LoadServable()期间重试可服务的负载。

如果可管理项未被管理,则不执行任何操作。

如果重试被取消,则可服务项将进入状态,该状态取决于在其上调用的最后一个Load()。如果最后一个Load()成功,则它将处于状态kReady,否则处于kError。

GetAdditionalServableState

T * GetAdditionalServableState(
  const ServableId & id
)

要求:该经理应该已经在管理此可服务对象,否则我们将返回nullptr。

细节
退货
servable的附加状态。如果没有其他状态设置,或者设置的内容和要求的内容之间类型不匹配,则返回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。

细节
退货
此管理器管理的特定servable-id的状态快照(如果有)。

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

获取所有可用的可服务ID的列表,即

这些都可以使用GetServableHandle检索。

可加载

void LoadServable(
  const ServableId & id,
  DoneCallback done_callback
)

使用此ID加载可投放对象,并更新投放地图。

如果可服务对象已成功加载, 用ok调用done_callback ,否则返回错误状态。

如果使用线程池,则此方法将可使用的线束转换为kLoading状态,安排加载并返回,否则在返回之前完成加载。

要求:该经理应该已经在管理此可服务项,以便对其进行加载,否则我们将调用带有错误状态的done_callback 。不要在同一个可服务对象上多次调用此函数。其中只有一个会成功,而其他会失败并显示错误状态。

ManageServable

第1802页

开始管理可服务对象。

如果给出已被管理的可服务项,则返回错误。

如果可投放处于错误状态,此方法返回一个错误。相反,管理器接受该可服务项,将其置于kError状态(将通知发送到事件总线),然后立即停止对其进行管理。此行为有助于统一处理源中发生的错误(例如,无效的可服务数据文件路径)和管理器中发生的错误(例如,资源不足以加载可服务的错误)。

ManageServableWithAdditionalState

1天

与上述方法类似,但是调用者(通常是在此方法之上构建的其他管理器)可以将其他状态与可服务对象相关联。

附加状态可以是该可服务项的ACL或生存期元数据。国家的所有权转移到此类。

StopManagingServable

Status StopManagingServable(
  const ServableId & id
)

告诉经理停止管理此可服务对象。

要求当前正在管理servable,并且其状态为{kNew,kError,kDisabled}之一。

可卸载

void UnloadServable(
  const ServableId & id,
  DoneCallback done_callback
)

使用此ID卸载可投放对象,并更新投放地图。

如果可服务对象已成功卸载, 用ok调用done_callback ,否则返回错误状态。

如果使用线程池,则此方法将可使用的线束转换为kQuiescing状态,安排卸载并返回,否则将在返回之前完成卸载。

要求:该管理器应该已经加载并使该服务可用,以便可以卸载它,否则以错误状态调用done_callback 。不要在同一个可服务对象上多次调用此函数。其中只有一个会成功,而其他会失败并显示错误状态。

〜基本管理器

 ~BasicManager() override

如果配置为使用加载/卸载线程池,请等待所有计划的加载和卸载完成,然后销毁线程集。