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

tensorflow :: porcja:: BasicManager

To jest klasa abstrakcyjna.

#include <basic_manager.h>

Pomaga zarządzać cyklem życia elementów serwisowych, w tym ich ładowaniem, obsługą i rozładowywaniem.

Podsumowanie

Menedżer przyjmuje usługi w postaci Loaderów.

Rozpoczynamy zarządzanie serwowalnym za pomocą jednej z metod ManageServable *. Możesz przejść do załadowania serwowalnego po tym, wywołując LoadServable () . Wczytanie spowoduje również udostępnienie wyświetlania do wyświetlania. Gdy zdecydujesz się go wyładować, możesz wywołać na nim UnloadServable () , co spowoduje, że nie będzie można go obsługiwać, a następnie zwolnij plik serwowalny.

Elementy udostępniane są zachowywane do momentu wywołania StopManagingServable () . Dzięki temu menedżer wyższego poziomu, który ma więcej informacji, może zdecydować, kiedy można bezpiecznie zapomnieć o udostępnianym pliku.

BasicManager śledzi zasoby (np. Pamięć RAM) używane przez załadowane serwery i pozwala tylko na ładowanie nowych elementów obsługowych, które mieszczą się w ogólnej puli zasobów.

BasicManager można skonfigurować tak, aby używał puli wątków do ładowania i zwalniania. To sprawia, że ​​metody LoadServable () i UnloadServable () planują ładowanie / zwalnianie zamiast wykonywania ich synchronicznie. Jeśli w puli wątków jest więcej oczekujących operacji ładowania / zwalniania niż wątków, są one przetwarzane w kolejności FIFO.

W przypadku modułów ładujących, które przeszacowują zapotrzebowanie na zasoby swoich elementów obsługujących i / lub wiążą je tylko z wystąpieniami urządzeń, współbieżność ładowania / zwalniania może zostać zmniejszona poniżej rozmiaru puli wątków. Dzieje się tak, ponieważ być może będziemy musieli poczekać, aż załadowanie / wyładowanie jednego elementu udostępnianego zakończy się, aby określić dostępność zasobów do załadowania innego elementu obsługującego.

WYMAGANIA:

  1. Kolejność wywołań metod - ManageServable () (i warianty) -> LoadServable () -> UnloadServable () -> StopManagingServable () .
  2. Nie planuj jednoczesnego ładowania i zwalniania tego samego obsługiwanego elementu.
  3. Nie wywołuj ładowania ani wyładowywania wiele razy w tym samym udostępnianiu.

Ta klasa jest bezpieczna dla wątków.

Przykładowe użycie:

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));  

Dziedzictwo

Dziedziczy po : tensorflow :: służąc :: Manager

Konstruktorzy i niszczyciele

~BasicManager ()
W przypadku skonfigurowania do używania puli wątków ładowania / zwalniania czeka, aż wszystkie zaplanowane ładowanie i zwalnianie zakończy się, a następnie niszczy zestaw wątków.

Typy publiczne

DoneCallback za pomocą
std::function< void(const Status &status)>
Callback wywołany na końcu {Load, Unload} Servable ().
PreLoadHook za pomocą
std::function< void(const ServableId &)>

Klasy przyjaciół

test_util::BasicManagerTestAccess
friend class

Publiczne funkcje statyczne

Create ( Options options, std::unique_ptr< BasicManager > *manager)
Status

Funkcje publiczne

CancelLoadServableRetry (const ServableId & id)
void
Anuluje ponawianie próby ładowania obsługiwanego podczas 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 >
Pobiera listę wszystkich dostępnych identyfikatorów obsługiwanych, tj
LoadServable (const ServableId & id, DoneCallback done_callback)
void
Wczytuje serwowalny z tym identyfikatorem i aktualizuje również mapę udostępniania.
ManageServable (ServableData< std::unique_ptr< Loader >> servable)
Status
Rozpoczyna zarządzanie serwowalnością.
ManageServableWithAdditionalState (ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state)
Status
Podobna do powyższej metody, ale wywołujący, zwykle inni menedżerowie zbudowani na jej podstawie, mogą skojarzyć dodatkowy stan z serwowalnym.
StopManagingServable (const ServableId & id)
Status
Nakazuje menedżerowi zaprzestanie zarządzania tym serwerem.
UnloadServable (const ServableId & id, DoneCallback done_callback)
void
Zwalnia serwowalny o tym identyfikatorze i aktualizuje również mapę udostępniania.

Struktury

tensorflow :: Serving :: BasicManager :: Options

Opcje konfiguracyjne i podłączane obiekty, które będą używane przez BasicManager .

Typy publiczne

DoneCallback

std::function< void(const Status &status)> DoneCallback

Callback wywołany na końcu {Load, Unload} Servable ().

Stan operacji przekazujemy do callback.

PreLoadHook

std::function< void(const ServableId &)> PreLoadHook

Klasy przyjaciół

test_util :: BasicManagerTestAccess

friend class test_util::BasicManagerTestAccess

Publiczne funkcje statyczne

Stwórz

Status Create(
  Options options,
  std::unique_ptr< BasicManager > *manager
)

Funkcje publiczne

CancelLoadServableRetry

void CancelLoadServableRetry(
  const ServableId & id
)

Anuluje ponawianie próby ładowania obsługiwanego podczas LoadServable () .

Nie robi nic, jeśli usługa udostępniania nie jest zarządzana.

