프로덕션 메트릭
프로덕션 메트릭 (Production Metrics)
이 페이지는 Prometheus로 SGLang Diffusion의 요청, 큐, 단계 및 LoRA 상태를 모니터링하는 방법을 설명해요. 메트릭은 옵트인(opt-in)이며, 활성화하면 호스트 측 부기(bookkeeping)를 추가하되 GPU 동기화나 집합 연산은 수행하지 않아요.
출처: 문서
본문
메트릭 활성화 (Enable metrics)
예를 들어 NVIDIA CUDA 배포에서 메트릭을 활성화해요:
sglang serve --model-path black-forest-labs/FLUX.2-klein-4B \
--num-gpus 1 --enable-metrics --port 30000
curl http://localhost:30000/metrics
메트릭은 옵트인(opt-in)이에요. 비활성화된 메트릭은 큐를 스캔하거나 LoRA 상태를 수집하지 않아요. 활성화된 메트릭은 호스트 측 부기(bookkeeping)를 추가하며, GPU 동기화나 집합 연산(collectives)을 수행하지 않아요.
메트릭 참조 (Metric reference)
모든 확산 메트릭은 role과 replica 라벨을 가져요. replica는 스케줄러 엔드포인트이며, 각 DP 복제본의 리더만 게시하므로 TP/SP 랭크는 요청 수를 곱하지 않아요. 표는 추가 라벨을 나열해요.
| Metric | Type | Labels | Description |
|---|---|---|---|
sglang:diffusion_num_queue_reqs |
Gauge | none | 첫 디스패치를 기다리는 원본 생성 요청 수. |
sglang:diffusion_num_running_reqs |
Gauge | none | 스케줄러가 디스패치했고 아직 끝나지 않은 확산 생성 요청 수. |
sglang:diffusion_requests_total |
Counter | status, is_warmup |
완료된 확산 생성 요청. 동적 배치는 병합된 출력이 분할된 후 원본 스케줄러 요청별로 계산돼요. |
sglang:diffusion_request_latency_seconds |
Histogram | status, is_warmup |
스케줄러 수용부터 완료까지. HTTP 전처리, 미디어 인코딩, 응답 전달은 제외. |
sglang:diffusion_queue_time_seconds |
Histogram | is_warmup |
확산 스케줄러 큐에서 대기한 시간. |
sglang:diffusion_generation_batch_size |
Histogram | stop_reason |
디스패치 시 확산 스케줄러가 선택한 생성 배치 크기. |
sglang:diffusion_stage_host_latency_seconds |
Histogram | stage |
단계 주변의 호스트 벽시계 시간(호스트 wall time), GPU 커널 실행 시간 아님. 스텝 라벨은 DenoisingStep으로 정규화돼요. |
sglang:diffusion_lora_loaded_adapters |
Gauge | none | 로드된 확산 LoRA 어댑터 수. |
sglang:diffusion_lora_active_modules |
Gauge | none | 활성 LoRA 어댑터가 있는 확산 모듈 수. |
sglang:diffusion_lora_active_adapters |
Gauge | none | 고유 활성 확산 LoRA 어댑터 수. |
sglang:diffusion_lora_module_active |
Gauge | module |
확산 모듈에 현재 활성 LoRA 어댑터가 있는지 여부. |
요청 수는 생성된 이미지, 디노이징 스텝 또는 분산 샤드가 아닌 원본 스케줄러 요청을 가리켜요. status는 success 또는 error이며, is_warmup은 true 또는 false예요. 큐 및 실행 게이지에는 워밍업이 포함돼요. 단계 관측에는 워밍업이 포함되며 요청이 아닌 단계 호출 수를 세어요. 비동기 GPU 작업은 이후 단계에서 완료될 수 있어요. 동기화된 진단 타이밍이 필요하면 SGLANG_DIFFUSION_SYNC_STAGE_PROFILING=1을 별도로 사용하고 그 동기화 오버헤드를 수용해요. LoRA 게이지는 시작 시와 LoRA 제어 작업 후에 업데이트돼요.
분리 서빙 (Disaggregated serving)
분리 서빙에서 헤드(role="server")는 역할 핸드오프와 오류를 포함한 원본 요청 수명 주기를 기록해요. 큐 시간은 첫 인코더 디스패치에서 끝나며, 중간 대기는 요청 지연 시간의 일부로 남아요. 워커는 자체 단계 및 LoRA 메트릭을 보고하며, 완료된 요청을 중복 보고하지 않아요. generation-batch 히스토그램은 현재 단일(monolithic) 스케줄링만 설명해요.
단일 호스트 풀 모드에서는 모든 자식 메트릭을 헤드의 /metrics를 통해 노출해요. 스크레이프는 해당 호스트의 메트릭 디렉터리를 공유하는 프로세스만 집계해요. 독립형 원격 역할의 경우 각 프로세스에 --enable-metrics를 전달하고 --host/--port와 헤드를 스크레이프해요. 각 역할은 메트릭 전용 HTTP 엔드포인트를 제공해요. 직접 설정한다면 서버 실행마다 별도의 빈 PROMETHEUS_MULTIPROC_DIR을 사용해요. 그렇지 않으면 SGLang이 임시 디렉터리를 생성하고 소유해요. 이 디렉터리를 독립 서버 간에 공유하거나 오래된 파일을 재사용하지 마세요.
처리량 쿼리 (Query throughput)
성공적이고 워밍업이 아닌 요청 처리량:
sum(rate(sglang:diffusion_requests_total{status="success",is_warmup="false"}[5m]))