TensorFlow Hub 在 thub.dev 中提供了一个开放的训练模型存储库。tensorflow_hub
库可以从这个存储库和其他基于 HTTP 的机器学习模型存储库中加载模型。特别是,该协议允许将标识模型的网址用于模型的文档以及获取模型的端点。
如果您有意托管自己的模型存储库,而这些模型可使用 tensorflow_hub
库来加载,那么您的 HTTP 分发服务应遵循以下协议。
协议
使用诸如 https://example.com/model
的网址标识要加载或实例化的模型时,在追加查询参数 ?tf-hub-format=compressed
后,模型解析器将尝试从网址下载压缩的 tarball。
查询参数将解释为客户端感兴趣的模型格式的逗号分隔列表。目前仅定义了“压缩”格式。
压缩格式表示客户端期望一个包含模型内容的 tar.gz
归档。归档的根是模型目录的根,并且应包含 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.Module()
API 一起使用的 tarball 还包含 ./tfhub_module.pb
文件。TF2 SavedModel 的 hub.load()
API 会忽略此类文件。
tensorflow_hub
库期望模型网址进行版本控制,并且给定版本的模型内容是不可变的,以便可以无限期地对其进行缓存。