텐서플로:: 피복재:: 짐을 싣는 사람

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

#include <loader.h>

로드 및 언로드를 포함하여 서빙 가능의 수명 주기를 관리하는 객체에 대한 표준화된 추상화입니다.

요약

Servable은 반드시는 아니지만 종종 기계 학습 모델을 사용하는 알고리즘이나 데이터를 제공하는 임의의 개체입니다.

로더 게재 가능한 객체가 게재 가능한 버전 일반적으로 신선한 훈련 데이터에서 배운 업데이트 된 모델 매개 변수를 나타내는 모든 (예 : "my_servable") 공통 이름을 공유하고 증가하는 버전 번호의 스트림의 하나 개의 인스턴스를 나타냅니다.

로더는 어떤 작업이 작업을 수행 할 준비 완료되지 않았 음을 의미 무부하 상태에서 시작해야합니다. 아직 로드되지 않은 일반적인 인스턴스에는 데이터를 로드할 수 있는 위치(예: 파일 시스템 경로 또는 네트워크 위치)에 대한 포인터만 포함됩니다. 인스턴스의 생성 및 파괴는 상당히 저렴해야 합니다. 비싼 초기화 작업을에서 수행되어야 로드 () .

서브 선택적 포인터를 저장할 수있다 소스 소정 게재 가능한 스트림에서 여러 게재 가능한 객체간에 공유 상태를 액세스하기 위해, 그 유래.

구현은 노출하는 메서드가 스레드로부터 안전한지 확인하거나 정확성을 보장하기 위해 클라이언트와 스레드로부터 안전한 속성을 신중하게 문서화 및/또는 조정해야 합니다. Servables은의 동시 실행에 대해 걱정할 필요가 없습니다 ()로드 호출자가이 발생하지 않도록하므로 / 언로드 ().

계승

기존의 서브 클래스 안내 : tensorflow :: 역할을 :: ResourceUnsafeLoader을

생성자와 소멸자

~Loader ()
소멸자는 호출되지 않습니다 로더 그의 게재 가능한 현재로드, 즉,

공공 기능

EstimateResources (ResourceAllocation *estimate) const =0
virtual Status
servable이 사용할 리소스를 추정합니다.
Load ()
virtual Status
필요에 의해 반환 게재 가능한 사용하기 전에로드 될 임의의 데이터 페치 게재 가능한 ()를 .
LoadWithMetadata (const Metadata & metadata)
virtual Status
전술 한 방법과 유사하지만, 소요 메타 적절 로더 구현에서 사용될 수있는 PARAM로.
Unload ()=0
virtual void
해방 동안 할당 된 자원을 로드 ()을 (여전히 다른 활동들에 필요한 servables에서 공유 자원에 대한 아마도 제외).
servable ()=0
virtual AnyPtr
기본 제공 가능한 개체에 대한 불투명한 인터페이스를 반환합니다.

구조체

tensorflow :: 제공 :: 로더 :: 메타 데이터를

메타데이터는 ServableId로 구성됩니다.

공공 기능

자원 추정

virtual Status EstimateResources(
  ResourceAllocation *estimate
) const =0

servable이 사용할 리소스를 추정합니다.

중요: 이 메소드의 구현은 다음 요구 사항을 따라야 하며, 이를 통해 서빙 시스템이 안전하게 로드할 수 있는 서빙을 올바르게 추론할 수 있습니다.

  1. 추정치는 실제 값의 상한을 나타내야 합니다.
  2. 로드 전 추정에는 두 GPU 중 하나의 RAM과 같은 특정 장치 인스턴스에 바인딩되지 않은 리소스가 포함될 수 있습니다.
  3. 로드되는 동안 여러 인스턴스(예: 2개의 GPU)가 있는 장치의 경우 추정치는 각 리소스가 바인딩되는 인스턴스를 지정해야 합니다.
  4. 추정치는 단조 증가하지 않아야 합니다. 즉, 시간이 지남에 따라 증가할 수 없습니다. 시간이 지남에 따라 잠재적으로 감소하는 이유 보고
    로드된 서빙 가능 리소스가 소비할 리소스의 추정치입니다. servable이 이미 로드된 경우 실제 리소스 사용량의 추정치를 반환합니다.

virtual Status Load()

필요에 의해 반환 게재 가능한 사용하기 전에로드 될 임의의 데이터 페치 게재 가능한 ()를 .

추정에 의해보고 된 것보다 더 자원을 사용할 수 EstimateResources () .

구현하는 경우 ) (로드 , 재정의 할 필요가 없습니다 LoadWithMetadata을 () .

메타데이터 로드

virtual Status LoadWithMetadata(
  const Metadata & metadata
)

전술 한 방법과 유사하지만, 소요 메타 적절 로더 구현에서 사용될 수있는 PARAM로.

당신이 무시하는 경우 LoadWithMetadata를 () 당신이 적절하게 메타 데이터를 사용할 수 있기 때문에, 당신은 무시 건너 뛸 수 있습니다 로드 () .

부리다

virtual void Unload()=0

해방 동안 할당 된 자원을 로드 ()을 (여전히 다른 활동들에 필요한 servables에서 공유 자원에 대한 아마도 제외).

로더는 "새로운"상태로 돌아 할 필요가 없다 (즉, 부하 () 이후에 호출 할 수 없습니다 언로드를 () ).

제공 가능한

virtual AnyPtr servable()=0

기본 제공 가능한 개체에 대한 불투명한 인터페이스를 반환합니다.

호출자는 인터페이스를 실제로 사용하기 위해 인터페이스의 정확한 유형을 알아야 합니다. 예를 들어:

: 구현 CustomLoader

class CustomLoader : public Loader {
 public:
  ...
  Status Load() override {
    servable_ = ...;
  }

  AnyPtr servable() override { return servable_; }

 private:
  CustomServable* servable_ = nullptr;
};

사용자 요청을 서비스 :

ServableHandle<CustomServable> handle = ...
CustomServable* servable = handle.get();
servable->...

경우 게재 가능한 ()가 성공한 후라고 하중 () 및 전 언로드 () , 그것은 유효한, null 이외의 AnyPtr 개체를 반환합니다. 성공적인 전에 호출하면 로드 () 호출 이후에 언로드 () , null를 AnyPtr를 반환합니다.

~로더

virtual  ~Loader()=default

소멸자는 호출되지 않습니다 로더 그의 게재 가능한 현재로드, 즉,

사이 (성공) 호출하는 로드 ()언로드 () .