Protocolo de hospedaje de modelos

Este documento describe las convenciones de URL utilizadas al alojar todos los tipos de modelos en tfhub.dev : modelos TFJS, TF Lite y TensorFlow. También describe el protocolo basado en HTTP(S) implementado por la biblioteca tensorflow_hub para cargar modelos de TensorFlow desde tfhub.dev y servicios compatibles en programas de TensorFlow.

Su característica clave es usar la misma URL en el código para cargar un modelo y en un navegador para ver la documentación del modelo.

Convenciones generales de URL

tfhub.dev admite los siguientes formatos de URL:

  • Los editores de TF Hub siguen <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>
  • Las colecciones de TF Hub siguen <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/collection/<collection_name>
  • Los modelos TF Hub tienen la URL versionada <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>/<version> y la URL no versionada <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name> que resuelve la última versión del modelo.

Los modelos de TF Hub se pueden descargar como activos comprimidos agregando parámetros de URL a la URL del modelo tfhub.dev . Sin embargo, los parámetros de URL necesarios para lograrlo dependen del tipo de modelo:

  • Modelos de TensorFlow (formatos SavedModel y TF1 Hub): agregue ?tf-hub-format=compressed a la URL del modelo de TensorFlow.
  • Modelos TFJS: agregue ?tfjs-format=compressed a la URL del modelo TFJS para descargar el archivo comprimido o /model.json?tfjs-format=file leerlo desde el almacenamiento remoto.
  • Modelos TF Lite: agregue ?lite-format=tflite a la URL del modelo TF Lite.

Por ejemplo:

Tipo URL del modelo Tipo de descarga parámetro de URL Descargar URL
TensorFlow (modelo guardado, formato TF1 Hub) https://tfhub.dev/google/spice/2 .tar.gz ?tf-hub-format=comprimido https://tfhub.dev/google/spice/2?tf-hub-format=compressed
TF Lite https://tfhub.dev/google/lite-model/spice/1 .tflite ?lite-formato=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-formato=comprimido https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compressed

Además, algunos modelos también están alojados en un formato que se puede leer directamente desde el almacenamiento remoto sin necesidad de descargarlos. Esto es especialmente útil si no hay almacenamiento local disponible, como ejecutar un modelo TF.js en el navegador o cargar un SavedModel en Colab . Tenga en cuenta que leer modelos alojados de forma remota sin descargarlos localmente puede aumentar la latencia.

Tipo URL del modelo Tipo de respuesta parámetro de URL Solicitar URL
TensorFlow (modelo guardado, formato TF1 Hub) https://tfhub.dev/google/spice/2 Cadena (Ruta a la carpeta GCS donde se almacena el modelo sin comprimir) ?tf-hub-format=sin comprimir https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .json ?tfjs-formato=archivo https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file

protocolo de biblioteca tensorflow_hub

Esta sección describe cómo alojamos modelos en tfhub.dev para usarlos con la biblioteca tensorflow_hub. Si desea alojar su propio repositorio de modelos para trabajar con la biblioteca tensorflow_hub, su servicio de distribución HTTP debe proporcionar una implementación de este protocolo.

Tenga en cuenta que esta sección no aborda el alojamiento de los modelos TF Lite y TFJS, ya que no se descargan a través de la biblioteca tensorflow_hub . Para obtener más información sobre cómo alojar estos tipos de modelos, consulte arriba .

Alojamiento comprimido

Los modelos se almacenan en tfhub.dev como archivos comprimidos tar.gz. De forma predeterminada, la biblioteca tensorflow_hub descarga automáticamente el modelo comprimido. También se pueden descargar manualmente agregando ?tf-hub-format=compressed a la URL del modelo, por ejemplo:

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

La raíz del archivo es la raíz del directorio del modelo y debe contener un SavedModel, como en este ejemplo:

# 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

Los archivos tar para usar con el formato TF1 Hub heredado también contendrán un archivo ./tfhub_module.pb .

Cuando se invoca una de las API de carga de modelos de la biblioteca tensorflow_hub ( hub.KerasLayer , hub.load , etc.), la biblioteca descarga el modelo, lo descomprime y lo almacena en caché localmente. La biblioteca tensorflow_hub espera que las URL del modelo tengan versiones y que el contenido del modelo de una versión determinada sea inmutable, de modo que pueda almacenarse en caché indefinidamente. Obtenga más información sobre los modelos de almacenamiento en caché .

Alojamiento sin comprimir

Cuando la variable de entorno TFHUB_MODEL_LOAD_FORMAT o el indicador de línea de comandos --tfhub_model_load_format se establece en UNCOMPRESSED , el modelo se lee directamente desde el almacenamiento remoto (GCS) en lugar de descargarlo y descomprimirlo localmente. Cuando este comportamiento está habilitado, la biblioteca agrega ?tf-hub-format=uncompressed a la URL del modelo. Esa solicitud devuelve la ruta a la carpeta en GCS que contiene los archivos del modelo sin comprimir. Como ejemplo,
<a href="https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed">https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed</a>
regresa
gs://tfhub-modules/google/spice/2/uncompressed en el cuerpo de la respuesta 303. Luego, la biblioteca lee el modelo desde ese destino GCS.