使用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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)