Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
通用深度学习推理工具,可在生产环境中快速上线由TensorFlow、PyTorch、Caffe框架训练出的深度学习模型。
| Date | Stars |
|---|---|
| 2026-07-24 | 417 |
| 2026-07-25 | 417 |
| 2026-07-28 | 417 |
| 2026-07-30 | 417 |
| 2026-08-06 | 417 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# 通用深度学习推理工具
可在生产环境中快速上线由TensorFlow、PyTorch、Caffe框架训练出的深度学习模型,以及被[TensorRT](https://developer.nvidia.com/tensorrt) 优化过的模型。
dl_inference是58同城推出的通用深度学习推理工具,使用dl_inference只需要将模型文件放在指定目录然后启动服务就可以进行推理请求调用。dl_inference当前支持TensorFlow、PyTorch和Caffe模型,提供GPU和CPU两种部署方式,并且实现了模型多节点部署时的负载均衡策略,支持线上海量推理请求。
dl_inference具备的Features如下:
* 简化深度学习模型在生产环境上的推理服务部署,只需要将模型文件放入指定目录。
* 支持模型多节点部署并实现负载均衡。
* 提供统一的RPC服务调用接口。
* 提供GPU和CPU两种部署方式。
* PyTorch/Caffe模型支持推理前后数据处理,开放模型调用。
* TensorFlow-SavedModel模型及Pytorch-pth模型自动转换为TensorRT模型后部署,提高推理性能。
## 为什么需要dl_inference
将深度学习模型进行部署实现推理服务是算法应用到生产环境的最后一环。当前主流的深度学习框架TensorFlow和PyTorch等推理服务实现介绍如下:
1. TensorFlow推理
最常见的是采用TensorFlow Serving这一组件进行部署,在生产环境中推荐使用Docker部署TensorFlow Serving。TensorFlow Serving可以直接读取SavedModel格式模型文件进行部署,支持热更新模型,支持以gRPC和RESTful API进行调用。
当一个模型需要部署多个节点时,采用TensorFlow Serving组件部署时需要解决请求负载均衡问题,dl_inference基于动态加权轮询算法实现多个推理节点的负载均衡,很好的解决了这一问题。另外我们采用了经过英特尔数学核心函数库([Math Kernel Library](https://software.intel.com/content/www/us/en/develop/documentation/get-started-with-mkl-for-dpcpp/top.html) ,下文简称MKL)[优化后的Tensorflow Serving](https://github.com/Intel-tensorflow/serving) ,对推理服务进行了优化,推荐使用[Intel官方发布的Docker镜像](https://hub.docker.com/r/intel/intel-optimized-tensorflow-serving) 部署。
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即可进行线上推理调用。
3. Caffe推理
Caffe框架跟PyTorch框架一致,同样Caffe不提供推理引擎,需要自行自己开发实现。
方案跟PyTorch一样使用Seldon对Caffe进行封装提供RPC服务调用,用户需要将Caffe模型放在指定目录启动服务即可完成模型部署,进行线上推理请求调用
4. TensorRT推理
TensorRT是用于高性能深度学习推理的SDK,此SDK包含深度学习推理优化器和运行时环境,可为深度学习推理应用提供低延迟和高吞吐量。我们采用了NVIDIA开源推理服务[Triton Inference Server](https://github.com/triton-inference-server/server) (下文简称TIS)进行部署TensorRT模型,在生产环境中推荐使用Docker部署。另外dl_inference提供了模型转换服务镜像,支持将Tensorflow SavedModel格式模型及Pytorch pth格式模型自动转换为TensorRT格式模型,方便使用。
## dl_inference架构
dl_inference主要包括统一接入服务、TensorFlow推理服务、PyTorch推理、Caffe推理服务和TIS推理服务等模块,如下图所示。

## 统一接入服务
[统一接入服务](./DLPredictOnline)基于gRPC实现,作为深度学习模型在线推理请求入口,提供TensorFlow、PyTorch、Caffe和TensorRT四种模型通用调用接口,接收调用方在线推理请求,与后端部署的TensorFlow或PyTorch或Caffe模型或TensorRT模型实例进行交互,实现负载均衡策略。统一接入服务主要实现了接口统一和负载均衡两项功能,下面分别进行介绍。
深度学习模型类型多样,不同模型在线推理请求对应的输入输出数据格式不同,不仅是输入输出的key数量不同,而且数据类型也不一致。针对这一问题,统一接入服务定义TensorFlow、PyTorch、Caffe、TIS四个通用接口来兼容这四类深度学习框架所训练模型的推理请求。
接口定义如下:
```$xslt
service WpaiDLPredictOnlineService {
rpc Predict(PredictRequest) returns (PredictResponse);
rpc PytorchPredict(PytorchPredictRequest) returns (PytorchPredictResponse);
rpc CaffePredict(CaffePredictRequest) returns (CaffePredictResponse);
rpc TisPredict(TisPredictRequest) returns (TisPredictResponse);
}
```

1. TensorFlow接口:与TensorFlow-Serving推理引擎保持一致,请求协议PredictRequest对象,返回协议PredictResponse对象,统一接入服务将用户构建的PredictRequest对象请求直接透传给后端TensorFlow-Serving实例。
2. PyTorch接口:PyTorch框架没有提供对应的推理引擎,我们基于Seldon将PyTorch推理函数封装为gRPC服务,统一接入服务的PyTorch接口采用封装的PyTorch gRPC服务协议SeldonMessage作为输入和输出。SeldonMessage支持各种格式数据的传递,如String类型数据、Tensor类型数据、Bytes类型数据等。
3. Caffe接口:Caffe基于Seldon将Caffe推理函数封装为gRPC服务,跟PyTorch保持一致
4. TIS接口:与Triton Inference Server推理引擎保持一致,请求协议ModelInferRequest对象,返回协议ModelInferResponse对象, 统一接入服务将用户构建的ModelInferRequest对象请求直接透传给后端Triton Inference Server实例。
深度学习模型进行推理部署时根据线上流量大小会部署多个实例,统一接入服务需要将接收到的推理请求均匀的转发到后端实例,剔除不可用实例。统一接入服务基于动态加权轮询算法实现模型实例的请求负载均衡,根据每次请求结果来判断对应节点是否正常,来动态调整节点有效权重,若节点异常响应,如宕机、网络异常等情况,能快速降低节点有效权重,保证节点被选中的概率减少,以此来降低发送到节点上的流量比;反之节点正常响应,能快速提升节点有效权重,保证节点被选中概率增加,以此来提升发送到节点上的流量比。

## TensorFlow推理服务
TensorFlow模型推理采用TensorFlow-Serving(含MKL优化版)开源推理引擎部署,部署方式支持物理机、Docker容器。部署模型首先需要准备模型数据,支持SavedModel模型文件格式。物理机部署需要安装Tensorflow-Serving环境,步骤较为复杂,相对物理机部署方式容器化部署更简单,无需安装环境,即开即用,操作方便,从Docker hub上下载对应版本的Tensorflow-Serving镜像,使用dockerExcerpt of 9,740 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:b516131b2b88b7a9, topic:pytorch, topic:tensorflow
matched fp:b516131b2b88b7a9, topic:inference, readme:inference server