[Triton课程笔记] 1.1.2 Triton的设计

课程链接:https://www.bilibili.com/video/BV11Z4y1q7vW/?spm_id_from=333.788&vd_source=c2a322357481107ab7f418b1ae9ce618

这节主要介绍Triton是如何设计的。

一、从推理生命周期角度

  • 多模型框架支持——将每个模型的推理任务解耦交给不同的框架——Backends;
  • 功能角度
  • backend管理;
  • 模型管理;
  • 并发执行(多线程)——实例管理;
  • 推理服务请求队列的分发和调度;
  • 推理服务生命周期管理
    • 推理请求管理,预处理
    • 推理结果管理,后处理
  • GRPC服务

二、从模型角度

  • 单一无依赖的模型——分类,检测等网络;
  • 模型组合,pipeline,下一个模型基于上一个模型的结果进行推理;
  • 有状态的模型——语言模型,上下文;

三、展示

单一模型,启动多线程(实际是多进程)进行推理:

多模型,多线程推理:

单一模型多线程,对服务推理速度有很好推理效果(跟图一的意思差不多):

四、理解模型类型是关键

  • 无状态模型
    • CV模型;
    • 均匀分配调度,动态batch;
  • 有状态(推理结果基于前面的队列)
    • NLP模型;
    • 基于序列的调度:将同一推理队列绑定到一个推理服务实例上。
      • Direct:推理队列按原有的顺序去进出;
      • Oldest:推理队列内部顺序可以被打乱;
  • 组合的
    • pipeline:如前处理-推理-后处理,三个模型;
    • 每个模型可以有自己的调度器;

五、动态batch调度器

对请求队列进行动态batch处理:

六、流式推理请求

举例语音的场景,流式处理:进来一个语音就需要处理一个,而不能等全部拿到之后再处理。

七、模型组合的情况

图片进入,预处理模型处理,处理后的图片,同时分类模型和分割模型。

八、framework backend和customer backend 

  • framework backend由其他深度学习框架定义,调用其他框架的api去实现;
  • customer backend,由用户去实现。
posted @ 2024-06-26 11:20  大师兄啊哈  阅读(79)  评论(0编辑  收藏  举报