0Pricing
Learn AI with Python · 课时

使用 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.pt

config.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_FP32 32 位浮点数(图像中常用)
  • TYPE_FP16 半精度(在 GPU 上速度更快)
  • TYPE_INT64 NLP 使用的词元 ID
  • TYPE_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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 Docker 容器化机器学习模型
  2. 云部署:AWS SageMaker
  3. 使用 Triton Inference Server 实现高性能服务
  4. 扩展与自动扩展模型端点
← 返回 Learn AI with Python