본문으로 건너뛰기

[vllm] xxHash로 Prefix Caching 해싱 성능 가속

PR 링크: vllm-project/vllm#29163 상태: Merged | 변경: +332/-8

들어가며

Prefix caching은 vLLM에서 동일한 프롬프트 prefix를 공유하는 요청들의 KV cache를 재활용하는 핵심 기능이다. 이 기능의 성능은 블록 해시 계산 속도에 좌우된다. 이 PR은 Python 기본 해시 대신 xxHash를 도입하여 해싱 성능을 크게 개선한다.

핵심 코드 분석

xxHash는 Yann Collet이 개발한 극고속 비암호화 해시 함수로, 메모리 대역폭에 가까운 속도를 제공한다. Prefix caching에서는 각 KV cache 블록에 대해 토큰 시퀀스의 해시를 계산하여 동일 블록을 식별한다.

기존 Python의 hash() 함수 대신 xxhash.xxh3_64()를 사용하면:

  • 대량 토큰 시퀀스 해싱: xxHash는 SIMD 최적화로 긴 시퀀스에서 특히 빠름
  • 충돌 저항성: 64비트 해시로 블록 간 충돌 확률 극소화
  • 일관성: Python hash()는 프로세스마다 다른 시드를 사용하지만, xxHash는 결정적

주요 변경은 해시 함수 교체와 관련 유틸리티 추가(332줄), 기존 해시 호출 제거(8줄)로 구성된다.

왜 이게 좋은가

  1. 해싱 속도 향상: xxHash는 Python 기본 hash 대비 수배 빠른 처리 속도
  2. 긴 프롬프트에서 효과 극대화: 시스템 프롬프트가 긴 RAG, agent 워크로드에서 특히 유효
  3. 스케줄링 오버헤드 감소: 해싱이 빨라지면 prefix match 판별이 빨라져 스케줄링 지연 감소
  4. 결정적 동작: 프로세스 재시작 후에도 동일한 해시값 보장

정리

xxHash 도입은 작은 변경이지만 prefix caching의 핵심 경로에 위치하여 전체 시스템 성능에 영향을 미치는 최적화다. 특히 긴 시스템 프롬프트를 사용하는 agent 기반 워크로드에서 체감할 수 있는 개선이다.

참고 자료


이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 코드 분석 내용은 실제 PR diff를 기반으로 합니다.

댓글

관련 포스트

PR Analysis 의 다른글