tensorflow ::サービング:: BasicManager

これは抽象クラスです。

#include <basic_manager.h>

使用可能なサービスのロード、提供、アンロードなどのライフサイクルの管理を支援します。

概要

マネージャーはローダーの形でサーバブルを受け入れます。

ManageServable *メソッドの1つを介してservableの管理を開始します。あなたが呼び出すことで、この後のサービス提供可能なをロードするために行くことができLoadServableを() 。ロードすると、サーバブルも提供できるようになります。あなたはそれをアンロードすることを決定したら、あなたは呼び出すことができます)(UnloadServableサービス提供可能なアンロード、その後、奉仕することが利用できなくなる、それに。

Servablesがされるまで保持されます()StopManagingServableと呼ばれています。これにより、より多くの情報を持つ上位レベルのマネージャーが、いつサーバブルを忘れても安全かを判断できます。

BasicManagerは、ロードされたservablesが使用するリソース(例えばRAM)を追跡し、そして唯一の総合的なリソースプール内に収まる新しい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 >
利用可能なすべてのサービス可能なIDのリストを取得します。
LoadServable (const ServableId & id, DoneCallback done_callback)
void
このIDでservableをロードし、サービングマップも更新します。
ManageServable (ServableData< std::unique_ptr< Loader >> servable)
Status
サーバブルの管理を開始します。
ManageServableWithAdditionalState (ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state)
Status
上記の方法と同様ですが、呼び出し元、通常はこの方法の上に構築された他のマネージャーが、追加の状態をservableに関連付けることができます。
StopManagingServable (const ServableId & id)
Status
このサーバブルの管理を停止するようにマネージャーに指示します。
UnloadServable (const ServableId & id, DoneCallback done_callback)
void
このIDでservableをアンロードし、サービングマップも更新します。

構造体

tensorflow ::サービス提供:: BasicManager ::オプション

コンフィグオプションとで使用されるプラガブルオブジェクトBasicManager

パブリックタイプ

DoneCallback

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
)

中にサービス提供可能な負荷を再試行キャンセルLoadServable() 。

servableが管理されていない場合は何もしません。

再試行がキャンセルされると、servableは最後に呼び出されたLoad()に依存する状態になります。最後のLoad()が成功した場合、状態はkReadyになり、そうでない場合はkErrorになります。

GetAdditionalServableState

T * GetAdditionalServableState(
  const ServableId & id
)

必要条件:このマネージャーはすでにこのservableを管理しているはずです。そうでない場合は、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
)

必要条件:このマネージャーはすでにこのservableを管理しているはずです。そうでない場合は、nulloptを返します。

詳細
戻り値
利用可能な場合、このマネージャーによって管理される特定のservable-idの状態スナップショット。

GetManagedServableStateSnapshots

std::vector< ServableStateSnapshot< T > > GetManagedServableStateSnapshots(
  const string & servable_name
) const 

Tは、もしあれば、追加状態タイプです。

詳細
戻り値
このマネージャーによって管理される、特定のストリームのすべてのservableの状態スナップショット。

GetUntypedServableHandle

virtual Status GetUntypedServableHandle(
  const ServableRequest & request,
  std::unique_ptr< UntypedServableHandle > *untyped_handle
) override

ListAvailableServableIds

virtual std::vector< ServableId > ListAvailableServableIds() const override

利用可能なすべてのサービス可能なIDのリストを取得します。

これらはそれぞれ、GetServableHandleを使用して取得できます。

LoadServable

void LoadServable(
  const ServableId & id,
  DoneCallback done_callback
)

このIDでservableをロードし、サービングマップも更新します。

サービス提供可能なエラー状態を、正常にロードされ、他戻った場合に限っコールはOKでdone_callback。

スレッドプールを使用している場合、このメソッドはサービス可能なハーネスをkLoading状態に移行し、ロードをスケジュールして戻ります。それ以外の場合は、戻る前にロードを完了します。

必要があります。このマネージャーはすでにこのサービス提供可能な管理されている必要があり、それをロードするために、他の我々はエラー状態でdone_callback呼び出します。同じサーバブルでこれを複数回呼び出さないでください。それらの1つだけが成功し、残りはエラーステータスで失敗します。

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
)

上記の方法と同様ですが、呼び出し元、通常はこの方法の上に構築された他のマネージャーが、追加の状態をservableに関連付けることができます。

追加の状態は、そのサーバブルのACLまたはライフタイムメタデータである可能性があります。州の所有権はこのクラスに譲渡されます。

StopManagingServable

Status StopManagingServable(
  const ServableId & id
)

このサーバブルの管理を停止するようにマネージャーに指示します。

servableが現在管理されており、その状態が{kNew、kError、kDisabled}のいずれかである必要があります。

UnloadServable

void UnloadServable(
  const ServableId & id,
  DoneCallback done_callback
)

このIDでservableをアンロードし、サービングマップも更新します。

コールは、サービス提供可能なが他のリターンエラーステータス、成功したアンロードされたOK IFFでdone_callback。

スレッドプールを使用している場合、このメソッドはサービス可能なハーネスをkQuiescing状態に移行し、アンロードをスケジュールして戻ります。それ以外の場合は、戻る前にアンロードを完了します。

必要があります。このマネージャーがロードされ、これがサービス提供可能な利用できるようにしている必要があり、それをアンロードするために、他の呼び出しがエラー状態でdone_callback。同じサーバブルでこれを複数回呼び出さないでください。それらの1つだけが成功し、残りはエラーステータスで失敗します。

〜BasicManager

 ~BasicManager() override

ロード/アンロードスレッドプールを使用するように構成されている場合、スケジュールされたすべてのロードとアンロードが完了するまで待機してから、スレッドのセットを破棄します。