Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

tensorflow :: porcja:: Ładowarka

To jest klasa abstrakcyjna.

#include <loader.h>

Standaryzowana abstrakcja dla obiektu, która zarządza cyklem życia serwowalnego, w tym ładowaniem i usuwaniem go.

Podsumowanie

Servables to dowolne obiekty, które obsługują algorytmy lub dane, które często, choć niekoniecznie, używają modelu uczenia maszynowego.

Moduł ładujący dla obsługiwanego obiektu reprezentuje jedną instancję strumienia obsługiwanych wersji, wszystkie o wspólnej nazwie (np. „My_servable”) i rosnących numerach wersji, zazwyczaj reprezentujących zaktualizowane parametry modelu, które zostały wyuczone ze świeżych danych szkoleniowych.

Program ładujący powinien rozpocząć się w stanie nieobciążonym, co oznacza, że ​​nie wykonano żadnej pracy w celu przygotowania do wykonywania operacji. Typowa instancja, która nie została jeszcze załadowana, zawiera jedynie wskaźnik do lokalizacji, z której można załadować jej dane (np. Ścieżka systemu plików lub lokalizacja sieciowa). Budowa i niszczenie instancji powinno być dość tanie. Kosztowne operacje inicjalizacyjne powinny być wykonywane w Load () .

Podklasy mogą opcjonalnie przechowywać wskaźnik do źródła, z którego pochodzi, w celu uzyskania dostępu do stanu współdzielonego przez wiele obsługiwanych obiektów w danym obsługiwanym strumieniu.

Implementacje muszą zapewnić, że metody, które ujawniają, są bezpieczne dla wątków, lub dokładnie dokumentować i / lub koordynować ich właściwości bezpieczeństwa wątków z klientami, aby zapewnić poprawność. Elementy obsługowe nie muszą się martwić o równoczesne wykonywanie Load () / Unload (), ponieważ wywołujący upewni się, że tak się nie stanie.

Dziedzictwo

Znane bezpośrednio podklasy: tensorflow :: Serving :: ResourceUnsafeLoader

Konstruktorzy i niszczyciele

~Loader ()
Destruktor nie zostanie wywołana na Loader , który jest aktualnie załadowany servable, czyli

Funkcje publiczne

EstimateResources (ResourceAllocation *estimate) const =0
virtual Status
Szacuje zasoby, które będą używane przez usługę.
Load ()
virtual Status
Pobiera wszystkie dane, które muszą zostać załadowane przed użyciem elementu obsługującego zwróconego przez servable () .
LoadWithMetadata (const Metadata & metadata)
virtual Status
Podobna do powyższej metody, ale przyjmuje Metadata jako parametr, który może być odpowiednio używany przez implementację modułu ładującego.
Unload ()=0
virtual void
Zwalnia wszelkie zasoby przydzielone podczas Load () (z wyjątkiem być może zasobów współdzielonych przez serwable, które są nadal potrzebne dla innych aktywnych).
servable ()=0
virtual AnyPtr
Zwraca nieprzezroczysty interfejs do bazowego obiektu obsługiwanego.

Struktury

tensorflow :: Serving :: Loader :: Metadata

Metadane składają się z ServableId.

Funkcje publiczne

EstimateResources

virtual Status EstimateResources(
  ResourceAllocation *estimate
) const =0

Szacuje zasoby, które będą używane przez usługę.

WAŻNE: implementacja tej metody musi być zgodna z następującymi wymaganiami, które umożliwiają systemowi obsługującemu prawidłowe rozumowanie, które usługi mogą być bezpiecznie ładowane:

  1. Szacunek musi stanowić górną granicę rzeczywistej wartości.
  2. Przed załadowaniem oszacowanie może obejmować zasoby, które nie są powiązane z żadną konkretną instancją urządzenia, np. Pamięć RAM jednego z dwóch procesorów graficznych.
  3. Podczas ładowania dla dowolnych urządzeń z wieloma instancjami (np. Dwa procesory graficzne) oszacowanie musi określać instancję, z którą powiązany jest każdy zasób.
  4. Szacunek musi być monotonicznie i nie wzrastać, tj. Nie może wzrastać w czasie. Powody, dla których z czasem może się zmniejszyć Zwroty
    oszacowanie zasobów, które będą zużywać obsługiwane po załadowaniu. Jeśli obsługiwany plik został już załadowany, zwraca oszacowanie rzeczywistego wykorzystania zasobów.

Załaduj

virtual Status Load()

Pobiera wszystkie dane, które muszą zostać załadowane przed użyciem elementu obsługującego zwróconego przez servable () .

Może wykorzystywać nie więcej zasobów niż szacunki podane przez EstimateResources () .

W przypadku implementacji Load () nie musisz zastępować LoadWithMetadata () .

LoadWithMetadata

virtual Status LoadWithMetadata(
  const Metadata & metadata
)

Podobna do powyższej metody, ale przyjmuje Metadata jako parametr, który może być odpowiednio używany przez implementację modułu ładującego.

Jeśli zastępujesz LoadWithMetadata () , ponieważ możesz odpowiednio używać metadanych, możesz pominąć zastępowanie Load () .

Rozładować

virtual void Unload()=0

Zwalnia wszelkie zasoby przydzielone podczas Load () (z wyjątkiem być może zasobów współdzielonych przez serwable, które są nadal potrzebne dla innych aktywnych).

Moduł ładujący nie musi wracać do „nowego” stanu (tj. Load () nie może być wywołany po Unload () ).

serwowalny

virtual AnyPtr servable()=0

Zwraca nieprzezroczysty interfejs do bazowego obiektu obsługiwanego.

Dzwoniący powinien znać dokładny typ interfejsu, aby móc z niego korzystać. Na przykład:

Implementacja CustomLoader:

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

  AnyPtr servable() override { return servable_; }

 private:
  CustomServable* servable_ = nullptr;
};

Żądanie obsługującego użytkownika:

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

Jeśli servable () jest wywoływane po pomyślnym Load () i przed Unload () , zwraca prawidłowy, niezerowy obiekt AnyPtr. Jeśli zostanie wywołana przed pomyślnym wywołaniem Load () lub po Unload () , zwraca wartość null AnyPtr.

~ Loader

virtual  ~Loader()=default

Destruktor nie zostanie wywołana na Loader , który jest aktualnie załadowany servable, czyli

między (udanymi) wywołaniami Load () i Unload () .