Cache de downloads de modelos do TF Hub

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Visão geral

A biblioteca tensorflow_hub atualmente suporta dois modos para baixar modelos. Por padrão, um modelo é baixado como um arquivo compactado e armazenado em cache no disco. Em segundo lugar, os modelos podem ser lidos diretamente do armazenamento remoto no TensorFlow. De qualquer forma, as chamadas para funções tensorflow_hub no código Python real podem e devem continuar a usar os URLs canônicos tfhub.dev de modelos, que são portáveis ​​entre sistemas e navegável para documentação. No caso raro de o código do usuário precisar da localização real do sistema de arquivos (após baixar e descompactar, ou depois de resolver um identificador de modelo em um caminho do sistema de arquivos), ele pode ser obtido pela função hub.resolve(handle) .

Cache de downloads compactados

A biblioteca tensorflow_hub , por padrão, armazena em cache os modelos no sistema de arquivos quando eles foram baixados de tfhub.dev (ou outros sites de hospedagem ) e descompactados. Esse modo é recomendado para a maioria dos ambientes, exceto se o espaço em disco for escasso, mas a largura de banda e a latência da rede forem excelentes.

O local de download é padronizado para um diretório temporário local, mas pode ser personalizado definindo a variável de ambiente TFHUB_CACHE_DIR (recomendado) ou passando o sinalizador de linha de comando --tfhub_cache_dir . O local de cache padrão /tmp/tfhub_modules (ou qualquer que os.path.join(tempfile.gettempdir(), "tfhub_modules") seja avaliado) deve funcionar na maioria dos casos.

Os usuários que preferem o cache persistente nas reinicializações do sistema podem definir TFHUB_CACHE_DIR para um local em seu diretório inicial. Por exemplo, um usuário do shell bash em um sistema Linux pode adicionar uma linha como a seguinte a ~/.bashrc

export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules

... reinicie o shell, e então este local será usado. Ao usar um local persistente, esteja ciente de que não há limpeza automática.

Lendo do armazenamento remoto

Os usuários podem instruir a biblioteca tensorflow_hub a ler diretamente os modelos do armazenamento remoto (GCS) em vez de baixar os modelos localmente com

os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"

ou definindo o sinalizador de linha de comando --tfhub_model_load_format como UNCOMPRESSED . Dessa forma, nenhum diretório de cache é necessário, o que é especialmente útil em ambientes que fornecem pouco espaço em disco, mas uma conexão rápida com a Internet.

Executando em TPU em notebooks Colab

Em colab.research.google.com , o download de modelos compactados entrará em conflito com o tempo de execução da TPU, pois a carga de trabalho de computação é delegada a outra máquina que não tem acesso ao local do cache por padrão. Existem duas soluções alternativas para esta situação:

1) Use um bucket do GCS que o trabalhador da TPU possa acessar

A solução mais fácil é instruir a biblioteca tensorflow_hub a ler os modelos do bucket GCS do TF Hub conforme explicado acima. Os usuários com seu próprio bucket do GCS podem especificar um diretório em seu bucket como o local do cache com um código como

import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"

...antes de chamar a biblioteca tensorflow_hub .

2) Redirecione todas as leituras através do host do Colab

Outra solução é redirecionar todas as leituras (mesmo de variáveis ​​grandes) pelo host do Colab:

load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)