选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用 Triton Inference Server 部署模型

聚焦模式
使用 Triton Inference Server 部署模型 - Amazon SageMaker

Triton Inference Server 是一款开源推理服务软件,可简化 AI 推理操作。使用 Triton,您可以部署使用多种深度学习和机器学习框架构建的任意模型,包括 TensorRT、TensorFlow、PyTorch、ONNX、OpenVINO、Python、RAPIDS FIL 等。

SageMaker Triton 容器可协助您在 SageMaker 托管平台上部署 Triton Inference Server,用于在生产环境中提供经过训练的模型。它支持 SageMaker 的不同运行模式。有关 SageMaker 上可用的 Triton Inference Server 容器列表,请参阅 NVIDIA Triton 推理容器(仅限 SM 支持的容器)

对于端到端笔记本示例,我们建议您查看 amazon-sagemaker-examples 存储库

托管模式

Triton 容器支持以下 SageMaker 托管模式:

  • 单模型端点

    • 这是 SageMaker 的默认操作模式。在此模式下,Triton 容器可以加载单个模型或单个组合模型。

    • 模型名称必须作为容器环境的属性传递,该属性包括在 CreateModel SageMaker API 调用中。用于传入模型名称的环境变量是 SAGEMAKER_TRITON_DEFAULT_MODEL_NAME

  • 带组合的单模型端点

    • Triton Inference Server 支持模型的组合,即管道或 DAG(Directed Acyclic Graph,有向无环图)。虽然从技术上讲,一个组合由多个模型组成,但在默认的单模型端点模式下,SageMaker 可以将组合正本(代表管道的元模型)视为要加载的主模型,并可随后加载关联的模型。

    • 必须使用组合正本的模型名称来加载模型。名称必须作为容器环境的属性传递,该属性包括在 CreateModel SageMaker API 调用中。用于传入模型名称的环境变量是 SAGEMAKER_TRITON_DEFAULT_MODEL_NAME

  • 多模型端点

    • 在此模式下,SageMaker 可以在单个端点上提供多个模型。您可以通过将环境变量 ‘MultiModel’: true 指定作为容器环境的属性来使用此模式,该属性包括在 CreateModel SageMaker API 调用中。

    • 默认情况下,实例启动时不会加载任何模型。要对特定模型运行推理请求,请将相应模型的 *.tar.gz 文件指定为 InvokeEndpoint SageMaker API 调用的 TargetModel 属性的参数。

  • 带组合的多模型端点

    • 在此模式下,SageMaker 的功能与多模型端点模式下相同。但是,SageMaker Triton 容器可以加载多个组合模型,这意味着多个模型管道可以在同一个实例上运行。SageMaker 将每个组合视为一个模型,通过将对应的 *.tar.gz 存档指定为 TargetModel 可以调用每个模型的集合正本。

    • 为了在动态内存 LOADUNLOAD 期间更好地管理内存,建议您使用较小的集合大小。

推理负载类型

Triton 支持两种通过网络发送推理负载的方法 – jsonbinary+json(即二进制编码的 json)。这两种情况下的 JSON 负载都包括数据类型、形状和实际的推理请求张量。请求张量必须是二进制张量。

使用 binary+json 格式,您必须在标头中指定请求元数据的长度,以允许 Triton 正确解析二进制负载。在 SageMaker Triton 容器中,使用以下自定义 Content-Type 标头完成此设置:application/vnd.sagemaker-triton.binary+json;json-header-size={}。这与在独立 Triton Inference Server 上使用 Inference-Header-Content-Length 标头不同,因为 SageMaker 中不允许使用自定义标头。

使用 config.pbtxt 来设置模型配置

对于 SageMaker 上的 Triton Inference Server,每个模型都必须包含一个 config.pbtxt 文件,至少指定模型的以下配置:

  • name:虽然此项对于在 SageMaker 之外运行的模型为可选,但建议您始终为要在 SageMaker 上的 Triton 中运行的模型提供一个名称。

  • platform 和/或 backend:设置后端对于指定模型类型至关重要。一些后端还会进一步分类,例如 tensorflow_savedmodel tensorflow_graphdef。除了 platform 键之外,此类选项还可以指定为 backend 键的一部分。最常见的后端是 tensorrtonnxruntimetensorflowpytorchpythondalifilopenvino

  • input:为输入指定三个属性:namedata_typedims(形状)。

  • output:为输出指定三个属性:namedata_typedims(形状)。

  • max_batch_size:将批次大小设置为大于或等于 1 的值,以指示 Triton 应在模型中使用的最大批次大小。

