triton inference server架构原理(一)

686 阅读2分钟

1 推理系统架构

整体上推理服务分为客户端、服务端,对应图中client、server。这里主要分析服务端架构。
推理服务系统必须是一个k8s集群,原因是推理服务系统中每个小服务需要生命周期管理、弹性扩容、自动运维(运维、编排)。 image.png

推理服务系统组成:

  • 负载均衡:局部服务inference会启动很多个实例,LB负责均衡分配请求到inference服务;
  • 模型仓库:管理模型权重文件和模型输入输出;
  • metric sevice:观测模型宏观、微观数据
  • inferenc server:推理服务,负责单节点推理服务。
    • 支持异构:cpu、gpu、tpu等
    • 支持多框架:tensorrt engine、pytorch等

推理系统相关几个概念:

  • K8S Cluster: 推理服务的数据中心侧,多节点、多卡、多个triton inference容器组成的集群;
  • Triton: 单节点推理服务(单GPU卡或多卡,typically within one container as a service);
  • TensorRT: 加速库,library

2 Triton inferenc架构

image.png

triton推理服务基本功能:

  • 支持多推理框架(TensorFlow、Pytorch、TensorRT、OnnxRT、custom backends)
  • 支持异构 CPU、GPU、multi-GPU
  • 并行推理(CPU角度)
  • 支持http、grpc APIs
  • 能集成到k8s集群,监控、弹性伸缩
  • 模型管理,加载、卸载、更新
  • 使用友好,NGC容器镜像仓库

scheduler模块:推理服务请求队列调度(不是进程、线程调度)

3 Triton如何设计

从推理生命周期,考虑推理服务的设计思路

  • 支持多框架:调用不同框架backends,backends核心思想:推理服务软件和深度学习框架解耦合方式。
  • 基本功能
    • 管理backends
    • 模型管理
    • 并发模型推理(多线程角度)
    • 推理服务队列分发和调度
    • 推理服务生命周期管理(推理请求管理、推理结果管理)
  • GRPC相关

从模型角度,考虑推理服务的设计思路

  • 单一简单模型:例如CV模型
  • 组队模型,pipline
  • 有状态的模型:推理依赖之前状态,例如NLP

参考:
www.bilibili.com/video/BV11Z…