Boosting multimodal inference performance by >10% with a single Python dict

개요

SGLang의 스케줄러에서 발생하는 멀티모달 워크로드의 호스트 오버헤드를 최적화하여 GPU 공유 메모리 관리를 단순한 캐시 조회로 대체함으로써 처리량 및 지연 시간을 10% 이상 개선했습니다.

주요 내용

* 멀티모달 모델(VLMs)은 텍스트 외에 이미지 등 다양한 입력을 처리하며, 이는 기존 추론 엔진에 새로운 성능 최적화 과제를 제시합니다.
* SGLang 스케줄러의 성능 병목 현상을 py-spy를 이용해 프로파일링한 결과, process_input_requests 함수 내 hash_feature에서 많은 시간이 소요됨을 확인했습니다.
* hash_feature 함수 내에서 torch.UntypedStorage._new_shared_cuda 호출이 반복적으로 발생하며, 이는 각 텐서 공유 시마다 CUDA IPC 풀 핸들에 대한 재할당 및 PyTorch 래퍼 오버헤드를 유발하는 것으로 분석되었습니다.
* 이러한 불필요한 호스트 오버헤드를 제거하기 위해, GPU 메모리 풀 핸들을 저장하는 간단한 Python dict 기반 캐시를 도입했습니다.
* 개선된 캐시 적용 후, _new_shared_cuda 관련 핫스팟이 사라졌으며 입력 처리 시간은 절반 이하로 감소했습니다.
* 실제 벤치마크 결과, Qwen2.5-VL-3B-Instruct 모델 사용 시 처리량은 약 16.2% 증가했고, 평균 종단 간 지연 시간은 약 10.6% 감소했습니다.
* 뿐만 아니라, 입력/프리필 경로에 대한 최적화임에도 불구하고 디코드 지연 시간(평균 17.2% 감소) 역시 개선되었습니다. 이는 스케줄러의 단일 스레드 특성상 어느 한 부분의 지연이 전체 성능에 영향을 미치기 때문입니다.

시사점

멀티모달 추론에서 호스트 오버헤드를 줄이기 위한 단순한 데이터 구조(Python dict 캐시) 활용이 GPU 공유 메모리 관리의 효율성을 크게 높여, 실제 서비스 성능 지표인 처리량 및 지연 시간에 실질적인 개선을 가져올 수 있습니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions