前面介绍的Tensorflow serving启动服务时,会将我们的模型服务放到服务器端口,那么如果我们需要将多个模型同时放到该端口该怎么做呢?例如我们需要将dog-cat分类模型、目标检测模型同时放到端口上,用户可以根据具体地址来访问端口的不同模型,这时候就需要多模型部署了。
多模型部署与前面的模型部署步骤大致相同,就是多了一个多模型配置文件,这里用我的模型做为例子。我需要将三个模型部署到端口上,具体如下:
分别为BK、HALF、MNIST,文件夹中为模型的TF-Serving格式,可以具体看看怎么转换,这里就不举例了。
多模型配置文件(文件名model.config):
model_config_list: {
config: {
name: "bk",
base_path: "/models/bk",
model_platform: "tensorflow"
},
config: {
name: "mnist",
base_path: "/models/mnist",
model_platform: "tensorflow"
}
config: {
name: "half",
base_path: "/models/half",
model_platform: "tensorflow"
},
}
上面默认部署模型为所有版本,版本就是这里的BK等文件夹下的文件夹的名称,可以为多种版本,若想指定模型版本,可:
model_config_list: {
config: {
name: "bk",
base_path: "/models/bk",
model_platform: "tensorflow"
},
config: {
name: "mnist",
base_path: "/models/mnist",
model_platform: "tensorflow",
model_version_policy: {
specific: {
versions: 1,
versions: 2
}
}
config: {
name: "half",
base_path: "/models/half",
model_platform: "tensorflow",
model_version_policy: {
all: {
}
}
},
}
命令:
docker run --runtime=nvidia -p 8501:8501 \
--mount type=bind,\
source=/home/hj/smbshare/Huxx/TF-Serving/saved_models/BK,\
target=/models/bk \
--mount type=bind,\
source=/home/hj/smbshare/Huxx/TF-Serving/saved_models/MNIST,\
target=/models/mnist \
--mount type=bind,\
source=/home/hj/smbshare/Huxx/TF-Serving/saved_models/HALF,\
target=/models/half \
--mount type=bind,\
source=/home/hj/smbshare/Huxx/TF-Serving/model.config,\
target=/models/model.config \
-e NVIDIA_VISIBLE_DEVICES=1 \
-t tensorflow/serving:1.12.0-gpu \
--model_config_file=/models/model.config
注: 其实就是将三个模型分别通过--mount type=bind依次挂到端口,上面红字部分就是model.config中对应的name以及base_path,并且需要将model.config挂到端口。 蓝色字部分为GPU设置。
最后,可以通过http地址访问个模型,如:http://localhost:8500/v1/models/half、http://localhost:8500/v1/models/bk
https://blog.csdn.net/JerryZhang__/article/details/86516428
如果对你有用,点个赞 手动笑脸(*_*)