tensorflow :: servindo :: Fonte
Esta é uma classe abstrata.#include <source.h>
Uma abstração para um módulo que origina servables para carregar ou, mais precisamente, lida com dados que podem ser usados para carregar esses servables.
Resumo
Exemplos de tais identificadores de dados são:
- um caminho do sistema de arquivos para um mapa de vocabulário serializado
- um identificador para um RPC de entrada que especifica um modelo aprendido por máquina para carregar
- um carregador (ver loader.h ) As alças de dados são geralmente aceite que é pequena.
A Fonte monitora algum recurso externo (por exemplo, sistema de arquivos, chamadas RPC) para saber mais sobre novas servables e / ou novas versões do servables e / ou a necessidade de descarregar versões veiculáveis. Ele usa a chamada de retorno fornecido para instruir um módulo de destino (por exemplo AspiredVersionsManager ) que versão (s) de um dado que podem ser veiculados para carga. Além disso, dependendo da semântica do módulo de destino, a Fonte instrui implicitamente que aqueles para descarregar omitindo aquelas servables.
Um caso comum é que a Fonte emite versões para exatamente um que possa ser veiculado. Um caso ainda mais simples é que um serviço tem uma versão única e estática para o tempo de vida do servidor.
As fontes podem abrigar o estado que é compartilhado entre vários servables emitidos, por exemplo
- Um pool de threads compartilhados ou outro recurso usado por vários servables.
- Uma estrutura de dados somente leitura compartilhada que vários servables usam, para evitar a sobrecarga de tempo e espaço de replicação da estrutura de dados em cada instância servable. O estado compartilhado cujo tempo de inicialização e tamanho é insignificante (por exemplo, pools de thread) pode ser criado avidamente pela fonte, que então incorpora um ponteiro para ele em cada item ServableData emitido. Criação de estado compartilhado caro ou grande deve ser adiada para o primeiro aplicável carregador :: Load () chamada, ou seja regido pelo gerente. Simetricamente, o carregador :: Unload () chamada para o que possa ser veiculado final usando o caro / grande estado compartilhado deve derrubá-lo.
Construtores e Destruidores | |
---|---|
~Source () |
Tipos públicos | |
---|---|
AspiredVersionsCallback | usandostd::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)> Uma chamada de retorno para uma fonte para a versão de alimentação (s) de um que possa ser veiculado para um alvo, para ser carregado. |
Funções públicas | |
---|---|
SetAspiredVersionsCallback ( AspiredVersionsCallback callback)=0 | virtual void Fornece um AspiredVersionsCallback para usar. Pode ser chamado no máximo uma vez. |
Tipos públicos
AspiredVersionsCallback
std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)> AspiredVersionsCallback
Uma chamada de retorno para uma fonte para a versão de alimentação (s) de um que possa ser veiculado para um alvo, para ser carregado.
Uma única chamada de retorno de chamada pertence a um único fluxo de serviço (fornecido por 'servable_name'). Todas as versões fornecidas em uma chamada devem ser para o servable identificado em 'servable_name'. As invocações em diferentes fluxos de serviço são ortogonais entre si.
Múltiplas invocações podem fornecer objetos de dados de serviço com ids idênticos (ou seja, mesmo nome e versão de serviço). Esses objetos de dados servíveis são tratados como semanticamente equivalentes. O destinatário acabará por reter um e descartar o resto.
Se uma versão servível V for fornecida em uma primeira chamada e, subsequentemente, omitida em uma segunda chamada, a implicação de omitir V depende da semântica do Destino do retorno de chamada. Certos alvos interpretarão a omissão de V como uma instrução implícita para descarregar V. Cada alvo deve documentar sua semântica a esse respeito.
Funções públicas
SetAspiredVersionsCallback
virtual void SetAspiredVersionsCallback( AspiredVersionsCallback callback )=0
Fornece um AspiredVersionsCallback para usar. Pode ser chamado no máximo uma vez.
~ Fonte
virtual ~Source()=default