恭喜dl_inference:成功申报中国科协开源评选
中国科协首届2021“科创中国”开源创新榜评选正在进行中,全程免费参与,对于申报成功的开源产品/社区/机构,主承办方会组织各种形式的宣传报道。
- dl_inference :通用深度学习推理服务
- dl_inference :成功申报中国科协开源评选
开源项目介绍
简介
dl_inference是58同城推出的通用深度学习推理服务,可在生产环境中快速上线由TensorFlow、PyTorch框架训练出的深度学习模型。dl_inference当前支持TensorFlow和PyTorch模型,提供GPU和CPU两种部署方式,并且实现了模型多节点部署时的负载均衡策略,支持线上海量推理请求,该服务支撑了58同城各AI场景下日均超过10亿次的线上推理请求。
- dl_inference具备如下特点:
- 简化深度学习模型的推理服务部署;
- 支持模型多节点部署并实现负载均衡策略;
- 提供统一的RPC服务调用接口;
- 提供GPU和CPU两种部署方式;
- PyTorch模型支持推理前后数据处理,开放模型调用。
dl_inference诞生意义
将深度学习模型进行部署实现推理服务是算法应用到生产环境的最后一环。当前主流的深度学习框架TensorFlow和PyTorch推理服务实现介绍如下:
1. TensorFlow推理
最常见的是采用TensorFlow Serving这一组件进行部署,在生产环境中推荐使用Docker部署TensorFlow Serving。TensorFlow Serving可以直接读取SavedModel格式模型文件进行部署,支持热更新模型,支持以gRPC和RESTful API进行调用。
当一个模型需要部署多个节点时,采用TensorFlow Serving组件部署时需要解决请求负载均衡问题,dl_inference基于动态加权轮询算法实现多个推理节点的负载均衡,很好的解决了这一问题。
2. PyTorch推理
PyTorch框架不提供服务化部署组件,需要用户自己开发实现,大致有两种解决方案。第一种是利用服务化框架进行封装,比如使用Flask框架部署一个http服务,编写API来进行请求处理, API里调用PyTorch推理函数;第二种是将PyTorch模型利用ONNX转换为onnx格式,然后再转换为TensorFlow或Caffe的模型,再通过TensorFlow Serving 或Caffe来进行推理部署。
第一种方式需要用户自行进行服务封装,开发工作量大;第二种方式也存在诸多缺陷,如PyTorch模型转onnx格式存在失败情况且转成onnx格式后推理性能会有损耗。dl_inference基于Seldon对PyTorch进行封装提供RPC服务调用,用户只需要将PyTorch模型放在指定目录启动dl_inference即可进行线上请求调用。
dl_inference架构
dl_inference主要包括统一接入服务、TensorFlow推理服务、PyTorch推理服务三个模块,如下图所示:
如何使用dl_inference
使用dl_inference将深度学习模型应用到生产环境需要进行统一接入服务部署和模型部署。统一接入服务为maven工程,源码位于项目wpaidlpredictonline目录下,运行环境为jdk1.8及以上版本。Maven install方式编译源码,将编译生成的jar包和lib依赖包上传到服务器部署目录下,执行启动命令启动服务。模型部署分TensorFlow和PyTorch两种框架训练的模型,下面分别加以介绍。
1. TensorFlow模型部署
(1)数据准备
准备SavedModel格式的TensorFlow模型文件,如果是CheckPoint格式需要转换成SavedModel格式。
(2)模型部署
建议使用容器化方式部署,基本步骤如下所示:
(1)安装Docker环境。
(2)拉取TensorFlow Serving镜像并启动容器。
(3)将TensorFlow模型放入指定目录,启动服务。
自定义operate个性化部署时,由于TensorFlow导出模型时不会将自定义operate添加到模型文件中,所以官方提供的TensorFlow-Serving镜像无法识别。这种情况下需要将自定义operate编译到TensorFlow-Serving源码中,详细过程请参见项目Readme。
2.PyTorch模型部署
(1)数据准备
主要准备两种文件,一是需要部署的模型文件,二是用户自定义接口文件。
模型文件:用dl_inference来部署模型,需要采用保存整个模型的方式生成模型文件,并且命名为为model.pth。
用户自定义接口文件:按照业务需要重写自定义接口文件中的前后数据处理函数,自定义模型运行函数。
(2)模型部署
完成PyTorch模型部署只需在已安装Docker环境的物理机上进行以下三步:
(1)准备好所需模型和接口文件放在指定目录下
(2)使用提供的DockerFile生成PyTorch在线推理镜像
(3)运行PyTorch服务镜像
后续规划
未来计划开源如下:
(1) 支持深度学习框架Caffe所训练模型在GPU和CPU上的推理。
(2) CPU上推理性能的加速, 如兼容intel的相关机器学习库,如MKL(Math Kernel Library)、OpenVINO等。
(3) GPU上推理性能的加速, 提升单张GPU卡的吞吐率,如兼容Nvidia开源组件TensorRT等。
活动火热进行中,点击链接赶快申报吧:申报链接