模型推理部署——Tensorflow篇
模型推理部署——Tensorflow篇
Tensorflow 模型保存、加载⽅式
我们常见的模型保存后产⽣的⽂件有以下⼏种形式:
1. checkpoint
checkpoint \ model.ckpt-XXX.data-00000-of-00001 \ model.ckpt-XXX.index \ a
其中 .data⽂件是包含训练变量的⽂件; .index是描述variable中key和value的对应关系;checkpoint⽂件是列出保存的所有模型以及最近模型的相关信息;.meta⽂件保存了tensorflow完整的⽹络图结构
2. GraphDef(frozen)
pb ⽂件
protobuf对象序列化后的数据,包含了计算图和变量。
3. SavedModel
pb⽂件+ variable⽬录(.index + .data)
后⾯两种形式包含权重和计算图操作。它不需要运⾏原始的模型构建代码,这对于共享或部署(使⽤TFLite , TensorFlow.js ,TensorFlow Serving或TensorFlow Hub )很有⽤。
python中部署Tensorflow
和python中部署PyTorch相同,我们完全可以训练时使⽤python语⾔,推理时也使⽤python语⾔。使⽤flask等web开发框架,⽤restful API的⽅式部署服务。详细的可参考python中部署PyTorch中的相关内容。
Java中部署Tensorflow
因为tensorflow 提供java的API,我们可以使⽤python来训练模型,使⽤java来部署模型。
在python中保存模型pb⽂件(2),然后在Java中采⽤以下⽰例⽅式进⾏加载:
import java.nio.file.Files;
import java.nio.file.Path;
java调用python模型sorflow.Graph;
sorflow.Session;
sorflow.Tensor;
// load pb model file
byte[] graphDef = (modelDir,"**.pb"));
Graph g =new Graph();
g.importGraphDef(graphDef);
Session model =new Session(g);
// feed input
Tensor result = model.runner().feed("input_name",inputTensor)
通过上述⽰例可以将模型加载并进⾏推理,可以通过http或者grpc的⽅式进⾏服务的接⼝通信
Tensorflow Serving
tensorflow serving 提供多模型部署、服务通信、模型管理等,我们可以使⽤tensorflow serving 来部署模型,撰写客户端来进⾏数据预处理和后处理以及与服务端的交互。
tensorflow serving 上⼿还是⽐较简单的,可以参考官⽅⽂档进⾏尝试使⽤:
其他
还有⼀些其他开源的模型部署框架服务⽀持tensorflow作为模型后端来进⾏部署。同时在推理部署时,还可以使⽤tensorflow-trt 或者tensorRT等进⾏模型操作转换,来进⾏推理加速。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论