墨尘的模型部署4--docker镜像tensorflow serving的多模型多版本控制(四)

tensorflow serving部署镜像中的模型多版本控制/指定版本预测

当模型存在多个版本时,可同时加载,并根据需要选择合适模型预测,此时需要配置models.config文件,并指定–model_config_file参数。模型名model和model1下都有4个版本模型,如下图所示。
墨尘的模型部署4--docker镜像tensorflow serving的多模型多版本控制(四)_第1张图片
配置models.config文件,json格式写法:

  • config字段,指定具体模型
  • base_path表示容器内的模型文件路径,不是本地路径
  • specific指定具体要加载的版本号
# 具体的models.config文件
model_config_list: {
    config: {
        name: "model",
        base_path: "/models/model",
        model_platform: "tensorflow",
        model_version_policy: {
          specific: {
              versions:1,
              versions:2,
              versions:3,
              versions:4
          }
        }
           
    },
    config: {
        name: "model1",
        base_path: "/models/model1",
        model_platform: "tensorflow",
        model_version_policy: {
            specific: {
            versions:3,
            versions:4
            }
        },
    }
}

models.config文件准备好后,使用tensorflow servomg docker进行挂载

# 两类模型model和model1都需要挂载,models.config也需要挂载
# 同时指定tensorflow/serving内部的tensorflow_model_server参数model_config_file
docker run --rm -p 8501:8501 \
--mount type=bind,source=$(pwd)/model/,target=/models/model \
--mount type=bind,source=$(pwd)/model1/,target=/models/model1 \
--mount type=bind,source=$(pwd)/models.config,target=/models/models.config \
-t tensorflow/serving --model_config_file=/models/models.config

根据models.config的配置,加载model/1、2、3、4,共4个模型;加载model1/3、4,共2个模型,验证如下:

# 返回models.config中model1的所有指定的模型版本
curl http://localhost:8501/v1/models/model1
# 返回model1/3版本模型
curl http://localhost:8501/v1/models/model1/versions/3

墨尘的模型部署4--docker镜像tensorflow serving的多模型多版本控制(四)_第2张图片
使用models.config会使得docker run指令特别长,也可以仿照内容3.使用最简镜像制作本地已训练模型的镜像制作models.config配置的镜像。具体如下:

# 以后台运行方式开启一个tensorflow/serving的守护进程
docker run -d --name serving_base tensorflow/serving
# 复制本地SavedModel到容器存放models的文件夹下
docker cp ./model serving_base:/models/model
docker cp ./model1 serving_base:/models/model1
docker cp ./models.config serving_base:/models/models.config
# docker commit提交修改制作新镜像my_model_3,不需要设置环境变量
docker commit serving_base my_model_3
# 启用my_model_0镜像,此时不需要指定-v/--mount,-e等参数,需要指定model_config_file参数
docker run -it -p 8501:8501 my_model_3 --model_config_file=/models/models.config

docker cp命令注意事项(与linux cp相似):

docker cp src_path dest_path
  • dest_path不存在时,会创建dest_path目录,并将src_path目录下的内容拷贝进去
  • dest_path存在时
    若src_path以"/.“结尾,将src_path目录下的内容拷贝进去
    若src_path不以”/."结尾,将src_path整个目录拷贝进去

你可能感兴趣的:(墨尘的模型部署)