Triton教程 — 速率限制器
Triton系列教程:
- 快速开始
- 利用Triton部署你自己的模型
- Triton架构
- 模型仓库
- 存储代理
- 模型设置
- 优化
- 动态批处理
速率限制器
速率限制器管理 Triton 在模型实例上调度请求的速率。 速率限制器在 Triton 中加载的所有模型上运行,以允许跨模型优先级排序。
在没有速率限制(–rate-limit=off)的情况下,Triton 会在模型实例可用时立即安排请求(或使用动态批处理时的一组请求)的执行。 这种行为通常最适合性能。 然而,在某些情况下,同时运行所有模型可能会给服务器带来过多的负载。 例如,某些框架上的模型执行会动态分配内存。 同时运行所有此类模型可能会导致系统内存不足。
速率限制器允许推迟某些模型实例的推理执行,以便并非所有模型实例同时运行。 模型优先级用于决定接下来要调度哪个模型实例。
使用速率限制器
要启用速率限制,用户必须在启动 tritonserver 时设置 --rate-limit 选项。 有关更多信息,请参阅 tritonserver --help 发出的选项的用法。
速率限制器由为每个模型实例指定的速率限制器配置控制,如速率限制器配置中所述。 速率限制器配置包括实例组定义的模型实例的资源和优先级。
资源
资源由唯一名称和指示资源副本数的计数标识。 默认情况下,模型实例不使用速率限制器资源。 通过列出资源/计数,模型实例表明它需要模型实例设备上有许多资源可用,然后才能允许其执行。 在执行时,指定的许多资源被分配给模型实例,只有在执行结束时才会被释放。 默认情况下,资源副本的可用数量是列出该资源的所有模型实例的最大值。 例如,假设三个加载的模型实例 A、B 和 C 分别为单个设备指定以下资源要求:
A: [R1: 4, R2: 4]
B: [R2: 5, R3: 10, R4: 5]
C: [R1: 1, R3: 7, R4: 2]
默认情况下,根据这些模型实例要求,服务器将创建具有指定副本的以下资源:
R1: 4
R2: 5
R3: 10
R4: 5
这些值确保所有模型实例都可以成功调度。 可以通过使用 --rate-limit-resource
选项在命令行上显式指定资源来覆盖资源的默认值。 tritonserver --help
将提供更详细的使用说明。
默认情况下,可用资源副本是按设备提供的,模型实例的资源要求是针对与运行模型实例的设备关联的相应资源强制执行的。 --rate-limit-resource
允许用户向不同的设备提供不同的资源副本。 速率限制器还可以处理全局资源。 全局资源将在整个系统中拥有一个副本,而不是为每个设备创建资源副本。
速率限制器取决于模型配置来确定资源是否是全局的。 有关如何在模型配置中指定它们的更多详细信息,请参阅资源。
对于 tritonserver,在双设备机器上运行,调用 --rate-limit-resource=R1:10
--rate-limit-resource=R2:5:0
--rate-limit-resource=R2:8:1
- -rate-limit-resource=R3:2
,可用资源副本有:
GLOBAL => [R3: 2]
DEVICE 0 => [R1: 10, R2: 5]
DEVICE 1 => [R1: 10, R2: 8]
其中 R3 在加载的模型之一中显示为全局资源。
优先级
在资源受限的系统中,模型实例之间会争夺资源以执行其推理请求。 优先级设置有助于确定选择哪个模型实例进行下一次执行。 有关详细信息,请参阅优先级。