使用tensoflow serving来部署模型推理节点

使用tensoflow serving来部署模型推理节点

这里使用的时docker来进行模型的部署,主要是docker更轻便和方便。

1.训练一个分类模型

分类模型一般很简单,这里我已经训练好一个(测试97.6准确率)的分类模型,因为是本地跑的,所以准确率先对低一点,毕竟受到设备的限制(显存才4G)。

2.模型导出格式

模型的导出必须要全格式,而非tensorflow的checkpoint(一些权重文件),应该是tensorflow提供的pb模型格式。

3.docker部署tensoflow serving
3.1下载tensorflow/serving镜像
docker pull tensorflow/serving:latest-devel

这里选择的是latest-devel版本的,下载前请设置好docker的下载源,我使用的是阿里云的docker仓库的源,所以下载很快。

3.2查看镜像
docker images
3.3启动容器

下载好后就要根据镜像启动容器啦,这里的-it表示交互(启动后将会直接进入到容器里面),-p为端口的映射。

docker run -it -p 8051:8051 tensorflow/serving:latest-devel 
3.4上传模型到docker容器中
docker cp 本地路径  容器ID:路径
3.5部署模型

部署模型十分简单,tensorflow serving部署模型运行热更新(也就是说不用停掉服务,也可以更新模型),这里使用http端口的部署模式,tensorflow serving部署还提供其他几种部署模式。(如果当成后台计算节点来说http不是最好的)。

tensorflow_model_server \
    --rest_api_port=8501 \
    --model_name=VGG16 \
    --model_base_path="/home/.../.../saved"  # 文件夹绝对地址根据自身情况填写,无需加入版本号

rest_api_port为端口号,model_name自定义(后面会用到),model_base_path你保存模型的路径。

3.6调用http接口

服务器 URI: http://服务器地址:端口号/v1/models/模型名:predict

解释一下,v1是版本号(v2,v3等等)

predict是模型调用的方法,一般的模型都是predict,除非你在模型里面自定义了方法,否则一般使用predict

import json
import numpy as np
import requests
#将图片封装到json里面,然后post到推断节点中
data= json.dumps(
    {"instances":image}
)
headers = {"content-type": "application/json"}
json_response = requests.post(
    'http://xxx.xxx.xxx.xxx:8051/v1/models/VGG16:predict',
    data=data, headers=headers)
result = json.loads(json_response.text)

其中result长这样

{'predictions': [[0.00384901767, 0.995562077, 0.000588864845]]}

其三个值分别对应分类类别的score。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值