피드로 돌아가기
Dev.toInfrastructure
원문 읽기
10k QPS 처리, GPU 효율을 극대화하는 Dynamic Batching 설계
High-Throughput GPU Inference Batching System Design
AI 요약
Context
GPU Worker에 개별 요청이 도달하는 구조로 인한 하드웨어 저활용 문제. 요청마다 발생하는 컨텍스트 스위칭으로 인한 메모리 오버헤드 발생. 고가용성 GPU 자원의 효율적 사용을 위한 처리량 최적화 필요.
Technical Solution
- 고성능 수집을 위해 Redis Streams 기반의 분산 메시지 큐를 도입하고 파티셔닝 전략으로 글로벌 락과 경합 제거
- 배치 사이즈 64개 도달 또는 대기 시간 50ms 초과 시 즉시 전송하는 Wait-or-Full 하이브리드 트리거 로직 구현
- 트래픽 양에 따라 대기 시간을 조절하는 EWMA 기반 Adaptive Batching으로 응답 지연 시간과 처리량의 균형 최적화
- Protobuf 및 Apache Arrow 기반 Zero-Copy 직렬화를 적용하여 배치 구성 및 해제 시 발생하는 CPU 오버헤드 최소화
- GPU 메모리 점유율 90% 초과 시 유입 속도를 제어하는 Backpressure 피드백 루프로 시스템 붕괴 방지 및 점진적 성능 저하 설계
- 동일 페이로드 요청을 해시로 식별하여 한 번만 추론하고 결과를 복제하는 Request Collapsing 기법으로 중복 연산 제거
Impact
- 처리 성능: 10,000 QPS 대응
- 지연 시간: p99 Latency 500ms 미만 유지
- 배치 오버헤드: 50ms 미만 제어
- 인프라 규모: 32대의 GPU Worker 운용
Key Takeaway
GPU와 같은 고비용 자원은 유휴 시간을 최소화하는 것이 설계의 핵심이며, 이를 위해 버퍼링과 트래픽 셰이핑을 통한 배치 최적화가 필수적임.
실천 포인트
GPU 메모리 사용률 90% 상회 시 상위 계층으로 Backpressure를 전파하여 시스템 가용성을 확보할 것