速率限制器#

速率限制器管理 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 在加载的模型之一中显示为全局资源。

优先级#

在资源受限的系统中,模型实例之间将存在资源争用,以执行其推理请求。优先级设置有助于确定要选择哪个模型实例进行下一次执行。有关更多信息,请参阅 优先级