tensorflow ::サービング:: BasicManager
これは抽象クラスです。#include <basic_manager.h>
使用可能なサービスのロード、提供、アンロードなどのライフサイクルの管理を支援します。
概要
マネージャーはローダーの形でサーバブルを受け入れます。
ManageServable *メソッドの1つを介してservableの管理を開始します。あなたが呼び出すことで、この後のサービス提供可能なをロードするために行くことができLoadServableを() 。ロードすると、サーバブルも提供できるようになります。あなたはそれをアンロードすることを決定したら、あなたは呼び出すことができます)(UnloadServableサービス提供可能なアンロード、その後、奉仕することが利用できなくなる、それに。
Servablesがされるまで保持されます()StopManagingServableと呼ばれています。これにより、より多くの情報を持つ上位レベルのマネージャーが、いつサーバブルを忘れても安全かを判断できます。
BasicManagerは、ロードされたservablesが使用するリソース(例えばRAM)を追跡し、そして唯一の総合的なリソースプール内に収まる新しいservablesをロードすることができます。
BasicManagerはそれのロードとアンロードを行うには、スレッドプールを使用するように設定することができます。これは作るLoadServable()とUnloadServable()に同期して実行するのではなく、ロード/アンロードをスケジューリングする方法を。スレッドプール内のスレッドよりも保留中のロード/アンロードが多い場合、それらはFIFO順に処理されます。
サーバブルのリソースニーズを過大評価している、および/またはサーバブルのリソースをデバイスインスタンスにバインドするだけのローダーが存在する場合、ロード/アンロードの同時実行性をスレッドプールサイズより小さくすることができます。これは、あるサーバブルのロード/アンロードが完了するのを待って、別のサーバブルをロードするためのリソースの可用性を特定する必要がある場合があるためです。
必要:
- -メソッド呼び出しの順序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 () ロード/アンロードスレッドプールを使用するように構成されている場合、スケジュールされたすべてのロードとアンロードが完了するまで待機してから、スレッドのセットを破棄します。 |
パブリックタイプ | |
---|---|
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
ロード/アンロードスレッドプールを使用するように構成されている場合、スケジュールされたすべてのロードとアンロードが完了するまで待機してから、スレッドのセットを破棄します。