Protocole d'hébergement de modèle

Ce document décrit les conventions d'URL utilisées lors de l'hébergement de tous les types de modèles sur tfhub.dev : modèles TFJS, TF Lite et TensorFlow. Il décrit également le protocole basé sur HTTP(S) implémenté par la bibliothèque tensorflow_hub afin de charger des modèles TensorFlow à partir de tfhub.dev et des services compatibles dans des programmes TensorFlow.

Sa fonctionnalité clé est d'utiliser la même URL dans le code pour charger un modèle et dans un navigateur pour afficher la documentation du modèle.

Conventions générales d'URL

tfhub.dev prend en charge les formats d'URL suivants :

  • Les éditeurs de TF Hub suivent <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>
  • Les collections TF Hub suivent <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/collection/<collection_name>
  • Les modèles TF Hub ont une URL versionnée <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>/<version> et une URL non versionnée <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name> qui correspond à la dernière version du modèle.

Les modèles TF Hub peuvent être téléchargés sous forme d'actifs compressés en ajoutant des paramètres d'URL à l'URL du modèle tfhub.dev . Cependant, les paramètres d'URL requis pour y parvenir dépendent du type de modèle :

  • Modèles TensorFlow (aux formats SavedModel et TF1 Hub) : ajoutez ?tf-hub-format=compressed à l'URL du modèle TensorFlow.
  • Modèles TFJS : ajoutez ?tfjs-format=compressed à l'URL du modèle TFJS pour télécharger le fichier compressé ou /model.json?tfjs-format=file le lire à partir du stockage distant.
  • Modèles TF Lite : ajoutez ?lite-format=tflite à l'URL du modèle TF Lite.

Par exemple:

Taper URL du modèle Type de téléchargement Paramètre d'URL URL de téléchargement
TensorFlow (SavedModel, format TF1 Hub) https://tfhub.dev/google/spice/2 .tar.gz ?tf-hub-format=compressé https://tfhub.dev/google/spice/2?tf-hub-format=compressed
TF Lite https://tfhub.dev/google/lite-model/spice/1 .tflite ?lite-format=tflite https://tfhub.dev/google/lite-model/spice/1?lite-format=tflite
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .tar.gz ?tfjs-format=compressé https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compressed

De plus, certains modèles sont également hébergés dans un format qui peut être lu directement à partir du stockage distant sans être téléchargé. Ceci est particulièrement utile s'il n'y a pas de stockage local disponible, comme l'exécution d'un modèle TF.js dans le navigateur ou le chargement d'un SavedModel sur Colab . Soyez conscient que la lecture de modèles hébergés à distance sans être téléchargés localement peut augmenter la latence.

Taper URL du modèle Type de réponse Paramètre d'URL URL de la demande
TensorFlow (SavedModel, format TF1 Hub) https://tfhub.dev/google/spice/2 Chaîne (Chemin d'accès au dossier GCS où le modèle non compressé est stocké) ?tf-hub-format=non compressé https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .json ?tfjs-format=fichier https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file

protocole de bibliothèque tensorflow_hub

Cette section décrit comment nous hébergeons des modèles sur tfhub.dev pour les utiliser avec la bibliothèque tensorflow_hub. Si vous souhaitez héberger votre propre référentiel de modèles pour travailler avec la bibliothèque tensorflow_hub, votre service de distribution HTTP(s) doit fournir une implémentation de ce protocole.

Notez que cette section ne traite pas de l'hébergement des modèles TF Lite et TFJS puisqu'ils ne sont pas téléchargés via la bibliothèque tensorflow_hub . Pour plus d'informations sur l'hébergement de ces types de modèles, veuillez vérifier ci-dessus .

Hébergement compressé

Les modèles sont stockés sur tfhub.dev sous forme de fichiers tar.gz compressés. Par défaut, la bibliothèque tensorflow_hub télécharge automatiquement le modèle compressé. Ils peuvent également être téléchargés manuellement en ajoutant le ?tf-hub-format=compressed à l'URL du modèle, par exemple :

wget https://tfhub.dev/tensorflow/albert_en_xxlarge/1?tf-hub-format=compressed

La racine de l'archive est la racine du répertoire model et doit contenir un SavedModel, comme dans cet exemple :

# Create a compressed model from a SavedModel directory.
$ tar -cz -f model.tar.gz --owner=0 --group=0 -C /tmp/export-model/ .

# Inspect files inside a compressed model
$ tar -tf model.tar.gz
./
./variables/
./variables/variables.data-00000-of-00001
./variables/variables.index
./assets/
./saved_model.pb

Les archives tar à utiliser avec l’ancien format TF1 Hub contiendront également un fichier ./tfhub_module.pb .

Lorsque l'une des API de chargement de modèle de bibliothèque tensorflow_hub est invoquée ( hub.KerasLayer , hub.load , etc.), la bibliothèque télécharge le modèle, décompresse le modèle et le met en cache localement. La bibliothèque tensorflow_hub s'attend à ce que les URL de modèle soient versionnées et que le contenu du modèle d'une version donnée soit immuable, afin qu'il puisse être mis en cache indéfiniment. En savoir plus sur les modèles de mise en cache .

Hébergement non compressé

Lorsque la variable d'environnement TFHUB_MODEL_LOAD_FORMAT ou l'indicateur de ligne de commande --tfhub_model_load_format est défini sur UNCOMPRESSED , le modèle est lu directement à partir du stockage distant (GCS) au lieu d'être téléchargé et décompressé localement. Lorsque ce comportement est activé, la bibliothèque ajoute ?tf-hub-format=uncompressed à l'URL du modèle. Cette requête renvoie le chemin d'accès au dossier sur GCS qui contient les fichiers de modèle non compressés. A titre d'exemple,
<a href="https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed">https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed</a>
retours
gs://tfhub-modules/google/spice/2/uncompressed dans le corps de la réponse 303. La bibliothèque lit ensuite le modèle à partir de cette destination GCS.