NVIDIA Triton Inference Server with Prometheus Metric 수집
- NVIDIA Triton Inference Server는 모델 성능 및 서버 상태를 모니터링하기 위해 Prometheus 매트릭을 제공합니다.
- 이러한 매트릭을 통해 모델의 효율성을 분석하고 서버의 상태를 실시간으로 모니터링할 수 있습니다.
NVIDIA Triton Inference Server내 Prometheus 설정
NVIDIA Triton Inference Server에서 Prometheus 매트릭을 수집하려면, 서버 설정 파일 또는 명령줄 인자를 통해 Prometheus 매트릭스를 활성화해야 합니다. 기본적으로 Triton은 Prometheus 매트릭을 지원하며, 다음 단계로 설정을 완료할 수 있습니다.
1. Triton Inference Server에서 Prometheus 매트릭 활성화
Triton은 기본적으로 8002 포트를 통해 Prometheus 매트릭을 노출합니다. 서버 실행 시 해당 포트를 열어주어야 합니다.
예시 명령:
tritonserver --model-repository=<path_to_model_repository> --http-port=8000 --grpc-port=8001 --metrics-port=8002
여기서 --metrics-port 플래그는 Prometheus 매트릭을 노출하는 포트를 설정하며, 기본값은 8002입니다.
2. Prometheus 설정 파일에 Triton 서버 추가
Prometheus 설정 파일 (prometheus.yml)에 Triton Inference Server의 매트릭스 엔드포인트를 추가해야 합니다. 다음과 같이 설정할 수 있습니다.
scrape_configs:
- job_name: 'triton_metrics'
scrape_interval: 15s # 수집 간격 (15초)
metrics_path: '/metrics' # Triton의 기본 매트릭 경로
static_configs:
- targets: ['<triton_server_ip>:8002']
여기서 scrape_interval은 Prometheus가 Triton 서버에서 데이터를 수집하는 주기이며, targets는 Triton 서버의 IP와 매트릭스 포트를 지정합니다.
Prometheus
주요 Prometheus 매트릭은 다음과 같습니다:
- Inference Request Count (nv_inference_request_count)
- 서버에 수신된 추론 요청 수를 카운트하며, 모델 별로 나뉘어 측정됩니다. 이 매트릭을 통해 모델별 요청 빈도를 확인할 수 있습니다.
- Inference Execution Count (nv_inference_exec_count)
- 실제로 실행된 추론 요청 수를 나타냅니다. 이 매트릭은 실패한 요청을 제외하고, 성공적으로 처리된 요청 수만 포함됩니다.
- Inference Failure Count (nv_inference_failure_count)
- 실패한 추론 요청 수를 카운트합니다. 이 매트릭을 통해 특정 모델에서 오류가 빈번하게 발생하는지 확인할 수 있습니다.
- Inference Latency (nv_inference_request_duration_us)
- 요청이 수신된 시점부터 응답이 완료된 시점까지의 시간을 마이크로초 단위로 측정합니다. 이 매트릭은 서버와 모델이 얼마나 빠르게 요청을 처리하는지 알 수 있게 해줍니다.
- GPU Utilization (nv_gpu_utilization)
- GPU의 현재 활용률을 나타내며, 트래픽에 따른 GPU 리소스 사용량을 확인할 수 있습니다. 리소스 효율성을 모니터링하는 데 유용합니다.
- GPU Memory Usage (nv_gpu_memory_used_bytes)
- GPU 메모리의 사용량을 바이트 단위로 나타냅니다. 모델의 메모리 사용량을 확인하여 리소스 할당을 최적화할 수 있습니다.
- Model Loading & Unloading
- 모델이 로드 또는 언로드된 횟수 및 시간에 대한 매트릭도 제공하여, 시스템에서 모델의 로드 빈도와 준비 상태를 모니터링할 수 있습니다.
Prometheus 매트릭을 활용하면 Triton Inference Server의 전반적인 성능을 쉽게 추적하고 분석할 수 있으며, 이를 통해 최적화 및 문제 해결에 필요한 정보를 빠르게 얻을 수 있습니다.
PromQL
PromQL을 사용해 NVIDIA Triton Inference Server에서 특정 모델의 추론 요청 수를 조회하려면, nv_inference_request_count 매트릭과 모델명을 필터링하여 쿼리할 수 있습니다. 예를 들어, 모델명이 my_model이라고 가정하면, 다음과 같이 쿼리를 작성할 수 있습니다:
[promql]
nv_inference_request_count{model="my_model"}
위 쿼리는 my_model에 대한 전체 추론 요청 수를 반환합니다. 추가로 특정 시간 동안의 요청 수 증가를 보려면 rate 함수를 사용할 수 있습니다. 예를 들어, 최근 5분 동안의 요청 증가율을 조회하려면 다음과 같이 쿼리할 수 있습니다:
[promql]
rate(nv_inference_request_count{model="my_model"}[5m])
이 쿼리는 my_model의 최근 5분 동안 초당 요청 수를 반환하므로, 모델의 트래픽 패턴을 모니터링하는 데 유용합니다.
특정 모델에 대한 실패한 추론 요청 수를 조회하려면 nv_inference_failure_count 매트릭을 사용하고, 모델명을 필터링하면 됩니다. 예를 들어, 모델명이 my_model이라면, 실패한 요청 수를 조회하는 PromQL 쿼리는 다음과 같습니다:
[promql]
nv_inference_failure_count{model="my_model"}
이 쿼리는 my_model에 대한 누적 실패 횟수를 반환합니다.
최근 특정 시간 동안의 실패 증가율을 보려면 rate 함수를 사용할 수 있습니다. 예를 들어, 최근 5분 동안의 실패율을 조회하려면 다음과 같이 쿼리할 수 있습니다:
[promql]
rate(nv_inference_failure_count{model="my_model"}[5m])
이 쿼리는 my_model의 최근 5분 동안 초당 실패 횟수를 반환하여, 특정 시간 동안의 오류 패턴을 모니터링할 수 있게 해줍니다.
Prometheus 보관 주기
Prometheus의 보관 설정은 --storage.tsdb.retention.time 플래그로 지정하며, 기본값은 15일입니다. 예를 들어, 보관 기간을 30일로 늘리고 싶다면 Prometheus 설정 파일이나 명령줄에 다음과 같은 옵션을 추가할 수 있습니다:
--storage.tsdb.retention.time=30d
보관 기간은 저장 공간에 영향을 미치므로, 장기 보관이 필요할 경우 데이터 용량 관리에 유의해야 합니다.
'NVIDIA Triton Inference Server' 카테고리의 다른 글
NVIDIA Triton Inference Server with KNative Serving (0) | 2024.10.26 |
---|---|
NVIDIA Triton Inference Server with MLflow (0) | 2024.10.25 |
NVIDIA Triton Inference Server with KubeFlow (1) | 2024.10.25 |
NVIDIA Triton Inference server with Grafana (0) | 2024.10.25 |
NVIDIA Triton Inference Server (1) | 2024.10.25 |