如何通过标准tensorflow服务docker镜像来服务模型的多个版本?

时间:2018-09-27 07:55:34

标签: docker tensorflow tensorflow-serving

我是Tensorflow服务的新手,

我刚刚尝试使用this tutorial通过docker服务于Tensorflow并成功。

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

有可能这样做吗?还是我需要尝试一些不同的东西?

2 个答案:

答案 0 :(得分:4)

这需要一个ModelServerConfig,下一个docker镜像tensorflow / serving版本1.11.0(自2018年5月5日开始可用)将支持它。在此之前,您可以创建自己的docker映像,或使用here中所述的tensorflow / serving:nightly或tensorflow / serving:1.11.0-rc0。 有关如何实现多个模型的信息,请参见该线程。

另一方面,如果要启用单个模型的多个版本,则可以使用以下名为“ 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

然后使用tensorflow / serving而不是tensorflow / serving:nightly运行上述docker映像。

答案 1 :(得分:1)

我找到了一种通过构建自己的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 \