tensorflow2.0部署tensorflow serving 多模型多版本全过程(官网杂乱不清)

这里必须吐槽一下官网的教程示例,重复啰嗦就算了,还杂乱无章。个人整理建议流程。
走到这一步流程的同学,我相信,怎么样去训练模型和保存模型肯定已经不是什么问题了。
关于模型保存
平时训练用于保存模型 ,顾虑占用空间方面,都会选择 只保存 参数的方式。但是想要部署tensorflow-serving,让serving加载模型,则必须保存模型的所有数据,因此采用另外一种模型保存方式:tf.saved_model.save( model ,’ 模型保存路径不需要写模型名’) ,相对应的加载模型函数为:tf.saved_model.load( ‘ 文件夹路径’) 保存模型 生成如下文件夹:
在这里插入图片描述
文件夹说明:文件夹1 为后面模型的版本号,可以自定义,并不是url中的的v1,默认情况下,会加载最高版本的模型。variables为所有参数的序列化数据,saved_model.pb 为网络模型结构

到此为止,模型的保存已经完毕!!!

下一步,安装docker,这里不再赘述。要使用tensorflow serving 最简单的方式肯定是使用docker部署serving。

docker pull tensorflow/serving 拉取serving镜像

启用服务:

docker run  -p 8555:8501  --name dog_cat -v /home/duanjinfu/PycharmProjects/DL_AND_ML/tf20/model/:/models/dogcat -e MODEL_NAME=dogcat tensorflow/serving 

参数说明:
-p 端口映射,8501为镜像内部定义的向外部暴露的用于调用rest api的端口 将docker容器中的8501端口映射到本地8555端口。
–name 指定当前容器的name值
-v 文件夹映射,将本地的/home/duanjinfu/PycharmProjects/DL_AND_ML/tf20/model/ 映射到 容器中的/models/dogcat
MODEL_NAME 指定 模型名称 模型名称必须跟上面的/model/模型名称 相同
tensorflow/serving 用当前镜像 启动容器。
启用服务 官网实例:https://tensorflow.google.cn/tfx/serving/serving_basic

启用之后,下一步就是调用API,调用服务,
官网的调用说明(发请求和响应内容都有说明):https://tensorflow.google.cn/tfx/serving/api_rest#model_status_api
curl http://localhost:8555/v1/models/dogcat 查看模型所有版本服务状态
curl http://localhost:8555/v1/models/dogcat/metadata 查看服务信息,输入大小等
curl http://localhost:8555/v1/models/dogcat:predict -X POST -d ‘{“instances”: sample[0].tolist()}’ 说明sample[0].tolist()这里是数据必须是模型需要的数据大小类型。

当然,以上是使用curl 模块模拟请求 rest api 可以使用浏览器,postman 等工具,当然,可以自己写一个client 来发起请求。
注意点:以上请求地址的 v1 是上面图片 中 文件夹1,为版本号,如果不请求版本号,会默认使用最高版本号

关于python 发起请求使用服务api参考:


# print(sample[0][0:3])
data = json.dumps({"instances": sample[0].tolist()}) # sample[0] 为numpy adarray格式
print(type(sample[0]))

headers = {"content-type": "application/json"}
json_response = requests.post('http://localhost:8555/v1/models/dogcat:predict', data=data, headers=headers)
predictions = np.array(json.loads(json_response.text)['predictions'])
print(type(predictions))

对于多模型多版本的部署

文件格式
这里有 dogcat 和tran 两个模型,dogcat 有1和2两个版本,tran下有一个版本

tensorflow serving 启动:
docker run -p 8555:8501 --mount type=bind,source=/home/duanjinfu/PycharmProjects/DL_AND_ML/tf20/model,target=/models -t --name dog_cat tensorflow/serving --model_config_file=/models/models.config
注意:此处的–mount 和上面的 -v 是一回事,都是文件夹映射。–model_config_file用于指定配置文件,config文件 在model文件夹下面。
不报错的话,基本就是启动完成了,关于配置文件 models.config:

model_config_list:{
    config:{
        name:"dogcat"
        base_path:"/models/dogcat/"
        model_platform:"tensorflow"
        model_version_policy {
            specific {
            versions: 1
            versions: 2
            }
        }
    },
    config:{
        name:"tran"
        base_path:"/models/tran/"
        model_platform:"tensorflow"
        model_version_policy {
            specific {
            versions: 1
            }
        }
    },

}

config 说明:
一个config 配置一个模型,
base_path:用于指定 模型路径
name:指定模型名称
model_version_policy 用于配置,当前模型提供服务的几个版本号,在这里配置的才能提供服务

rest api 请求:
和单个模型的请求方式类似,只是在指定模型名的时候带上 版本号:
例:curl http://localhost:8555/v1/models/dogcat/versions/1
请求和预测都是类似,添加模型名和版本号即可

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值