当前位置: 首页 > news >正文

Triton教程 --- 动态批处理

Triton教程 — 动态批处理

在这里插入图片描述

Triton系列教程:

  1. 快速开始
  2. 利用Triton部署你自己的模型
  3. Triton架构
  4. 模型仓库
  5. 存储代理
  6. 模型设置
  7. 优化
  8. 动态批处理

Triton 提供了动态批处理功能,将多个请求组合在一起执行同一模型以提供更大的吞吐量。 默认情况下,只有当每个输入在请求中具有相同的形状时,请求才能被动态批处理。 为了在输入形状经常变化的情况下利用动态批处理,客户端需要将请求中的输入张量填充为相同的形状。

参差不齐的批处理是一种通过允许用户指定哪些输入不需要形状检查来避免显式填充的功能。 用户可以通过在模型配置中设置 allow_ragged_batch 字段来指定此类输入(参差不齐的输入):

...
input [{name: "input0"data_type: TYPE_FP32dims: [ 16 ]allow_ragged_batch: true}
]
...

如何在一批请求中处理参差不齐的输入取决于后端实现。 ONNX Runtime 后端、TensorFlow 后端、PyTorch 后端和 TensorRT 后端等后端要求模型将参差不齐的输入作为一维张量接受。 这些后端将请求输入连接到一维张量中。

由于连接的输入不跟踪每个请求的开始和结束索引,因此后端通常要求模型具有额外的输入,批输入,描述有关形成的批的各种信息。

批量输入

批输入通常与参差不齐的输入结合使用,以提供有关每个批元素的信息,例如批中每个请求的输入元素计数。 批次输入由 Triton 生成,而不是在请求中提供,因为信息只有在动态批次形成后才能最终确定。

除了元素计数,用户还可以指定其他批输入类型,详情请参阅 protobuf 文档。

参差不齐的输入和批量输入的例子

如果您的模型接受 1 个可变长度输入张量 INPUT,形状为 [ -1, -1 ]。 第一个维度是批量维度,第二个维度是变长内容。 当客户端发送 3 个形状为 [ 1, 3 ]、[ 1, 4 ]、[ 1, 5 ] 的请求时。 为了利用动态批处理,实现此模型的直接方法是期望输入形状 [-1, -1] 并假设所有输入都被填充到相同的长度,以便所有请求都变成形状 [1, 5],因此 Triton 可以 批处理并将它们作为单个 [ 3, 5 ] 张量发送到模型。 在这种情况下,填充张量和填充内容的额外模型计算将产生开销。 下面是输入配置:

max_batch_size: 16
input [{name: "INPUT"data_type: TYPE_FP32dims: [ -1 ]}
]

使用 triton 参差不齐的批处理,模型将实现为期望输入形状 [-1] 和一个额外的批输入、索引、形状 [-1],模型应该使用它来解释输入中的批元素。 对于这样的模型,客户端请求不需要填充,可以按原样发送(形状为[1, 3],[1, 4],[1, 5])。 上面讨论的后端会将输入批处理为形状为 [12] 的张量,其中包含请求的 3 + 4 + 5 级联。 Triton 还创建了形状为 [ 3 ] 且值为 [ 3, 7, 12 ] 的批量输入张量,它给出了每个批量元素结束的输入张量的偏移量。 下面是输入配置:

max_batch_size: 16
input [{name: "INPUT"data_type: TYPE_FP32dims: [ -1 ]allow_ragged_batch: true}
]
batch_input [{kind: BATCH_ACCUMULATED_ELEMENT_COUNTtarget_name: "INDEX"data_type: TYPE_FP32source_input: "INPUT"}
]

上面的示例使用 BATCH_ACCUMULATED_ELEMENT_COUNT 类型的参差不齐的批处理。 protobuf 文档中描述的其他类型的操作类似。

http://www.lryc.cn/news/93891.html

相关文章:

  • Python的并行(持续更新)
  • chatgpt赋能python:Python实现Fibonacci数列
  • 开环模块化多电平换流器仿真(MMC)N=6
  • java springboot整合MyBatis联合查询
  • windows2022证书配置.docx
  • HCIP网络笔记分享——IA回顾及OSPF协议
  • 网络:IP地址、子网掩码、网络地址、广播地址、网段、网关
  • 编程的未来 - 还有未来么?
  • 从零开始搭建群众权益平台(二)
  • Mysql之数据备份
  • 【数据库数据恢复】SQL Server数据表结构损坏的数据恢复案例
  • C语言/C++ 之 打飞机游戏
  • 在 Docker 中部署 Mino 并挂载配置文件
  • 无限脉动:释放音乐和区块链在音乐领域的力量
  • 读发布!设计与部署稳定的分布式系统(第2版)笔记09_一窝蜂和容量
  • 详解java定时任务
  • PCIe卡设计方案:单路12Gsps 3G 带宽模拟信号源PCIe卡
  • 第1章 计算机网络和因特网
  • QT入门基础知识
  • Leetcode---350周赛
  • Django通过Nginx和uWSGI实现负载均衡
  • 单元测试框架——Junit5
  • centos 系列添加 yum 源
  • [Hive高级特性与 DDL和DML语法]
  • Web服务器群集:Web基础与HTTP协议
  • cmd命令常用速记
  • Python网络爬虫基础进阶到实战教程
  • 树莓派使用VNC、SSH、Xrdp等方式进行远程控制的方法和注意事项
  • C++ 第二弹封装-类和对象
  • 浅析 GeoServer CVE-2023-25157 SQL注入