如何通过标准张量流服务 docker 图像服务多个版本的模型?

How to serve multiple versions of model via standard tensorflow serving docker image?

我是 Tensorflow 服务的新手,

我刚刚通过 docker 和 this tutorial 尝试了 Tensorflow 服务并成功了。

但是,当我尝试使用多个版本时,它只提供最新版本。

可以吗?或者我需要尝试不同的东西吗?

我找到了一种实现此目的的方法,方法是构建自己的 docker 图像,该图像使用 --model_config_file 选项而不是 --model_name--model_base_path

所以我 运行 tensorflow 使用以下命令服务。

docker run -p 8501:8501 -v {local_path_of_models.conf}:/models -t {docker_iamge_name}

当然,我也为多个模型写了'models.conf'。

编辑:

以下是我根据原始 docker 文件修改的内容。

原始版本:

tensorflow_model_server --port=8500 --rest_api_port=8501 \ --model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME} \

修改版本:

tensorflow_model_server --port=8500 --rest_api_port=8501 \ --model_config_file=${MODEL_BASE_PATH}/models.conf \

这需要一个 ModelServerConfig,下一个 docker 图像 tensorflow/serving 版本 1.11.0 将支持它(自 2018 年 10 月 5 日起可用)。在那之前,您可以创建自己的 docker 映像,或使用 tensorflow/serving:nightly 或 tensorflow/serving:1.11.0-rc0,如 here 所述。 请参阅该线程以了解如何实现多个模型。

另一方面,如果您想要启用单个模型的多个版本,您可以使用以下名为 "models.config" 的配置文件:

model_config_list: {
    config: {
        name: "my_model",
        base_path: "/models/my_model",
        model_platform: "tensorflow",
        model_version_policy: {
            all: {}
        }
    }
}

此处 "model_version_policy: {all:{ } }" 使模型的每个版本都可用。 然后 运行 docker:

docker run -p 8500:8500 8501:8501 \
    --mount type=bind,source=/path/to/my_model/,target=/models/my_model \
    --mount type=bind,source=/path/to/my/models.config,target=/models/models.config \
    -t tensorflow/serving:nightly --model_config_file=/models/models.config

编辑:
现在 1.11.0 版本可用,您可以开始拉取新镜像:

docker pull tensorflow/serving

然后 运行 上面的 docker 图片,使用 tensorflow/serving 而不是 tensorflow/serving:nightly.