Triton 다이내믹 배칭 — 요청을 묶어 처리 속도 올리기

Triton 다이내믹 배칭 — 요청을 묶어 처리 속도 올리기

다이내믹 배치(Dynamic Batching)는 모델 구성에 따라 추론이 수행되는 동안 여러 추론 요청을 서버가 서로 다른 시간에 도착하더라도 하나의 배치로 묶어 스케줄링하는 기능이에요. 개별 요청을 하나씩 처리하는 것보다 배치 처리량을 크게 높일 수 있습니다.

출처: https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/user_guide/dynamic_batching.html

다이내믹 배처 설정

모델 구성의 dynamic_batching {} 섹션으로 다이내믹 배처를 켭니다. max_queue_delay_microseconds로 최대 지연 시간을 지정하면, 요청이 하나만 도착해도 해당 지연만큼 기다렸다가 배치를 만들 수 있어요.

dynamic_batching {
  max_queue_delay_microseconds: 100
  preferred_batch_size: [ 4, 8 ]
  max_queue_size: 1000
}
  • preferred_batch_size: 서버가 만들어지길 선호하는 배치 크기 목록. 성능·지연 간 트레이드오프를 조정할 때 씁니다.
  • max_queue_size: 큐에 쌓을 수 있는 최대 요청 수.
  • preserve_ordering: true로 두면 배치 안에서 요청의 실행 순서를 보존합니다.

작동 방식

다이내믹 배처는 요청이 도착하면 지정된 지연 시간 동안 모아 두고, 모델 인스턴스가 사용 가능해지면 도착한 요청들을 하나의 배치로 만들어 처리해요. 각 요청은 원래 배치 내 위치에 해당하는 최대 배치 딤전션(max-batch dimension) 에 놓여 함께 실행됩니다.

예를 들어 모델이 max_batch_size 8을 갖는다면, 배치는 최대 8개 요청까지 묶일 수 있고 그 안의 각 요청은 배치 차원의 한 슬롯을 차지합니다.

사용 시 주의

  • 다이내믹 배칭은 배치 처리 이점이 있는 모델(GPU 행렬 연산 등)에 유리해요.
  • 지연 시간을 너무 크게 잡으면 응답 지연이 늘어날 수 있으니 preferred_batch_sizemax_queue_delay_microseconds를 서비스 요구사항에 맞게 튜닝해야 합니다.

더 알아보기