тензорный поток :: сервировка :: Источник
Это абстрактный класс.#include <source.h>
Абстракция для модуля, который создает обслуживаемые объекты для загрузки или, точнее, обрабатывает данные, которые можно использовать для загрузки этих обслуживаемых объектов.
Резюме
Примеры таких дескрипторов данных:
- путь файловой системы к сериализованной карте словаря
- дескриптор входящего RPC, который указывает машинно-обученную модель для загрузки
- погрузчик (см loader.h ) Ручки данных , как правило , предполагается малым.
Источник контролирует некоторый внешний ресурс (например , файловой системы, RPC вызовов) , чтобы узнать о новых servables и / или новые версии servables и / или необходимости выгрузить servable версии. Она использует функцию обратного вызова , чтобы инструктировать модуль Target (например AspiredVersionsManager ) , какая версия (ы) данного servable к нагрузке. Кроме того, в зависимости от семантики модуля Target, то источник неявно предписывает , что , какие из них , чтобы разгрузить опуская тот servables.
Общий случай является то , что источник излучает версию ровно один servable. Еще более простой случай состоит в том, что обслуживаемый объект имеет единственную статическую версию на время существования сервера.
Источники могут содержать состояние, которое совместно используется несколькими отправляемыми серверами, например
- Общий пул потоков или другой ресурс, который используют несколько обслуживаемых объектов.
- Совместно используемая структура данных только для чтения, которую используют несколько обслуживаемых объектов, чтобы избежать накладных расходов времени и пространства на репликацию структуры данных в каждом обслуживаемом экземпляре. Общее состояние, время инициализации и размер которого незначительны (например, пулы потоков), может быть быстро создано источником, который затем встраивает указатель на него в каждый испускаемый элемент 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