Есть вопрос? Присоединяйтесь к сообществу на форуме TensorFlow. Посетите форум.

Кэширование загрузки моделей из TF Hub

Обзор

Библиотека tensorflow_hub настоящее время поддерживает два режима загрузки моделей. По умолчанию модель загружается в виде сжатого архива и кэшируется на диске. Во-вторых, модели можно напрямую считывать из удаленного хранилища в TensorFlow. В любом случае, вызовы функций tensorflow_hub в реальном коде Python могут и должны продолжать использовать канонические URL-адреса моделей tfhub.dev, которые переносимы между системами и доступны для документации. В редких случаях, когда пользовательскому коду требуется фактическое расположение файловой системы (после загрузки и распаковки или после преобразования дескриптора модели в путь файловой системы), его можно получить с помощью функцииhub.resolve(handle) .

Кеширование сжатых загрузок

Библиотека tensorflow_hub по умолчанию кэширует модели в файловой системе, когда они были загружены с tfhub.dev (или других сайтов хостинга ) и распакованы. Этот режим рекомендуется для большинства сред, за исключением случаев, когда на диске мало места, а пропускная способность сети и время ожидания превосходны.

По умолчанию местом загрузки является локальный временный каталог, но его можно настроить, установив переменную среды TFHUB_CACHE_DIR (рекомендуется) или передав флаг командной строки --tfhub_cache_dir . Местоположение кэша по умолчанию /tmp/tfhub_modules (или что-то os.path.join(tempfile.gettempdir(), "tfhub_modules") что os.path.join(tempfile.gettempdir(), "tfhub_modules") ) должно работать в большинстве случаев.

Пользователи, которые предпочитают постоянное кэширование при перезагрузке системы, могут вместо этого установить TFHUB_CACHE_DIR в место в своем домашнем каталоге. Например, пользователь оболочки bash в системе Linux может добавить следующую строку в ~/.bashrc

export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules

... перезапустите оболочку, и тогда это местоположение будет использовано. При использовании постоянного расположения помните, что автоматическая очистка не производится.

Чтение из удаленного хранилища

Пользователи могут tensorflow_hub библиотеке tensorflow_hub прямое считывание моделей из удаленного хранилища (GCS) вместо загрузки моделей локально с помощью

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

или установив флаг командной строки --tfhub_model_load_format на UNCOMPRESSED . Таким образом, каталог для кеширования не требуется, что особенно полезно в средах с небольшим дисковым пространством, но с быстрым подключением к Интернету.

Запуск на TPU в ноутбуках Colab

На colab.research.google.com загрузка сжатых моделей будет конфликтовать со средой выполнения TPU, поскольку вычислительная рабочая нагрузка делегируется другому компьютеру, который по умолчанию не имеет доступа к расположению кэша. В этой ситуации есть два обходных пути:

1) Используйте ведро GCS, к которому может получить доступ рабочий TPU

Самое простое решение - tensorflow_hub библиотеке tensorflow_hub читать модели из tensorflow_hub GCS TF Hub, как описано выше. Пользователи со своим собственным сегментом GCS могут вместо этого указать каталог в своем сегменте в качестве местоположения кеша с таким кодом, как

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

... перед вызовом библиотеки tensorflow_hub .

2) Перенаправить все чтения через хост Colab

Другой обходной путь - перенаправить все операции чтения (даже больших переменных) через хост Colab:

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