Jeśli ponowne próby zostaną anulowane, obsługiwany element przechodzi w stan zależny od ostatniego wywołania metody Load (). Jeśli ostatnie Load () zakończyło się pomyślnie, będzie w stanie kReady, w przeciwnym razie w kError.

GetAdditionalServableState

T * GetAdditionalServableState(
  const ServableId & id
)

WYMAGANIA: ten menedżer powinien już zarządzać tym serwowalnością, w przeciwnym razie zwracamy wartość nullptr.

Detale
Zwroty
Dodatkowy stan do wyświetlania. Zwraca nullptr, jeśli nie ma dodatkowej konfiguracji stanu lub jeśli istnieje niezgodność typu między ustawieniem a pytaniem.

GetAvailableUntypedServableHandles

virtual std::map< ServableId, std::unique_ptr< UntypedServableHandle > > GetAvailableUntypedServableHandles() const override

GetManagedServableNames

std::vector< string > GetManagedServableNames() const 

Detale
Zwroty
nazwy wszystkich usług zarządzanych przez tego menedżera. Nazwy będą wolne od duplikatów i nie w określonej kolejności.

GetManagedServableStateSnapshot

optional< ServableStateSnapshot< T > > GetManagedServableStateSnapshot(
  const ServableId & id
)

WYMAGANIA: ten menedżer powinien już zarządzać tym serwowalnością, w przeciwnym razie zwracamy nullopt.

Detale
Zwroty
migawka stanu określonego identyfikatora usługi zarządzanego przez tego menedżera, jeśli jest dostępna.

GetManagedServableStateSnapshots

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

T jest typem dodatkowego stanu, jeśli istnieje.

Detale
Zwroty
migawki stanu wszystkich elementów obsługi danego strumienia, którymi zarządza ten menedżer.

GetUntypedServableHandle

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

ListAvailableServableIds

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

Pobiera listę wszystkich dostępnych identyfikatorów obsługiwanych, tj

każdy z nich można pobrać za pomocą GetServableHandle.

LoadServable

void LoadServable(
  const ServableId & id,
  DoneCallback done_callback
)

Wczytuje serwowalny z tym identyfikatorem i aktualizuje również mapę udostępniania.

Wywołuje done_callback z ok, jeśli usługa została pomyślnie załadowana, w przeciwnym razie zwraca stan błędu.

W przypadku korzystania z puli wątków ta metoda przełącza obsługiwaną wiązkę przewodów do stanu kLoading, planuje ładowanie i zwraca, w przeciwnym razie kończy ładowanie przed powrotem.

WYMAGANIA: Ten menedżer powinien już zarządzać tym serwowalnym, aby został załadowany, w przeciwnym razie wywołujemy done_callback ze statusem błędu. Nie wywołuj tego wiele razy w tym samym udostępnianym pliku. Tylko jeden z nich powiedzie się, a reszta zakończy się niepowodzeniem ze statusem błędu.

ManageServable

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

Rozpoczyna zarządzanie serwowalnością.

Zwraca błąd, jeśli dany produkt obsługiwany jest już zarządzany.

Jeśli możliwość wyświetlania jest w stanie błędu, ta metoda nie zwraca błędu. Zamiast tego menedżer akceptuje obsługiwany element, umieszcza go w stanie kError (z powiadomieniem wysyłanym do magistrali zdarzeń), a następnie natychmiast przestaje nim zarządzać. Takie zachowanie ułatwia jednolitą obsługę błędów występujących w źródłach (np. Nieprawidłowa ścieżka pliku do obsługiwanych danych) i tych, które występują w menedżerze (np. Niewystarczające zasoby do załadowania obsługiwanych zasobów).

ManageServableWithAdditionalState

Status ManageServableWithAdditionalState(
  ServableData< std::unique_ptr< Loader >> servable,
  std::unique_ptr< T > additional_state
)

Podobna do powyższej metody, ale wywołujący, zwykle inni menedżerowie zbudowani na jej podstawie, mogą skojarzyć dodatkowy stan z serwowalnym.

Dodatkowym stanem może być lista ACL lub metadane okresu istnienia tego obsługiwanego elementu. Własność państwa zostaje przeniesiona na tę klasę.

StopManagingServable

Status StopManagingServable(
  const ServableId & id
)

Nakazuje menedżerowi zaprzestanie zarządzania tym serwerem.

Wymaga, aby serwowany plik był aktualnie zarządzany i jego stan to {kNew, kError, kDisabled}.

UnloadServable

void UnloadServable(
  const ServableId & id,
  DoneCallback done_callback
)

Zwalnia serwowalny o tym identyfikatorze i aktualizuje również udostępnianą mapę.

Wywołuje done_callback z ok, jeśli usługa została pomyślnie wyładowana, w przeciwnym razie zwraca stan błędu.

W przypadku korzystania z puli wątków ta metoda przełącza obsługiwaną wiązkę przewodów do stanu kQuiescing, planuje wyładowanie i zwraca, w przeciwnym razie kończy zwalnianie przed powrotem.

WYMAGANIA: Ten menedżer powinien załadować i udostępnić ten programowalny, aby został wyładowany, w przeciwnym razie wywołuje done_callback ze statusem błędu. Nie wywołuj tego wiele razy w tym samym udostępnianym pliku. Tylko jeden z nich powiedzie się, a pozostałe zakończy się niepowodzeniem ze statusem błędu.

~ BasicManager

 ~BasicManager() override

W przypadku skonfigurowania do używania puli wątków ładowania / zwalniania czeka, aż wszystkie zaplanowane ładowanie i zwalnianie zakończy się, a następnie niszczy zestaw wątków.