前一节讲了tensorflow-serving单个模型部署,本节接着介绍tfserving通过配置文件,部署多个模型,以及多个模型的不同版本。
1.本地保存多个测试模型,用于测试
2.编写配置文件,models.config,base_path表示容器中,模型的路径
model_config_list {
config {
name: 'imagecls'
base_path: '/models/imagecls'
model_platform: 'tensorflow'
model_version_policy{
specific {
versions:1
}
}
}
config {
name: 'mobilenetv3'
base_path: '/models/mobilenetv3'
model_platform: 'tensorflow'
model_version_policy{
specific {
versions: 2
}
}
}
}
3.启动服务
/home/hexiong/tfmodels:/models,将本地/home/hexiong/tfmodels文件夹下的所有文件复制到容器/models文件夹下
--model_config_file中的路径是,复制后容器的路径
sudo docker run -t --rm -p 8500:8500 -p 8501:8501 -v /home/hexiong/tfmodels:/models tensorflow/serving:2.8.4-gpu --model_config_file=/models/mod
el.config
4.grpc访问服务
主要几个参数:
# 模型名称
request.model_spec.name = 'mobilenetv3'
#模型签名,默认serving_default
request.model_spec.signature_name = 'serving_default'
#版本号
request.model_spec.version.value = 2
import grpc
import time
from tensorflow_serving.apis import predict_pb2, prediction_service_pb2_grpc
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.efficientnet_v2 import decode_predictions
import numpy as np
import tensorflow as tf
options = [('grpc.max_send_message_length', 1000 * 1024 * 1024),
('grpc.max_receive_message_length', 1000 * 1024 * 1024)]
channel = grpc.insecure_channel("localhost:8500", options=options)
stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)
request = predict_pb2.PredictRequest()
# request.model_spec.name = 'imagecls'
# request.model_spec.signature_name = 'serving_default'
# request.model_spec.version.value = 1
request.model_spec.name = 'mobilenetv3'
re