тензорный поток :: сервировка :: Источник

Это абстрактный класс.

#include <source.h>

Абстракция для модуля, который создает обслуживаемые объекты для загрузки или, точнее, обрабатывает данные, которые можно использовать для загрузки этих обслуживаемых объектов.

Резюме

Примеры таких дескрипторов данных:

  • путь файловой системы к сериализованной карте словаря
  • дескриптор входящего RPC, который указывает машинно-обученную модель для загрузки
  • погрузчик (см loader.h ) Ручки данных , как правило , предполагается малым.

Источник контролирует некоторый внешний ресурс (например , файловой системы, RPC вызовов) , чтобы узнать о новых servables и / или новые версии servables и / или необходимости выгрузить servable версии. Она использует функцию обратного вызова , чтобы инструктировать модуль Target (например AspiredVersionsManager ) , какая версия (ы) данного servable к нагрузке. Кроме того, в зависимости от семантики модуля Target, то источник неявно предписывает , что , какие из них , чтобы разгрузить опуская тот servables.

Общий случай является то , что источник излучает версию ровно один servable. Еще более простой случай состоит в том, что обслуживаемый объект имеет единственную статическую версию на время существования сервера.

Источники могут содержать состояние, которое совместно используется несколькими отправляемыми серверами, например

  1. Общий пул потоков или другой ресурс, который используют несколько обслуживаемых объектов.
  2. Совместно используемая структура данных только для чтения, которую используют несколько обслуживаемых объектов, чтобы избежать накладных расходов времени и пространства на репликацию структуры данных в каждом обслуживаемом экземпляре. Общее состояние, время инициализации и размер которого незначительны (например, пулы потоков), может быть быстро создано источником, который затем встраивает указатель на него в каждый испускаемый элемент ServableData. Создание дорогого или большого общее состояние должно быть отложено до первого применимого Loader :: Load () вызова, т.е. управляется менеджером. Симметрично, то Loader :: Unload () вызов к конечному servable с использованием дорогой / большой общегосударственных должны снести его.

Конструкторы и деструкторы

~Source ()

Публичные типы

AspiredVersionsCallback с использованием
std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)>
Обратный вызов для источника до версии питания (ов) в servable к мишени, чтобы быть загружен.

Публичные функции

SetAspiredVersionsCallback ( AspiredVersionsCallback callback)=0
virtual void
Предоставляет AspiredVersionsCallback для использования. Может быть вызван не более одного раза.

Публичные типы

AspiredVersionsCallback

std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)> AspiredVersionsCallback

Обратный вызов для источника до версии питания (ов) в servable к мишени, чтобы быть загружен.

Один вызов обратного вызова относится к одному обслуживаемому потоку (заданному параметром servable_name). Все версии, указанные в вызове, должны быть для обслуживаемого объекта, указанного в 'servable_name'. Вызовы разных обслуживаемых потоков ортогональны друг другу.

Множественные вызовы могут предоставлять объекты обслуживаемых данных с одинаковыми идентификаторами (то есть с одинаковым именем и версией обслуживаемых данных). Такие объекты обслуживаемых данных рассматриваются как семантически эквивалентные. В конечном итоге получатель сохранит один и выбросит остальные.

Если обслуживаемая версия V предоставляется при первом вызове, а затем опускается при втором вызове, последствия исключения V зависят от семантики Target обратного вызова. Определенные цели будут интерпретировать пропуск V как неявную инструкцию по выгрузке V. Каждая цель должна задокументировать свою семантику в этом отношении.

Публичные функции

SetAspiredVersionsCallback

virtual void SetAspiredVersionsCallback(
  AspiredVersionsCallback callback
)=0

Предоставляет AspiredVersionsCallback для использования. Может быть вызван не более одного раза.

~ Источник

virtual  ~Source()=default