1 TensorFlow Serving简单介绍
TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 restful api或者grpc 作为接口接受外部调用,部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练, 模型训练好打包成pd文件,传入tf-serving 中,调用即可。
2 docker 安装 tensorflow-serving ,using your gpu
TensorFlow Serving最简单的安装方法之一就是使用Docker,其他安装方式不在介绍。
2.1 step 1 安装 install nvida-docker
2.2 step 2 pull一个tfserver镜像
docker pull tensorflow/serving:latest-gpu
3 TensorFlow Serving gpu的使用
docker run –runtime=nvidia -p 8501:8501 \
–mount type=bind,\
source=/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/my_model,\
target=/models/my_model \
-e MODEL_NAME=half_plus_two -t tensorflow/serving:latest-gpu \
–model_config_file =/models/models.config
解释 :
source 模型源地址
Target docker 映射地址
-e MODEL_NAME 模型名字
-t 用到的镜像
–model_config_file 配置文件(单模型可以不加这个参数)
多模型下有一点务必要注意的是,models.conf文件中model的base_path应该是与target的路径保持一致,否则会报错找不到模型。
看到以下画面,tf-serving 正在加载模型,几秒后看到暴露8501端口,
则部署成功。
注意:传入的模型结构 应该是
4 TensorFlow Serving 客户端如何调用
模型是 predict Api, 其他的模型请求方式请看官方文档
链接:https://www.tensorflow.org/tfx/guide/serving
curl -d ‘{“instances”: [1.0, 2.0, 5.0]}’ -X POST
http://localhost:8501/v1/models/yolo_digit/versions/版本号:predict
当然你可以编写你的脚本文件
返回的预测结果以json格式:
{
“predictions”: [
{
“detection_classes”: [2, 9, 10],
“detection_boxes”: [[0.0138582, 0.791607, 0.847469, 0.989209], [0.0783433, 0.0179386, 0.96922, 0.329528], [0.0382449, 0.376244, 0.919879, 0.685031]],
“detection_scores”: [0.999997, 0.999993, 0.999994]
}
]
}
5 TensorFlow Serving 总结
TensorFlow Serving是GOOGLE开源的一个服务系统,适用于部署机器学习模型,灵活、性能高、可用于生产环境。 TensorFlow Serving可以轻松部署新算法和实验,同时保持相同的服务器架构和API,它具有以下特性:
1支持模型版本控制和回滚
2支持并发,实现高吞吐量
3开箱即用,并且可定制化
4支持多模型服务
5支持批处理
6支持热更新
7支持分布式模型
8易于使用的inference api
9为gRPC expose port 8500,为REST API expose port 8501
注意 : tensorflow serving 服务不会占用一整块gpu,当你去post数据的时候才会调用服务器的gpu运算,本此测试用本14000张循环请求,服务器GPU占用率在5%左右,性能非常好。
有问题 微信 ljcyygyepq1