このドキュメントでは、すべてのモデルタイプ(TFJS、TF Lite、および TensorFlow モデル)を tfhub.dev にホストする際に使用される URL の表記法を説明します。また、tensorflow_hub
ライブラリが tfhub.dev と対応サービスから TensorFlow プログラムに TensorFlow モデルを読み込むために実装する HTTP(S) ベースのプロトコルについても説明します。
モデルの読み込みと、ブラウザでモデルドキュメントの閲覧できるようにする上で、コードに同じ URL を使用できるという主な特徴があります。
全般的な URL 表記法
tfhub.dev では、次のフォーマットがサポートされています。
- 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 モデルにはバージョン管理された
<a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>/<version>
url と、モデルの最新バージョンに解決するバージョン管理されていない url<a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>
があります。
TF Hub モデルは、URL パラメータを tfhub.dev モデル URL にアペンドすれば、圧縮アセットとしてダウンロードすることができますが、これを実現するために必要な URL パラメータはモデルの種類によって異なります。
- TensorFlow モデル(SavedModel 形式と TF1 Hub 形式): TensorFlow モデル URL に
?tf-hub-format=compressed
をアペンドします。 - TFJS モデル: TFJS モデル URL に
?tfjs-format=compressed
をアペンドして圧縮されたアセットをダウンロードするか、リモートストレージの場合は/model.json?tfjs-format=file
をアペンドして読み取ります。 - TF Lite モデル: TF Lite モデル URL に
?lite-format=tflite
をアペンドします。
例を示します。
種類 | モデル URL | ダウンロードの形式 | URL パラメータ | ダウンロード URL |
TensorFlow(SavedModel、TF1 Hub 形式) | https://tfhub.dev/google/spice/2 | .tar.gz | ?tf-hub-format=compressed | 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=compressed | https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compressed |
また、モデルには、ダウンロードせずにリモートストレージから直接読み取ることのできる形式でホストされているものもあります。特に、TF.js モデルをブラウザで実行している場合や Colab で SavedModel を読み込む場合など、利用できるローカルストレージがない場合に役立つ方法です。ローカルにダウンロードせずに、リモートにホストされているモデルを読み取ると、レイテンシが高まる可能性があることに注意してください。
種類 | モデル URL | レスポンスの型 | URL パラメータ | リクエスト URL |
TensorFlow(SavedModel、TF1 Hub 形式) | https://tfhub.dev/google/spice/2 | 文字列(圧縮されていないモデルが保存されている GCS フォルダへのパス) | ?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=file | https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file |
tensorflow_hub ライブラリのプロトコル
このセクションでは、tensorflow_hub ライブラリと使用するために tfhub.dev にモデルをホストする方法を説明します。tensorflow_hub ライブラリと連携する独自のモデルリポジトリをホストする場合は、HTTP(s) 配信サービスでこのプロトコルの実装が行われている必要があります。
このセクションは、TF Lite と TFJS モデルには触れていません。これらのモデルは、tensorflow_hub
ライブラリでダウンロードできないためです。これらのモデルをホストする方法については、上記をご確認ください。
圧縮によるホスティング
モデルは 圧縮された tar.gz ファイルとして tfhub.dev に保存されています。デフォルトでは、tensorflow_hub ライブラリは自動的に圧縮モデルをダウンロードするようになっています。また、モデル URLに ?tf-hub-format=compressed
をアペンドすると、手動でダウンロードすることも可能です。以下に例を示します。
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 形式で使用する Tarball には、./tfhub_module.pb
ファイルも含まれています。
tensorflow_hub
ライブラリモデルの読み込み API の 1 つが呼び出されると(hub.KerasLayer、hub.load など)、ライブラリはモデルをダウンロードして解凍し、ローカルにキャッシュします。tensorflow_hub
ライブラリは、無期限にキャッシュできるように、モデル URL がバージョン管理されており、あるバージョンのモデルコンテンツがミュータブルではないことを期待しています。詳細は、モデルのキャッシングをご覧ください。
非圧縮によるホスティング
環境変数 TFHUB_MODEL_LOAD_FORMAT
またはコマンドラインのフラグ --tfhub_model_load_format
が UNCOMPRESSED
に設定されている場合、モデルはローカルにダウンロードして解凍される代わりに、リモートストレージから(GCS)から直接読み取られます。この動作が有効である場合、ライブラリはモデル URL に ?tf-hub-format=uncompressed
をアペンドします。そのリクエストは圧縮されていないモデルファイルを含む GCS のフォルダへのパスを返します。たとえば、以下の URL
<a href="https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed">https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed</a>
は 303 レスポンスの本文で
gs://tfhub-modules/google/spice/2/uncompressed
を返します。ライブラリはこの GCS の場所からモデルを読み取ります。