Protocolo de hospedagem do modelo

Este documento descreve as convenções de URL usadas ao hospedar todos os tipos de modelo em tfhub.dev - modelos TFJS, TF Lite e TensorFlow. Ele também descreve o protocolo baseado em HTTP(S) implementado pela biblioteca tensorflow_hub para carregar modelos TensorFlow de tfhub.dev e serviços compatíveis em programas TensorFlow.

Seu principal recurso é usar a mesma URL no código para carregar um modelo e em um navegador para visualizar a documentação do modelo.

Convenções gerais de URL

tfhub.dev oferece suporte aos seguintes formatos de URL:

  • Os editores do TF Hub seguem <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>
  • As coleções do TF Hub seguem <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/collection/<collection_name>
  • Os modelos do TF Hub têm url versionado <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>/<version> e url não versionado <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name> que resolve para a versão mais recente do modelo.

Os modelos TF Hub podem ser baixados como ativos compactados anexando parâmetros de URL ao URL do modelo tfhub.dev . No entanto, os parâmetros de URL necessários para conseguir isso dependem do tipo de modelo:

  • Modelos TensorFlow (formatos SavedModel e TF1 Hub): anexe ?tf-hub-format=compressed ao URL do modelo TensorFlow.
  • Modelos TFJS: anexe ?tfjs-format=compressed ao URL do modelo TFJS para baixar o arquivo compactado ou /model.json?tfjs-format=file para lê-lo do armazenamento remoto.
  • Modelos TF Lite: anexe ?lite-format=tflite ao URL do modelo TF Lite.

Por exemplo:

Tipo URL do modelo Tipo de download Parâmetro de URL Baixar URL
TensorFlow (SavedModel, formato TF1 Hub) https://tfhub.dev/google/spice/2 .tar.gz ?tf-hub-format = compactado https://tfhub.dev/google/spice/2?tf-hub-format=comprimido
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 = compactado https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=comprimido

Além disso, alguns modelos também são hospedados em um formato que pode ser lido diretamente do armazenamento remoto sem ser baixado. Isso é especialmente útil se não houver armazenamento local disponível, como executar um modelo TF.js no navegador ou carregar um SavedModel no Colab . Esteja ciente de que a leitura de modelos hospedados remotamente sem serem baixados localmente pode aumentar a latência.

Tipo URL do modelo Tipo de resposta Parâmetro de URL Solicitar URL
TensorFlow (SavedModel, formato TF1 Hub) https://tfhub.dev/google/spice/2 String (Caminho para a pasta GCS onde o modelo descompactado está armazenado) ?tf-hub-format=descompactado 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=arquivo https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file

Protocolo da biblioteca tensorflow_hub

Esta seção descreve como hospedamos modelos em tfhub.dev para uso com a biblioteca tensorflow_hub. Se você deseja hospedar seu próprio repositório de modelo para trabalhar com a biblioteca tensorflow_hub, seu serviço de distribuição HTTP(s) deve fornecer uma implementação deste protocolo.

Observe que esta seção não aborda a hospedagem de modelos TF Lite e TFJS, pois eles não são baixados por meio da biblioteca tensorflow_hub . Para obter mais informações sobre como hospedar esses tipos de modelo, verifique acima .

Hospedagem Comprimida

Os modelos são armazenados em tfhub.dev como arquivos tar.gz compactados. Por padrão, a biblioteca tensorflow_hub baixa automaticamente o modelo compactado. Eles também podem ser baixados manualmente anexando ?tf-hub-format=compressed ao URL do modelo, por exemplo:

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

A raiz do arquivo é a raiz do diretório do modelo e deve conter um SavedModel, como neste exemplo:

# 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

Tarballs para uso com o formato legado do TF1 Hub também conterão um arquivo ./tfhub_module.pb .

Quando uma das APIs de carregamento do modelo da biblioteca tensorflow_hub é invocada ( hub.KerasLayer , hub.load , etc), a biblioteca baixa o modelo, descompacta o modelo e o armazena em cache localmente. A biblioteca tensorflow_hub espera que os URLs do modelo sejam versionados e que o conteúdo do modelo de uma determinada versão seja imutável, para que possa ser armazenado em cache indefinidamente. Saiba mais sobre modelos de cache .

Hospedagem descompactada

Quando a variável de ambiente TFHUB_MODEL_LOAD_FORMAT ou o sinalizador de linha de comando --tfhub_model_load_format é definido como UNCOMPRESSED , o modelo é lido diretamente do armazenamento remoto (GCS) em vez de ser baixado e descompactado localmente. Quando esse comportamento é habilitado, a biblioteca anexa ?tf-hub-format=uncompressed à URL do modelo. Essa solicitação retorna o caminho para a pasta no GCS que contém os arquivos do modelo descompactado. Como um exemplo,
<a href="https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed">https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed</a>
retorna
gs://tfhub-modules/google/spice/2/uncompressed no corpo da resposta 303. A biblioteca então lê o modelo desse destino GCS.