有关配置 config.pbtxt 的更多详细信息,请参阅 Triton 的 GitHub 存储库。Triton 提供了几种配置用于调整模型行为。一些最常见和最重要的配置选项包括:

  • instance_groups:实例组有助于指定给定模型的数量和位置。它们具有属性 countkindgpus(在 kindKIND_GPU 时使用)。count 属性等于工作线程数。对于常规模型服务,每个工作线程都有自己的模型副本。同样,在 Triton 中,count 指定每个设备的模型副本数。例如,如果 instance_group 类型为 KIND_CPU,则 CPU 有 count 个模型副本。

    注意

    在 GPU 实例上,instance_group 配置对每个 GPU 设备应用。例如,除非您明确指定应使用哪些 GPU 设备加载模型,否则将在每个 GPU 设备上放置 count 个模型副本。

  • dynamic_batchingsequence_batching:动态批处理用于无状态模型,序列批处理用于有状态模型(您希望每次都将请求路由到同一个模型实例)。批处理调度程序启用各个模型的队列,根据批处理配置,这有助于提高吞吐量。

  • ensemble:组合模型表示一个或多个模型的管道以及这些模型之间输入和输出张量的连接。可以通过将 platform 指定为 ensemble 来进行配置。组合配置只是模型管道的表示形式。在 SageMaker 上,一个组合下的所有模型都被视为集合模型的依赖项,并在 SageMaker 指标中视为单个模型,例如 LoadedModelCount

向 Amazon CloudWatch 发布默认 Triton 指标

NVIDIA Triton 推理容器在端口 8002(可配置)上公开不同模型以及 Triton Inference Server 中使用 GPU 的指标。有关可用默认指标的完整详细信息,请参阅 Triton Inference Server 指标的 GitHub 页面。这些指标采用 Prometheus 格式,可以使用 Prometheus 抓取程序配置进行抓取。

从版本 v23.07 开始,SageMaker Triton 容器支持通过指定一些环境变量将这些指标发布到 Amazon CloudWatch。为了抓取 Prometheus 指标,SageMaker Triton 容器利用 Amazon CloudWatch 代理。

收集指标时所要指定的必需环境变量如下所示:

环境变量 描述 示例值

SAGEMAKER_TRITON_ALLOW_METRICS

指定此选项可允许 Triton 将指标发布到其 Prometheus 端点。

"true"

SAGEMAKER_TRITON_PUBLISH_METRICS_TO_CLOUDWATCH

指定此选项可开始进行必要的预检查,以便向 Amazon CloudWatch 发布指标。

"true"

SAGEMAKER_TRITON_CLOUDWATCH_LOG_GROUP

指定此选项以指向指标所写入的日志组。

"/aws/SageMaker/Endpoints/TritonMetrics/SageMakerTwoEnsemblesTest"

SAGEMAKER_TRITON_CLOUDWATCH_METRIC_NAMESPACE

指定此选项以指向要在其中查看和绘制指标的指标命名空间。

"/aws/SageMaker/Endpoints/TritonMetrics/SageMakerTwoEnsemblesPublicTest"

SAGEMAKER_TRITON_METRICS_PORT

将此项指定为 8002 或任何其他端口。如果 SageMaker 没有屏蔽指定端口,则使用该端口。否则,将自动选择另一个未屏蔽端口。

"8002"

在 SageMaker 上使用 Triton 发布指标时,请记住以下限制:

  • 虽然您可以通过 C-API 和 Python 后端(v23.05 及更高版本)生成自定义指标,但目前不支持将这些指标发布到 Amazon CloudWatch。

  • 在 SageMaker 多模型端点 (MME) 模式下,Triton 在需要启用模型命名空间的环境中运行,因为每个模型(组合模型除外)都被视为在自己的模型存储库中。目前,这会对指标造成限制。启用模型命名空间后,Triton 不会区分属于不同组合的两个同名模型的指标。要解决这个问题,请确保所部署的每个模型都有一个唯一的名称。这样做还可以更轻松地在 CloudWatch 中查找您的指标。

