tensorflow :: portion:: La source

Il s'agit d'une classe abstraite.

#include <source.h>

Une abstraction pour un module qui source les servables à charger, ou, plus précisément, gère les données qui peuvent être utilisées pour charger ces servables.

Résumé

Voici des exemples de ces descripteurs de données :

  • un chemin du système de fichiers vers une carte de vocabulaire sérialisée
  • un handle vers un RPC entrant qui spécifie un modèle appris par machine à charger
  • un chargeur (voir loader.h ) Les poignées de données sont généralement considérés comme étant faible.

Une source surveille une ressource externe (par exemple , du système de fichiers, les appels RPC) pour en savoir plus sur les nouveaux servables et / ou de nouvelles versions de servables et / ou la nécessité de décharger les versions diffusables. Elle utilise la fonction de rappel prévu pour charger un module cible (par exemple AspiredVersionsManager ) quelle version (s) d'une charge pouvant être diffusés donné. En outre, selon la sémantique du module cible, la source indique implicitement ceux qui Décharger en omettant ces servables.

Un cas courant est qu'une source émet des versions pour exactement un diffusable. Un cas encore plus simple est qu'un serveur a une seule version statique pour la durée de vie du serveur.

Les sources peuvent héberger un état partagé entre plusieurs servables émis, par exemple

  1. Un pool de threads partagé ou une autre ressource utilisée par plusieurs servables.
  2. Une structure de données partagée en lecture seule que plusieurs servables utilisent, pour éviter la surcharge de temps et d'espace liée à la réplication de la structure de données dans chaque instance servable. L'état partagé dont le temps d'initialisation et la taille sont négligeables (par exemple les pools de threads) peut être créé avec empressement par la source, qui intègre ensuite un pointeur vers celui-ci dans chaque élément ServableData émis. Création d' un état partagé coûteux ou grand devrait être reporté au premier applicable Loader :: Load () appel, soit régi par le gestionnaire. Symétriquement, le chargeur :: Unload () appel à la diffusable finale à l' aide de l'état coûteux / grand mutualisées déchirer vers le bas.

Constructeurs et destructeurs

~Source ()

Types publics

AspiredVersionsCallback utilisant
std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)>
Un rappel pour une source à la version de l' offre (s) d'un diffusable à une cible, à charger.

Fonctions publiques

SetAspiredVersionsCallback ( AspiredVersionsCallback callback)=0
virtual void
Fournit un AspiredVersionsCallback à utiliser. Peut être appelé au plus une fois.

Types publics

AspiredVersionsRappel

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

Un rappel pour une source à la version de l' offre (s) d'un diffusable à une cible, à charger.

Une seule invocation du rappel concerne un seul flux servable (donné par 'servable_name'). Toutes les versions fournies dans un appel doivent être pour le serveur identifié dans 'servable_name'. Les invocations sur différents flux utilisables sont orthogonales les unes aux autres.

Des invocations multiples peuvent fournir des objets de données utilisables avec des identifiants identiques (c'est-à-dire le même nom et la même version utilisables). De tels objets de données utilisables sont traités comme sémantiquement équivalents. Le destinataire en conservera finalement un et rejettera le reste.

Si une version utilisable V est fournie dans une première invocation, puis omise d'une seconde invocation, l'implication de l'omission de V dépend de la sémantique de la cible du rappel. Certaines cibles interpréteront l'omission de V comme une instruction implicite de décharger V. Chaque cible doit documenter sa sémantique à cet égard.

Fonctions publiques

SetAspiredVersionsCallback

virtual void SetAspiredVersionsCallback(
  AspiredVersionsCallback callback
)=0

Fournit un AspiredVersionsCallback à utiliser. Peut être appelé au plus une fois.

~Source

virtual  ~Source()=default