AI Briefing

힙(Heap)은 거짓말을 한다: vLLM 메모리 누수 디버깅 사례

·2026.01.21 09:00

Mistral AI가 vLLM의 분산 서빙 환경에서 발생한 메모리 누수 문제를 추적한 기술적 과정을 공개했다.

Mistral AI 팀은 vLLM을 사용해 Mistral Medium 3.1 모델을 테스트하던 중, 분산 서빙(disaggregated serving) 환경에서 메모리 사용량이 분당 400 MB씩 선형적으로 증가하는 문제를 발견했다. 이 문제는 graph compilation이 활성화된 특정 조건에서만 발생했다.

조사 결과, 문제는 Prefill/Decode (P/D) disaggregation 설정에서만 나타났다. 이 방식은 쿼리 처리를 두 단계로 나누어 수행한다:

  • Prefill 인스턴스가 요청의 KVCache를 계산한다.
  • 라우터가 KVCache metadataDecode 인스턴스로 전달한다.
  • NIXL을 통해 KVCache 전송이 시작되고, Decode 인스턴스에서 토큰 생성이 이루어진다.

메모리 누수는 Decode 측에서만 관찰되었으며, 이는 NIXL을 통한 KVCache 전송 과정에 문제가 있음을 시사했다. NIXL은 분산 시스템의 데이터 교환을 위해 UCX (Unified Communication X) 라이브러리에 의존하며, 이는 Infiniband와 같은 고성능 기술을 지원한다.

초기에는 Memray, Guppy 3와 같은 Python 프로파일링 도구를 사용했으나 누수를 발견하지 못했다. GDB는 프로세스를 충돌시켰고, ValgrindvLLM 환경의 무거운 부하로 인해 사용이 불가능했다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.