InferScale: 개인화된 LLM 서빙을 위한 GPU 네이티브 KV 주입 (KV Injection)
요약
InferScale은 개인화된 컨텍스트를 위해 반복되는 프리필 과정을 생략하고, 사전 계산된 KV 상태를 vLLM의 페이지 캐시에 직접 주입하는 GPU 네이티브 메모리 시스템입니다. 이를 통해 검색되는 메모리 양이 늘어나도 첫 번째 토큰 생성 시간(TTFT)을 낮게 유지하며 높은 처리량을 제공합니다.
핵심 포인트
- 반복적인 프롬프트 프리필을 재사용 가능한 KV 상태로 대체하여 TTFT 감소
- Chunked RoPE를 도입하여 동적으로 조립된 메모리의 위치 임베딩 문제 해결
- Context-Window Encoding을 통해 사실 간의 컨텍스트 누락 완화
- vLLM 인터페이스를 활용하여 엔진 수정이나 미세 조정 없이 구현 가능
- 기존 방식 대비 TTFT를 최대 79% 감소시키고 처리량을 최대 4.5배 향상
대규모 언어 모델(Large language models)은 사용자의 여러 요청에 걸쳐 공유되는 누적된 메모리 프로필이나 긴 대화 기록과 같은 지속적인 개인화된 컨텍스트(personalized context)와 함께 점점 더 많이 배포되고 있습니다. 프로덕션 메모리 시스템(예: Mem0, MemGPT, Zep)은 이 메모리의 관련 서브셋을 검색하여 프롬프트에 주입하며, 이로 인해 서빙 엔진은 동일한 콘텐츠를 반복적으로 프리필(prefill)해야 합니다. 검색 예산(retrieval budget)이 증가함에 따라, 기반이 되는 메모리가 요청 간에 재사용됨에도 불구하고 첫 번째 토큰 생성 시간(TTFT, time-to-first-token)은 증가합니다. 우리는 반복적인 프롬프트 프리필을 재사용 가능한 KV 상태(KV state)로 대체하는 GPU 네이티브 LLM 메모리 시스템인 InferScale을 제시합니다. InferScale은 각 메모리 사실의 KV 표현을 사전 계산하고, 이를 GPU 상의 시맨틱 임베딩(semantic embedding)과 함께 저장하며, 서빙 시점에 관련 사실을 검색하여 해당 KV를 vLLM의 페이지 캐시(paged cache)에 직접 주입합니다. 회전 위치 임베딩(Rotary Position Embeddings, RoPE) 환경에서 동적으로 조립된 메모리를 지원하기 위해, 우리는 회전 전의 키(key)를 저장하고 주입 시점에 서빙 시점의 위치를 적용하는 Chunked RoPE를 도입합니다. 그러나 메모리 사실을 독립적으로 인코딩하면 공동 프리필(joint prefilling) 중에 사용할 수 있는 사실 간의 컨텍스트(cross-fact context)가 누락됩니다. 우리는 대상 사실의 KV만 캐싱하면서 각 메모리 사실을 이전 대화 컨텍스트의 작은 윈도우와 함께 인코딩하는 컨텍스트 윈도우 인코딩(Context-Window Encoding)을 통해 이를 완화합니다. InferScale은 vLLM의 KV-커넥터(KV-connector) 인터페이스를 통해 구현되었으며, 엔진 수정이나 모델 미세 조정(fine-tuning)을 필요로 하지 않습니다. LoCoMo 데이터셋의 세 가지 오픈 웨이트(open-weight) 모델에 대해 테스트한 결과, InferScale은 검색 예산이 증가함에 따라 TTFT를 거의 일정하게 유지했습니다. k=50일 때 TTFT를 72-79%(3.6-4.8배) 감소시켰으며, 서빙 시점의 재계산이 없는 Mem0의 정확도 63.3% 대비 60.3%의 정확도를 달성하였고, 동시 부하 상황에서 3.7-4.5배의 처리량(throughput)을 제공했습니다. 따라서 재사용 가능한 KV 상태는 애플리케이션 품질을 유지하면서 메모리 조건부 서빙 지연 시간(serving latency)을 검색된 컨텍스트 크기로부터 분리합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.LG의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기