追踪扩展#

本文档描述了 Triton 的追踪扩展。追踪扩展使客户端能够在 Triton 运行时配置追踪设置。由于支持此扩展,Triton 在其服务器元数据的扩展字段中报告“trace”。

HTTP/REST#

在本文档中显示的所有 JSON 模式中,$number$string$boolean$object$array 指的是基本的 JSON 类型。#optional 表示一个可选的 JSON 字段。

Triton 在以下 URL 公开追踪端点。客户端可以使用 HTTP GET 请求检索当前的追踪设置。HTTP POST 请求将修改追踪设置,端点将在成功时返回更新后的追踪设置,或在失败时返回错误。可以提供可选的模型名称以获取或设置特定模型的追踪设置。

GET v2[/models/${MODEL_NAME}]/trace/setting

POST v2[/models/${MODEL_NAME}]/trace/setting

追踪设置响应 JSON 对象#

成功的追踪设置请求由 200 HTTP 状态代码指示。响应对象,标识为 $trace_setting_response,在每次成功的追踪设置请求的 HTTP body 中返回。

$trace_setting_response =
{
  $trace_setting, ...
}

$trace_setting = $string : $string | [ $string, ...]

每个 $trace_setting JSON 描述一个“name”/“value”对,其中“name”是追踪设置的名称,“value”是设置值的 $string representation,或者对于某些设置,是一个 $string 数组。目前定义了以下追踪设置

  • “trace_file” : 将保存追踪输出的文件。如果设置了“log_frequency”,这将是保存追踪输出的文件的文件名前缀,生成的文件名为 "${trace_file}.0"、"${trace_file}.1"、...,详见下文的追踪设置“log_frequency”。

  • “trace_level” : 追踪级别。“OFF”禁用追踪,“TIMESTAMPS”追踪时间戳,“TENSORS”追踪张量。此值是一个字符串数组,用户可以指定多个级别以追踪多种信息。

  • “trace_rate” : 追踪采样率。该值表示从多少个请求中采样一个追踪。例如,如果追踪速率为“1000”,则每 1000 个请求将采样 1 个追踪。

  • “trace_count” : 要采样的剩余追踪数量。一旦该值变为“0”,将不再为此追踪设置采样追踪,并且收集的追踪将以“log_frequency”中描述的格式写入索引追踪文件,而与“log_frequency”状态无关。如果该值为“-1”,则要采样的追踪数量将不受限制。

  • “log_frequency” : Triton 将追踪输出记录到文件的频率。如果该值为“0”,则 Triton 仅在关闭时将追踪输出记录到 ${trace_file}。否则,当 Triton 收集到指定数量的追踪时,它会将追踪输出记录到 ${trace_file}.${idx}。例如,如果日志频率为“100”,当 Triton 收集到第 100 个追踪时,它会将追踪记录到文件 "${trace_file}.0",当它收集到第 200 个追踪时,它会将第 101 个到第 200 个追踪记录到文件 "${trace_file}.1"。请注意,当更新“trace_file”设置时,文件索引将重置为 0。

追踪设置响应 JSON 错误对象#

失败的追踪设置请求将由 HTTP 错误状态(通常为 400)指示。HTTP body 必须包含 $trace_setting_error_response 对象。

$trace_setting_error_response =
{
  "error": $string
}
  • “error” : 错误的描述性消息。

追踪设置请求 JSON 对象#

通过 HTTP POST 向追踪端点发出追踪设置请求。在相应的响应中,HTTP body 包含响应 JSON。成功的请求由 200 HTTP 状态代码指示。

请求对象,标识为 $trace_setting_request,必须在 HTTP body 中提供。

$trace_setting_request =
{
  $trace_setting, ...
}

$trace_setting JSON 在 追踪设置响应 JSON 对象 中定义,仅更新指定的设置。除了响应 JSON 对象中提到的值之外,JSON null 值可用于删除追踪设置的规范。在这种情况下,将使用当前的全局设置。同样,如果这是初始化模型追踪设置的第一个请求,对于请求中未指定的追踪设置,将使用当前的全局设置。

GRPC#

对于追踪扩展,Triton 实现了以下 API

service GRPCInferenceService
{
  …

  // Update and get the trace setting of the Triton server.
  rpc TraceSetting(TraceSettingRequest)
          returns (TraceSettingResponse) {}
}

追踪设置 API 返回最新的追踪设置。错误由请求返回的 google.rpc.Status 指示。OK 代码表示成功,其他代码表示失败。追踪设置的请求和响应消息是

message TraceSettingRequest
{
  // The values to be associated with a trace setting.
  // If no value is provided, the setting will be clear and
  // the global setting value will be used.
  message SettingValue
  {
    repeated string value = 1;
  }

  // The new setting values to be updated,
  // settings that are not specified will remain unchanged.
  map<string, SettingValue> settings = 1;

  // The name of the model to apply the new trace settings.
  // If not given, the new settings will be applied globally.
  string model_name = 2;
}

message TraceSettingResponse
{
  message SettingValue
  {
    repeated string value = 1;
  }

  // The latest trace settings.
  map<string, SettingValue> settings = 1;
}

追踪设置在 追踪设置响应 JSON 对象 中提到。请注意,如果这是初始化模型追踪设置的第一个请求,对于请求中未指定的追踪设置,该值将从当前的全局设置复制。