트레이싱 확장

트레이싱 확장 (Trace Extension)

이 문서는 Triton의 트레이스 확장을 설명해요. 트레이스 확장은 클라이언트가 Triton 실행 중에 트레이스 설정을 구성할 수 있게 해줍니다. 이 확장이 지원되기 때문에 Triton은 Server Metadata의 extensions 필드에 "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 본문에 반환돼요.

$trace_setting_response =
{
  $trace_setting, ...
}

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

$trace_setting JSON은 "name"/"value" 쌍을 나타내는데, "name"은 트레이스 설정 이름이고 "value"는 설정 값의 $string 표현(일부 설정은 $string 배열)이에요. 현재 정의된 트레이스 설정은 다음과 같습니다.

  • "trace_file" : 트레이스 출력을 저장할 파일. "log_frequency"가 설정되면 이 값은 트레이스 출력을 저장할 파일들의 접두사가 되어 "${trace_file}.0", "${trace_file}.1", ... 형식의 파일이 생겨요. 자세한 내용은 아래 "log_frequency" 참고.
  • "trace_level" : 트레이스 수준. "OFF"는 트레이싱 비활성, "TIMESTAMPS"는 타임스탬프 트레이스, "TENSORS"는 텐서 트레이스. 사용자가 여러 수준을 지정해 여러 정보를 트레이스할 수 있도록 문자열 배열 값.
  • "trace_rate" : 트레이스 샘플링 비율. 값은 몇 개 요청마다 트레이스 1개를 샘플링할지 나타냄. 예를 들어 "1000"이면 1000개 요청마다 트레이스 1개를 샘플링.
  • "trace_count" : 샘플링할 남은 트레이스 수. 값이 "0"이 되면 더 이상 트레이스 설정으로 트레이스를 샘플링하지 않고, 수집된 트레이스는 "log_frequency" 상태와 무관하게 "log_frequency"에 설명된 형식으로 인덱스된 트레이스 파일에 기록. 값이 "-1"이면 샘플링할 트레이스 수에 제한이 없음.
  • "log_frequency" : Triton이 트레이스 출력을 파일에 기록하는 빈도. 값이 "0"이면 Triton은 종료할 때만 ${trace_file}에 트레이스 출력을 기록. 그 외에는 지정된 수의 트레이스를 수집할 때마다 ${trace_file}.${idx}에 기록. 예를 들어 log frequency가 "100"이면 Triton이 100번째 트레이스를 수집할 때 ${trace_file}.0에 기록하고, 200번째 트레이스를 수집할 때 101~200번째 트레이스를 ${trace_file}.1에 기록. "trace_file" 설정이 갱신되면 파일 인덱스가 0으로 리셋된다는 점에 주의.

트레이스 설정 응답 JSON 오류 객체

실패한 트레이스 설정 요청은 HTTP 오류 상태(대개 400)로 표시됩니다. HTTP 본문은 $trace_setting_error_response 객체를 담아야 해요.

$trace_setting_error_response =
{
  "error": $string
}
  • "error" : 오류에 대한 설명 메시지.

트레이스 설정 요청 JSON 객체

트레이스 설정 요청은 트레이스 엔드포인트에 HTTP POST로 보냅니다. 해당 응답에서 HTTP 본문은 응답 JSON을 담아요. 성공적인 요청은 200 HTTP 상태 코드로 표시됩니다.

요청 객체는 $trace_setting_request로 식별되며 HTTP 본문에 제공되어야 합니다.

$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) {}
}

Trace Setting API는 최신 트레이스 설정을 반환합니다. 오류는 요청에 대해 반환된 google.rpc.Status로 표시됩니다. OK 코드는 성공, 그 외 코드는 실패를 나타내요. Trace Setting의 요청·응답 메시지는 다음과 같습니다.

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 객체에 언급돼 있어요. 모델 트레이스 설정을 초기화하는 첫 요청이라면, 요청에 지정되지 않은 트레이스 설정에 대한 값이 현재 전역 설정에서 복사된다는 점에 유의하세요.

출처: 공식 문서 - Trace Extension

더 알아보기 (Learn more)