模型部署架构,以Triton Inference Server(TensorRT)为例

模型部署架构Triton Inference Server(TensorRT)

模型训练只是DeepLearning的一小部分,如《Hidden Technical Debt in Machine Learning Systems》NIPS2015机器学习系统的技术债
书中所说。

现有几种搭建框架

Python:TF+Flask+Funicorn+Nginx
FrameWork:TF serving,TorchServe,ONNX Runtime
Intel:OpenVINO,NVNN,QNNPACK(FB的)
NVIDIA:TensorRT Inference Server(Triton),DeepStream

主要说现阶段比较主流的

TensorRT
硬件T4的GPU(也可嵌入端等NVIDIA设备)
软件TensorRT (Triton)2020年TensorRT改名为Triton

模型部署架构,以Triton Inference Server(TensorRT)为例_第1张图片

T4上,相对CPU ResNet-50jiasu 快27倍
模型部署架构,以Triton Inference Server(TensorRT)为例_第2张图片

输入可以是TF,MXNet,Pytorch等

主要优化技术

  1. 混合精度
  2. 图优化,层融合
  3. 动态显存管理
  4. 多种输入同时执行(多输入合在一起,多模型并发等)

图优化部分:
垂直层融合,水平也层融合,近乎减少一半显存和计算(V100GPU)
VGG Net从43层融合到27层
V100上测试比普通Tensorflow快几十倍,ResNet50控制在7ms
模型部署架构,以Triton Inference Server(TensorRT)为例_第3张图片

Triton Inference Server

最大化GPU运行时间
单GPU多模型
可异构加入别的框架
可以Docker等环境
开源,可定制化

主要功能

  1. 密集输入时自动合成batch,平衡延迟latency和吞吐量。自动并发小模型(不会有多进程交流的困难)

  2. 支持CPU推理,可集成OpenVINO等其他异构

  3. 原生支持多种模型,可以原生TF+Pytorch模型同时来

  4. 内存共享,库版本管理机制。
    model-ensemble多个模型串联,模型A输出给模型B输入的优化

Triton推断服务结构

通过Http返回json,内部gRPC等调用方式
(自动合并batch输入即动态分批,多卡自动分配任务,多种后端,热更新模型,收集运行信息,支持Python、C++,等。。。)
模型部署架构,以Triton Inference Server(TensorRT)为例_第4张图片

模型控制与配置
platform
input
output
vresion_policy
等,格式和protobuf类似
配置文件控制模型model-ensemble的pipeline

缺:推出比较晚,文档,生态还在完善中

后记

看完这些,希望你已经没有想看源码的冲动了。
如果是这样的话,不妨点个赞吧。

为何要点赞?

如果本文解决了你的困惑,不妨点个赞鼓励一下。
不管你信不信,也不管你同不同意,实际上,你的每一次点赞都标志着你自身的进步。而打赏乃是点赞的高级形式
曾经有无数个点赞的机会,但是我都没有好好珍惜,假如时光可以倒流,我一定为他们也为自己点赞。

你可能感兴趣的:(深度学习,解决问题,人工智能,机器学习,推理框架,加速)