Протокол хостинга модели

В этом документе описываются соглашения URL-адресов, используемые при размещении всех типов моделей на tfhub.dev — моделей TFJS, TF Lite и TensorFlow. Он также описывает протокол на основе HTTP(S), реализованный библиотекой tensorflow_hub для загрузки моделей TensorFlow из tfhub.dev и совместимых сервисов в программы TensorFlow.

Его ключевой особенностью является использование одного и того же URL-адреса в коде для загрузки модели и в браузере для просмотра документации модели.

Общие соглашения об URL-адресах

tfhub.dev поддерживает следующие форматы URL:

  • Издатели TF Hub подписываются на <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>
  • Коллекции TF Hub следуют за <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/collection/<collection_name>
  • Модели TF Hub имеют версионный URL <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>/<version> и неверсионный URL <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name> который соответствует последней версии модели.

Модели TF Hub можно загрузить в виде сжатых ресурсов, добавив параметры URL-адреса к URL-адресу модели tfhub.dev . Однако параметры URL, необходимые для этого, зависят от типа модели:

  • Модели TensorFlow (форматы SavedModel и TF1 Hub): добавьте ?tf-hub-format=compressed к URL-адресу модели TensorFlow.
  • Модели TFJS: добавьте ?tfjs-format=compressed к URL-адресу модели TFJS, чтобы загрузить сжатый файл или /model.json?tfjs-format=file для чтения из удаленного хранилища.
  • Модели TF Lite: добавьте ?lite-format=tflite к URL-адресу модели TF Lite.

Например:

Тип URL-адрес модели Тип загрузки URL-параметр URL-адрес загрузки
TensorFlow (SavedModel, формат TF1 Hub) https://tfhub.dev/google/spice/2 .tar.gz ?tf-hub-format=сжатый https://tfhub.dev/google/spice/2?tf-hub-format=compressed
ТФ Лайт 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=сжатый https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compressed

Кроме того, некоторые модели также хранятся в формате, который можно прочитать непосредственно из удаленного хранилища без загрузки. Это особенно полезно, если нет доступного локального хранилища, например, при запуске модели TF.js в браузере или загрузке SavedModel в Colab . Помните, что чтение моделей, размещенных удаленно без локальной загрузки, может увеличить задержку.

Тип URL-адрес модели Тип ответа URL-параметр URL-адрес запроса
TensorFlow (SavedModel, формат TF1 Hub) https://tfhub.dev/google/spice/2 Строка (Путь к папке GCS, в которой хранится несжатая модель) ?tf-hub-format=несжатый https://tfhub.dev/google/spice/2?tf-hub-format=несжатый
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .json ?tfjs-format=файл https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file

протокол библиотеки tensorflow_hub

В этом разделе описывается, как мы размещаем модели на tfhub.dev для использования с библиотекой tensorflow_hub. Если вы хотите разместить свой собственный репозиторий моделей для работы с библиотекой tensorflow_hub, ваша служба распространения HTTP(s) должна обеспечить реализацию этого протокола.

Обратите внимание, что в этом разделе не рассматривается размещение моделей TF Lite и TFJS, поскольку они не загружаются через библиотеку tensorflow_hub . Дополнительную информацию о хостинге этих типов моделей см. выше .

Сжатый хостинг

Модели хранятся на tfhub.dev в виде сжатых файлов tar.gz. По умолчанию библиотека tensorflow_hub автоматически загружает сжатую модель. Их также можно загрузить вручную, добавив ?tf-hub-format=compressed к URL-адресу модели, например:

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

Корень архива является корнем каталога модели и должен содержать SavedModel, как в этом примере:

# 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

Тарболы для использования с устаревшим форматом TF1 Hub также будут содержать файл ./tfhub_module.pb .

Когда вызывается один из API загрузки модели библиотеки tensorflow_hub ( hub.KerasLayer , hub.load и т. д.), библиотека загружает модель, распаковывает ее и кэширует ее локально. Библиотека tensorflow_hub ожидает, что URL-адреса моделей имеют версии и что содержимое модели данной версии является неизменным, поэтому его можно кэшировать на неопределенный срок. Узнайте больше о кэшировании моделей .

Несжатый хостинг

Если для переменной среды TFHUB_MODEL_LOAD_FORMAT или флага командной строки --tfhub_model_load_format установлено значение UNCOMPRESSED , модель считывается непосредственно из удаленного хранилища (GCS), а не загружается и распаковывается локально. Если это поведение включено, библиотека добавляет ?tf-hub-format=uncompressed к URL-адресу модели. Этот запрос возвращает путь к папке в GCS, содержащей несжатые файлы модели. В качестве примера:
<a href="https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed">https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed</a>
возвращает
gs://tfhub-modules/google/spice/2/uncompressed в теле ответа 303. Затем библиотека считывает модель из этого места назначения GCS.