[Triton课程笔记] 2.2.1 Python Backend

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

吐槽一下,英伟达的分视频真的有病,感觉是按照时长硬切,没什么逻辑。

一、大纲

两大部分:

  • Python Backend
  • Business Logic Scripting(BLS)

二、回顾

三、python backend

3.1 为什么需要python backend

  • 预处理、后处理一般用python;
  • 已经用python写好的处理单元,需要放Triton上去;
  • 比C++的更容易实现,无需编译;

3.2 工作原理

组件:

  • Python backend(C++)为代理;
  • Python model(Python)才是真正需要实现的东西,由进程进行管理;
  • 两者通过共享内存进行通信;

通信:

  • Health flag:标志Python stub process是否是否健康;
  • Request MessageQ:消息队列,用来从Python Backend传数据到Python stub process去运行;
  • Response MessageQ:消息队列,用来将Python stub process运行完的结果传输给Python Backend;

3.3 如何实现Python Backend

实现三个关键接口:

  • initialize:初始化操作;
  • excute:执行操作;
  • finalize:销毁操作;

3.4 简单例子

例子1 使用onnxruntime推理:

使用Python Backend 通过onnxruntime去运行Resnet50模型;

例子2,使用pytorch进行处理:

在Python Backend中调用pytorch。

需要先将pb Tensor 转为 pytorch Tensor;

处理完后,再把pytorch Tensor转回pb Tensor;

3.5 PB Tensor Placement

PB Tensor Placement究竟是放GPU还是GPU上?

  • 传给Python backend的Tensor默认复制到CPU上
  • 如果需要保持在GPU上,需要在config文件中设置参数:
    • parameters:{ key: "FORCE_CPU_ONLY_INPUT_TENSORS" value: {string_value: "no"}}
  • 如何查看tensor Placement是否在cpu上:
    • pb_utils.Tensor.is_cpu()
posted @ 2024-06-26 15:08  大师兄啊哈  阅读(153)  评论(0编辑  收藏  举报