тензорный поток :: сервировка :: LoaderHarness
#include <loader_harness.h>
LoaderHarness виджета на диспетчер использования в трюм на и поговорить с погрузчиком , пока он владеет.
Резюме
Он отслеживает общее состояние Servable таким образом, что менеджер может определить , какие переходы между состояниями , чтобы в какое время.
Реализация менеджера также может добавлять некоторое дополнительное состояние для каждой обвязки. Например, менеджер может разместить здесь ACL или метаданные жизненного цикла. Право собственности сохраняется за упряжью.
Этот класс является потокобезопасным.
Конструкторы и деструкторы | |
---|---|
LoaderHarness (const ServableId & id, std::unique_ptr< Loader > loader, const Options & options) | |
LoaderHarness (const ServableId & id, std::unique_ptr< Loader > loader, std::unique_ptr< T > additional_state, const Options & options) Конструктор для создания обвязки с дополнительным состоянием, которое нужно менеджеру. | |
~LoaderHarness () Допустимо уничтожение, если текущее состояние является одним из kNew, kDisabled или kError. |
Общедоступные типы | |
---|---|
State { | перечисление Состояние базового servable, с точки зрения LoaderHarness и для целей коммуникации между ним и менеджером . |
Публичные функции | |
---|---|
DoneQuiescing () | Status Переводит состояние в kQuiesced, что означает, что во внешнем интерфейсе больше нет активных дескрипторов этого обслуживаемого объекта. |
Error (const Status & status) | void Переводит состояние в kError и вызывает 'options_.error_callback'. |
Load () | Status Переходы к kLoading, делегирует в Servable :: Load (), затем переходит либо к kReady если Load () завершается успешно, или kError (и options_ вызывающего. |
LoadApproved () | Status Переходы на kLoadApproved. |
LoadRequested () | Status Переводит состояние жгута в kLoadRequested, если его текущее состояние равно kNew. |
StartQuiescing () | Status Переводит состояние в kQuiescing, что означает, что мы хотели бы больше не выдавать дескрипторы этому servable. |
Unload () | Status Переходы к kUnloading, делегаты Servable :: Unload (), затем переходит в kDisabled когда Unload () делается. |
UnloadRequested () | Status Переводит состояние жгута в kUnloadRequested, если его текущее состояние равно kReady. |
additional_state () | T * Получает дополнительное состояние. |
cancel_load_retry () | bool |
id () const | ServableId Возвращает идентификатор базового Servable. |
loader () const | Loader * Возвращает указатель на упакованный загрузчик. |
loader_state_snapshot () | ServableStateSnapshot< T > Возвращает текущий моментальный снимок общего состояния базового Servable. |
loader_state_snapshot () const | ServableStateSnapshot< std::nullptr_t > |
set_cancel_load_retry (bool value) | void Отменяет повторную попытку загрузки servable. |
state () | Возвращает текущее состояние базового Servable. |
status () | Status Что-то пошло не так с этим servable. |
Публичные статические функции | |
---|---|
StateDebugString ( State state) | string |
Структуры | |
---|---|
tensorflow :: служит :: LoaderHarness :: Варианты | Параметры для настройки LoaderHarness . |
Общедоступные типы
Состояние
State
Состояние базового servable, с точки зрения LoaderHarness и для целей коммуникации между ним и менеджером .
Не эквивалентно семантическим обслуживаемым состояниям в servable_state.h.
Допустимые переходы: kNew>kLoading>kReady>kQuiescing>kQuiesced>kUnloading>kDisabled, а также: any_state>kError.
Характеристики | |
---|---|
kDisabled | 'погрузчик _-> Выгрузить () ' закончил. |
kError | Произошла ошибка, либо во время «загрузчика _-> Load () » или снаружи жгута (и была сообщена к жгуту через вызов Error () ). |
kLoadApproved | Подача была одобрена для загрузки, например на это были выделены ресурсы. |
kLoadRequested | Менеджеру было предложено загрузить этот сервер. |
kLoading | 'погрузчик _-> Load () ' была названа. |
kNew | Начальное состояние. |
kQuiesced | Объект был недоступен для обслуживания. |
kQuiescing | Подача будет сделана недоступной для обслуживания. |
kReady | 'погрузчик _-> Load () ' удалось. |
kUnloadRequested | Менеджеру было предложено выгрузить этот сервер. |
kUnloading | «погрузчик _-> Выгрузить () » было названо. |
Публичные функции
Готово
Status DoneQuiescing()
Переводит состояние в kQuiesced, что означает, что во внешнем интерфейсе больше нет активных дескрипторов этого обслуживаемого объекта.
На этом этапе мы можем выгрузить этот объект.
ТРЕБУЕТСЯ: Состояние приостанавливается при вызове. В противном случае DCHECK завершается ошибкой, переходит в состояние kError и вызывает 'options_.error_callback'.
Ошибка
void Error( const Status & status )
Переводит состояние в kError и вызывает 'options_.error_callback'.
Нагрузка
Status Load()
Переходы к kLoading, делегирует в Servable :: Load (), затем переходит либо к kReady если Load () завершается успешно, или kError (и options_ вызывающего.
error_callback ') , если нагрузка () терпит неудачу. Этот звонок может занять много времени.
Мы повторяем Servable::Load() в соответствии с параметрами, установленными при построении этого класса. Мы прекращаем повторные попытки и сдаемся, если 1. мы достигли max_num_load_retries или 2. если для cancel_load() установлено значение true.
ТРЕБУЕТСЯ: состояние kLoadApproved при вызове. В противном случае DCHECK завершается ошибкой, переходит в состояние kError и вызывает 'options_.error_callback'.
LoadApproved
Status LoadApproved()
Переходы на kLoadApproved.
ТРЕБУЕТСЯ: Состояние kLoadRequested при вызове. В противном случае DCHECK завершается ошибкой, переходит в состояние kError и вызывает 'options_.error_callback'.
LoadRequested
Status LoadRequested()
Переводит состояние жгута в kLoadRequested, если его текущее состояние равно kNew.
Тест-и-изменение делается транзакционно, поэтому этот метод может быть использован для того , чтобы более одной нагрузки () запрос может продолжиться.
LoaderHarness
LoaderHarness( const ServableId & id, std::unique_ptr< Loader > loader, const Options & options )
LoaderHarness
LoaderHarness( const ServableId & id, std::unique_ptr< Loader > loader, std::unique_ptr< T > additional_state, const Options & options )
Конструктор для создания обвязки с дополнительным состоянием, которое нужно менеджеру.
Начать приостановку
Status StartQuiescing()
Переводит состояние в kQuiescing, что означает, что мы хотели бы больше не выдавать дескрипторы этому servable.
ТРЕБУЕТСЯ: Состояние kUnloadRequested при вызове. В противном случае DCHECK завершается ошибкой, переходит в состояние kError и вызывает 'options_.error_callback'.
Разгрузить
Status Unload()
Переходы к kUnloading, делегаты Servable :: Unload (), затем переходит в kDisabled когда Unload () делается.
ТРЕБУЕТСЯ: Состояние kQuiesced при вызове. В противном случае DCHECK завершается ошибкой, переходит в состояние kError и вызывает 'options_.error_callback'.
UnloadRequested
Status UnloadRequested()
Переводит состояние жгута в kUnloadRequested, если его текущее состояние равно kReady.
Тест-и-изменение делается транзакционно, поэтому этот метод может быть использован для того , чтобы более одной нагрузки () запрос может продолжиться.
дополнительное_состояние
T * additional_state()
Получает дополнительное состояние.
Возвращает nullptr, если тип не соответствует или не был установлен.
cancel_load_retry
bool cancel_load_retry()
я бы
ServableId id() const
Возвращает идентификатор базового Servable.
погрузчик
Loader * loader() const
Возвращает указатель на упакованный загрузчик.
Право собственности остается за этим классом.
loader_state_snapshot
ServableStateSnapshot< T > loader_state_snapshot()
Возвращает текущий моментальный снимок общего состояния базового Servable.
loader_state_snapshot
ServableStateSnapshot< std::nullptr_t > loader_state_snapshot() const
set_cancel_load_retry
void set_cancel_load_retry( bool value )
Отменяет повторную попытку загрузки servable.
Это лучше всего усилий, и не выгрузить Load () , которая уже происходит, только последующие вызовы.
Если повторные попытки отменены, servable переходит в состояние в зависимости от последней нагрузки () называется на нем. Если последний Load () был успешным, он будет в состоянии kReady, еще в kError.
статус
Status status()
Что-то пошло не так с этим servable.
Если состояние равно kError, это будет ненормально. Если не в порядке, то ошибка может быть что - то , что произошло в Source или SourceAdapter , в Loader , в менеджере или в другом месте. Здесь сообщается обо всех ошибках, относящихся к обслуживаемому объекту, независимо от их происхождения.
~ LoaderHarness
~LoaderHarness()
Допустимо уничтожение, если текущее состояние является одним из kNew, kDisabled или kError.
Проверка не проходит при нарушении.
Публичные статические функции
StateDebugString
string StateDebugString( State state )