Unisciti alla community di SIG TFX-Addons e aiutaci a rendere TFX ancora migliore! Iscriviti a SIG TFX-Addons

tensorflow :: servendo:: fonte

Questa è una classe astratta.

#include <source.h>

Un'astrazione per un modulo che origina i servable da caricare o, più precisamente, gestisce i dati che possono essere utilizzati per caricare quei servable.

Sommario

Esempi di tali trattamenti di dati sono:

  • un percorso del file system a una mappa del vocabolario serializzata
  • un handle a un RPC in arrivo che specifica un modello appreso dalla macchina da caricare
  • a Loader (vedere loader.h ) Gli handle di dati sono generalmente considerati piccoli.

Una sorgente controlla alcune risorse esterne (ad esempio file system, chiamate RPC) per scoprire nuovi servable e / o nuove versioni di servable e / o la necessità di scaricare versioni servable. Utilizza il callback fornito per indicare a un modulo Target (ad esempio AspiredVersionsManager ) quale versione (i) di un dato servable caricare. Inoltre, a seconda della semantica del modulo Target, il Source indica implicitamente quali scaricare omettendo quei servables.

Un caso comune è che una sorgente emette versioni per esattamente un servibile. Un caso ancora più semplice è che un servable ha un'unica versione statica per la durata del server.

Le sorgenti possono ospitare stati condivisi tra più servables emessi, ad es

  1. Un pool di thread condiviso o un'altra risorsa utilizzata da più servable.
  2. Una struttura dati condivisa di sola lettura utilizzata da più servable, per evitare il sovraccarico di tempo e spazio della replica della struttura dati in ogni istanza servibile. Lo stato condiviso il cui tempo e dimensione di inizializzazione è trascurabile (ad esempio pool di thread) può essere creato con entusiasmo dall'origine, che quindi incorpora un puntatore ad esso in ogni elemento ServableData emesso. La creazione di uno stato condiviso costoso o di grandi dimensioni dovrebbe essere rimandata alla prima chiamata Loader :: Load () applicabile, cioè governata dal gestore. Simmetricamente, la chiamata Loader :: Unload () al servable finale utilizzando lo stato condiviso costoso / grande dovrebbe eliminarlo.

Costruttori e distruttori

~Source ()

Tipi pubblici

AspiredVersionsCallback utilizzando
std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)>
Un callback per un Source per fornire le versioni di un servable a un Target, da caricare.

Funzioni pubbliche

SetAspiredVersionsCallback ( AspiredVersionsCallback callback)=0
virtual void
Fornisce un AspiredVersionsCallback da usare. Può essere chiamato al massimo una volta.

Tipi pubblici

AspiredVersionsCallback

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

Un callback per un Source per fornire versioni di un servable a un Target, da caricare.

Una singola chiamata della richiamata riguarda un singolo flusso servibile (fornito da 'servable_name'). Tutte le versioni fornite in una chiamata devono essere per il servable identificato in "servable_name". Le chiamate su diversi flussi servibili sono ortogonali l'una all'altra.

Più invocazioni possono fornire oggetti di dati servibili con ID identici (cioè stesso nome e versione servibili). Tali oggetti servable-data sono trattati come semanticamente equivalenti. Il destinatario alla fine ne manterrà uno e scarterà il resto.

Se una versione servibile V viene fornita in una prima chiamata e successivamente omessa da una seconda chiamata, l'implicazione dell'omissione di V dipende dalla semantica della destinazione della richiamata. Alcuni Target interpreteranno l'omissione di V come un'istruzione implicita per scaricare V. Ciascun Target deve documentare la propria semantica a questo proposito.

Funzioni pubbliche

SetAspiredVersionsCallback

virtual void SetAspiredVersionsCallback(
  AspiredVersionsCallback callback
)=0

Fornisce un AspiredVersionsCallback da usare. Può essere chiamato al massimo una volta.

~ Fonte

virtual  ~Source()=default