追踪扩展#
本文档描述了 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 对象 中提到。请注意,如果这是初始化模型追踪设置的第一个请求,对于请求中未指定的追踪设置,该值将从当前的全局设置复制。