Protocolo de hospedagem do modelo

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

Sua principal característica é usar a mesma URL no código para carregar um modelo e no navegador para visualizar a documentação do modelo.

Convenções gerais de URL

O tfhub.dev suporta os seguintes formatos de URL:

  • Os editores do TF Hub podem ser acessados ​​em https://tfhub.dev/<publisher>
  • As coleções do TF Hub podem ser acessadas https://tfhub.dev/<publisher>/collection/<collection_name>
  • Os modelos do TF Hub possuem URLs versionadas: https://tfhub.dev/<publisher>/<model_name>/<version> e URLs não versionadas: https://tfhub.dev/<publisher>/<model_name> , que direcionam para a versão mais recente do modelo.

Os modelos do TF Hub podem ser baixados como arquivos compactados adicionando parâmetros à URL do modelo em tfhub.dev . No entanto, os parâmetros de URL necessários para isso dependem do tipo de modelo:

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

Por exemplo:

Tipo URL do modelo Tipo de download Parâmetro de URL URL para download
TensorFlow (Modelo Salvo, 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-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=comprimido https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compressed

Além disso, alguns modelos também são hospedados em um formato que pode ser lido diretamente do armazenamento remoto sem precisar ser baixado. Isso é especialmente útil quando não há armazenamento local disponível, como ao executar um modelo TF.js no navegador ou carregar um SavedModel no Colab . Lembre-se de que ler modelos hospedados remotamente sem baixá-los localmente pode aumentar a latência.

Tipo URL do modelo Tipo de resposta Parâmetro de URL URL de solicitação
TensorFlow (Modelo Salvo, formato TF1 Hub) https://tfhub.dev/google/spice/2 String (Caminho para a pasta GCS onde o modelo descompactado está armazenado) ?tf-hub-format=uncompressed 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 no tfhub.dev para uso com a biblioteca tensorflow_hub. Se você deseja hospedar seu próprio repositório de modelos 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, visto que eles não são baixados pela biblioteca tensorflow_hub . Para obter mais informações sobre como hospedar esses tipos de modelo, consulte as informações acima .

Hospedagem compactada

Os modelos são armazenados no 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 adicionando o parâmetro ?tf-hub-format=compressed à 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 arquivo 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

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

Quando uma das APIs de carregamento de modelos da biblioteca tensorflow_hub é invocada ( hub.KerasLayer , hub.load , etc.), a biblioteca baixa o modelo, descompacta-o e o armazena em cache localmente. A biblioteca tensorflow_hub espera que os URLs dos modelos 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 o armazenamento em cache de modelos .

Hospedagem sem compressão

Quando a variável de ambiente TFHUB_MODEL_LOAD_FORMAT ou o parâmetro 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 está habilitado, a biblioteca adiciona ?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 descompactados. Por exemplo,
https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
retornos
gs://kaggle-tfhub-models-uncompressed/tfhub-modules/google/spice/2/uncompressed no corpo da resposta 303. A biblioteca então lê o modelo desse destino do GCS.