vLLM, 긴 프롬프트 병목 현상 개선
How Long Prompts Block Other Requests - Optimizing LLM Performance
vLLM의 chunked-prefill 전략에서 발생하는 긴 프롬프트의 큐 차단 문제를 분석하고 최적화 방안을 제시한다.
LLM 추론은 첫 토큰을 생성하는 prefill(프리필) 단계와 이후 토큰을 생성하는 decode(디코딩) 단계로 나뉜다. prefill은 전체 프롬프트를 병렬로 처리하여 GPU를 집중적으로 사용하며, decode는 개별 토큰을 순차적으로 처리한다.
vLLM의 기본 chunked-prefill 전략에서는 한 번에 하나의 요청에 대한 프리필만 처리하도록 스케줄링된다. 이로 인해 매우 긴 프롬프트를 가진 요청이 들어오면, 해당 프리필이 완료될 때까지 후속 요청들이 대기해야 하는 병목 현상이 발생한다. 이는 짧은 프롬프트를 가진 요청들의 **Time-to-First-Token(TTFT)**을 크게 저하시킨다.
최근 vLLM 업데이트에서는 이를 해결하기 위해 병렬 프리필(Parallel Prefills) 전략을 도입했다. 이 방식은 동시에 처리되는 긴 프롬프트 요청의 수를 제한함으로써, 짧은 프롬프트 요청들이 긴 요청의 처리를 기다리지 않고 빠르게 통과할 수 있는 'Fast Lane' 역할을 수행하도록 하여 전체적인 응답성을 개선했다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.