使用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。

posted @   鸭梨的药丸哥  阅读(31)  评论(0编辑  收藏  举报  
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示