使用 Triton Inference Server 实现高性能服务
模型仓库、模型 config.pbtxt、并发模型实例和动态批处理。
使用 Triton Inference Server 实现高性能服务 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
什么是 Triton
NVIDIA Triton 推理服务器是一套生产级服务系统,可以在 CPU 和 GPU 上同时托管多个模型。它支持多种后端(TensorRT、ONNX、PyTorch、TensorFlow、Python),并通过一个 HTTP/gRPC API 提供服务,同时内置批处理和并发处理功能。
模型仓库
Triton 会从模型仓库加载模型:这是一个目录,其中每个模型都有自己的文件夹、数字版本子文件夹以及一个 config.pbtxt。
model_repository/
resnet50/
config.pbtxt
1/
model.onnx
bert/
config.pbtxt
1/
model.ptconfig.pbtxt:后端
config.pbtxt 文件描述 Triton 应如何运行模型。后端(或平台)会告诉 Triton 应使用哪种运行时。
name: "resnet50"
backend: "onnxruntime"
max_batch_size: 32输入和输出张量
您需要声明每个输入和输出的名称、数据类型以及张量维度(形状)。这些形状必须与模型的预期一致。前导批次维度由 max_batch_size 隐式指定。
input [
{
name: "input"
data_type: TYPE_FP32
dims: [ 3, 224, 224 ]
}
]
output [
{
name: "output"
data_type: TYPE_FP32
dims: [ 1000 ]
}
]数据类型
Triton 使用明确的张量数据类型,以便客户端和模型对字节布局达成一致:
TYPE_FP3232 位浮点数(图像中常用)TYPE_FP16半精度(在 GPU 上速度更快)TYPE_INT64NLP 使用的词元 IDTYPE_INT8量化模型
动态批处理:概念
动态批处理允许 Triton 在运行模型之前,将多个传入请求合并为一个更大的批次。GPU 处理大批次时效率高得多,因此无需更改客户端代码,就能显著提高吞吐量。
配置动态批处理
您可以在配置中启用此功能,并设置 Triton 收集请求时的等待时长。较小的 max_queue_delay_microseconds 可以用少量延迟换取更高的吞吐量。
dynamic_batching {
preferred_batch_size: [ 8, 16 ]
max_queue_delay_microseconds: 1000
}并发模型实例
默认情况下,Triton 会运行一个模型副本(实例)。通过实例组,您可以在一个或多个 GPU 上并行运行多个实例,同时处理相互独立的请求,从而提高资源利用率。
instance_group [
{
count: 2
kind: KIND_GPU
gpus: [ 0 ]
}
]批处理与并发
它们解决的是不同的问题:
- 动态批处理将多个请求合并为一次模型调用(提高每次调用的吞吐量)
- 并发实例同时运行多次模型调用(提供并行能力)
两者可以互相配合;生产环境的配置通常会同时使用它们。
perf_analyzer
perf_analyzer 是 Triton 的一个工具,它使用合成请求对服务器施加负载,并报告吞吐量(每秒推理次数)和延迟百分位数。您可以使用它找出在延迟预算内最大化吞吐量的批次和并发设置。
perf_analyzer -m resnet50 \
--concurrency-range 1:8 \
--percentile 95读取 perf_analyzer 输出
该工具会遍历不同的并发级别,并分别输出每个级别的吞吐量和延迟。您需要寻找曲线的拐点:继续增加并发量不再提高吞吐量,或导致 P95 延迟超过限制的那个点。
# Concurrency: 4, throughput: 1820 infer/sec, p95 latency: 9.1 ms
# Concurrency: 8, throughput: 1905 infer/sec, p95 latency: 17.4 ms快速检查
检验您对 Triton 的理解。
回顾
您已经学会使用 Triton 提供高性能服务:
- 模型仓库:每个模型都有独立文件夹、版本子目录和
config.pbtxt config.pbtxt声明后端、输入和输出张量的形状及数据类型- 动态批处理提高吞吐量;并发实例增加并行能力
- perf_analyzer对比吞吐量与延迟,以调优设置
常见问题解答
「使用 Triton Inference Server 实现高性能服务」课时是免费的吗?
是的 — 「使用 Triton Inference Server 实现高性能服务」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「使用 Triton Inference Server 实现高性能服务」这节课中我会学到什么?
模型仓库、模型 config.pbtxt、并发模型实例和动态批处理。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 Triton Inference Server 实现高性能服务」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 Docker 容器化机器学习模型
- 云部署:AWS SageMaker
- 使用 Triton Inference Server 实现高性能服务
- 扩展与自动扩展模型端点