텐서플로:: 피복재:: 기본매니저

이것은 추상 클래스입니다.

#include <basic_manager.h>

로드, 서빙 및 언로드를 포함하여 서블릿의 수명 주기를 관리하는 데 도움이 됩니다.

요약

관리자는 로더 형태의 서블릿을 허용합니다.

ManageServable* 메소드 중 하나를 통해 서버블 관리를 시작합니다. 당신은 호출하여이 후 게재 가능한로드에 갈 수 LoadServable을 () . 또한 로드하면 서빙을 제공할 수 있습니다. 당신이 그것을 언로드하기로 결정하면, 당신은 호출 할 수 있습니다 UnloadServable ()를 다음 게재 가능한 언로드, 그것은 사용할 수없는 역할을 할 것이다, 거기에.

Servables가 될 때까지 유지됩니다 () StopManagingServable 이라고합니다. 이렇게 하면 더 많은 정보를 가진 상위 관리자가 언제 서번블을 잊어도 안전한지 결정할 수 있습니다.

BasicManager는 로드 servables에서 사용하는 리소스 (예 : RAM)을 추적하고 단지 전체 리소스 풀에 들어 가지 새로운 servables를로드 할 수 있습니다.

BasicManager는 그것의로드 및 언로드 할 수있는 스레드 풀을 사용하도록 구성 할 수 있습니다. 이것은하게 LoadServable ()UnloadServable () 동기들을 실행보다는로드 / 언로드 예약 방법. 스레드 풀의 스레드보다 보류 중인 로드/언로드가 많으면 FIFO 순서로 처리됩니다.

servable의 리소스 요구 사항을 과대 평가하고/또는 servable의 리소스를 장치 인스턴스에만 바인딩하는 로더가 있는 경우 로드/언로드 동시성을 스레드 풀 크기 아래로 줄일 수 있습니다. 이는 다른 서빙을 로드하기 위한 리소스 가용성을 고정하기 위해 한 서빙의 로드/언로드가 완료될 때까지 기다려야 할 수도 있기 때문입니다.

다음이 필요합니다.

  1. 메소드 호출의 주문 - ManageServable () (및 변형) -> LoadServable () -> UnloadServable () -> StopManagingServable () .
  2. 동일한 servable의 동시 로드 및 언로드를 예약하지 마십시오.
  3. 동일한 servable에서 load 또는 unload를 여러 번 호출하지 마십시오.

이 클래스는 스레드로부터 안전합니다.

사용 예제 :

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로 서빙 가능 항목을 로드하고 서빙 맵도 업데이트합니다.
ManageServable (ServableData< std::unique_ptr< Loader >> servable)
Status
servable 관리를 시작합니다.
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()의 끝에서 호출되는 콜백입니다.

콜백에 작업 상태를 전달합니다.

프리로드훅

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이 관리되지 않으면 아무 작업도 수행하지 않습니다.

재시도가 취소되면 서빙 가능 개체는 마지막으로 호출된 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는 추가 상태 유형(있는 경우)입니다.

세부
보고
이 관리자가 관리하는 특정 스트림의 모든 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로 서빙 가능 항목을 로드하고 서빙 맵도 업데이트합니다.

게재 가능한 오류 상태를 성공적으로로드 다른 반환 된 IFF에 전화 확인과 done_callback.

스레드 풀을 사용하는 경우 이 메서드는 제공 가능한 하네스를 kLoading 상태로 전환하고 로드를 예약하고 반환합니다. 그렇지 않으면 반환하기 전에 로드를 완료합니다.

요구 사항 :이 관리자는로드 할 수 있도록, 다른 우리가 오류 상태 done_callback 전화, 이미 게재 가능한 관리되어 있어야합니다. 동일한 servable에서 이것을 여러 번 호출하지 마십시오. 그 중 하나만 성공하고 나머지는 오류 상태로 실패합니다.

ManageServable

Status ManageServable(
  ServableData< std::unique_ptr< Loader >> servable
)

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
)

이 서빙 가능 항목 관리를 중지하도록 관리자에게 알립니다.

servable이 현재 관리되고 있고 그 상태가 {kNew, kError, kDisabled} 중 하나여야 합니다.

UnloadServable

void UnloadServable(
  const ServableId & id,
  DoneCallback done_callback
)

이 ID로 서빙 가능 항목을 언로드하고 서빙 맵도 업데이트합니다.

게재 가능한 오류 상태를 성공적으로 언로드 다른 반환 된 IFF에 전화 확인과 done_callback.

스레드 풀을 사용하는 경우 이 메서드는 제공 가능한 하네스를 kQuiescing 상태로 전환하고 언로드를 예약하고 반환합니다. 그렇지 않으면 반환하기 전에 언로드를 완료합니다.

요구 사항 :이 관리자가로드 및 언로드 할 수 있도록, 다른 통화는 오류 상태 done_callback,이 게재 가능한 제공해야합니다. 동일한 servable에서 이것을 여러 번 호출하지 마십시오. 그 중 하나만 성공하고 나머지는 오류 상태로 실패합니다.

~기본매니저

 ~BasicManager() override

로드/언로드 스레드 풀을 사용하도록 구성된 경우 예약된 모든 로드 및 언로드가 완료될 때까지 기다린 다음 스레드 세트를 파괴합니다.