环境变量

下表列出了 SageMaker 上的 Triton 支持的环境变量。

环境变量 描述 类型 可能的值

SAGEMAKER_MULTI_MODEL

允许 Triton 在 SageMaker 多模型端点模式下运行。

布尔值

true, false

SAGEMAKER_TRITON_DEFAULT_MODEL_NAME

指定要在 SageMaker 单模型(默认)模式下加载的模型。对于组合模式,请指定组合正本的名称。

String

<model_name> 在 config.pbtxt 中指定。

SAGEMAKER_TRITON_PING_MODE

'ready' 是 SageMaker 单模型模式下的默认模式,'live' 是 SageMaker 多模型端点模式下的默认模式。

String

ready, live

SAGEMAKER_TRITON_DISABLE_MODEL_NAMESPACING

在 SageMaker Triton 容器中,此项默认设置为 true

布尔值

true, false

SAGEMAKER_BIND_TO_PORT

在 SageMaker 上,默认端口为 8080。在多容器场景中,您可以将该端口自定义为其他端口。

String

<port_number>

SAGEMAKER_SAFE_PORT_RANGE

此项由 SageMaker 平台在使用多容器模式时设置。

String

<port_1><port_2>

SAGEMAKER_TRITON_ALLOW_GRPC

虽然 SageMaker 目前不支持 GRPC,但如果您在自定义反向代理前使用 Triton,则可以选择启用 GRPC。

布尔值

true, false

SAGEMAKER_TRITON_GRPC_PORT

GRPC 的默认端口是 8001,不过您可以进行更改。

String

<port_number>

SAGEMAKER_TRITON_THREAD_COUNT

您可以设置默认 HTTP 请求处理程序线程的数量。

String

<number>

SAGEMAKER_TRITON_LOG_VERBOSE

在 SageMaker 上默认为 true,但您可以选择禁用此选项。

布尔值

true, false

SAGEMAKER_TRITON_LOG_INFO

在 SageMaker 上默认为 false

布尔值

true, false

SAGEMAKER_TRITON_LOG_WARNING

在 SageMaker 上默认为 false

布尔值

true, false

SAGEMAKER_TRITON_LOG_ERROR

在 SageMaker 上默认为 false

布尔值

true, false

SAGEMAKER_TRITON_SHM_DEFAULT_BYTE_SIZE

指定 Python 后端的 shm 大小,以字节为单位。默认值为 16 MB,但可以增加。

String

<number>

SAGEMAKER_TRITON_SHM_GROWTH_BYTE_SIZE

指定 Python 后端的 shm 增长大小,以字节为单位。默认值为 1 MB,但可以增加以提供更大的增量。

String

<number>

SAGEMAKER_TRITON_TENSORFLOW_VERSION

默认值为 2。Triton 不再支持 Triton v23.04 中的 Tensorflow 2。您可以为以前的版本配置此变量。

String

<number>

SAGEMAKER_TRITON_MODEL_LOAD_GPU_LIMIT

限制模型加载所能使用的最大 GPU 内存百分比,以便让其余部分可用于推理请求。

String

<number>

SAGEMAKER_TRITON_ALLOW_METRICS

在 SageMaker 上默认为 false

布尔值

true, false

SAGEMAKER_TRITON_METRICS_PORT

默认端口为 8002。

String

<number>

SAGEMAKER_TRITON_PUBLISH_METRICS_TO_CLOUDWATCH

在 SageMaker 上默认为 false。将此变量设置为 true 以允许将 Triton 的默认指标推送到 Amazon CloudWatch。如果启用此选项,则在将指标推送到您的账户时,您需要承担 CloudWatch 费用。

布尔值

true, false

SAGEMAKER_TRITON_CLOUDWATCH_LOG_GROUP

如果您已启用向 CloudWatch 发布指标,则此项必需。

String

<cloudwatch_log_group_name>

SAGEMAKER_TRITON_CLOUDWATCH_METRIC_NAMESPACE

如果您已启用向 CloudWatch 发布指标,则此项必需。

String

<cloudwatch_metric_namespace>

SAGEMAKER_TRITON_ADDITIONAL_ARGS

在启动 Triton 服务器时附上任何其他参数。

String

<additional_args>

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。