LLM WikiAccess-protected knowledge portal

WIKI

SwiftCache: 멀티턴 대화 LLM 서빙에서 NVLink로 이종 GPU 메모리를 공유해 컨텍스트 길이를 4배 늘리는 방법

요약 멀티턴 대화는 챗봇과 AI 에이전트의 핵심 시나리오다. 대화가 길어질수록 KV 캐시가 쌓이고, GPU의 HBM High Bandwidth Memory 용량을 초과하면 CPU 메모리나 SSD로 오프로드해야 한다. 오프로드된 KV 캐시를 다시 불러올 때는 느린 PCIe 대역폭이 병목이 돼 TTFT가 급격히 늘어난다. 2026년 6월 arXiv에 발표된 SwiftCache arXiv 2606.16135 는 이 문제를 다른 각도

경로human/study/content/ai-frontier/107-swiftcache-multi-turn-llm-nvlink-heterogeneous-kv-cache-sharing.md
카테고리Study
태그#ai-review #cache #heterogeneous #infra #llm #nvlink #sharing #study

요약

멀티턴 대화는 챗봇과 AI 에이전트의 핵심 시나리오다. 대화가 길어질수록 KV 캐시가 쌓이고, GPU의 HBM(High Bandwidth Memory) 용량을 초과하면 CPU 메모리나 SSD로 오프로드해야 한다. 오프로드된 KV 캐시를 다시 불러올 때는 느린 PCIe 대역폭이 병목이 돼 TTFT가 급격히 늘어난다. 2026년 6월 arXiv에 발표된 SwiftCache(arXiv:2606.16135)는 이 문제를 다른 각도로 푼다. 같은 서버에 공존하는 이종 모델들이 NVLink를 통해 유휴 GPU 메모리를 서로 공유하도록 해 HBM 부족 문제를 해결한다. 결과는 P99 TTFT 최대 69% 감소, 최대 컨텍스트 길이 최대 3.98배 확장이다.


배경: 멀티턴 대화의 KV 캐시 문제

왜 멀티턴은 어려운가

싱글 턴 요청은 요청당 KV 캐시가 독립적이라 GPU 메모리 관리가 비교적 단순하다. 멀티턴에서는 이전 모든 턴의 KV 캐시를 유지하거나 재계산해야 한다.

문제내용
HBM 초과대화가 길어질수록 KV 캐시 누적이 HBM 용량을 초과
오프로드 지연CPU/SSD로 오프로드 시 PCIe(≈16 GB/s)가 병목
최대 길이 제한HBM 부족이 지원 가능한 최대 컨텍스트 길이를 제한
재로드 비용턴마다 이전 KV 캐시를 다시 GPU로 가져오는 비용 누적

기존 접근법의 한계

CPU 오프로드(PCIe), SSD 오프로드, PagedAttention 기반 단편화 최소화가 주류 방법이었다. 이 방법들은 같은 서버 안에서 유휴 상태의 GPU 메모리가 많다는 사실을 활용하지 않는다. 실제 서빙 환경에서는 여러 모델이 같은 서버에 공존하며, 요청 패턴에 따라 특정 모델은 KV 캐시를 거의 사용하지 않는 시간대가 있다.


SwiftCache의 핵심 아이디어

SwiftCache의 통찰은 한 문장으로 요약된다. "같은 서버 안의 GPU는 NVLink로 연결돼 있고, 어떤 모델의 GPU 메모리는 유휴 상태다. 그 메모리를 KV 캐시 저장소로 쓰면 된다."

SwiftCache: 단일 서버 내 이종 GPU 메모리 공유 단일 멀티-GPU 서버 (NVLink 연결) GPU 0 — 고수요 모델 (챗봇) 로컬 HBM (현재 레이어 KV만 보관) 레이어 N KV 캐시 모델 가중치 Layer Stream Cache 레이어 단위로 원격 KV를 NVLink에서 가져와 실행 Elastic Prefix Cache 이전 턴 KV 캐시 → GPU 1 메모리에 탄력적 저장 추론 엔진 레이어별 KV 요청 → NVLink 원격 읽기 GPU 1 — 저수요 모델 (도구 실행기) 로컬 HBM 모델 가중치 유휴 메모리 풀 기증 KV 캐시 블록 (GPU 0 소유) Turn 1 KV Turn 2 KV Turn 3 KV Layer 1 KV … Layer L KV (이전 턴 전체 레이어 KV, NVLink로 접근) 저수요 기간 유휴 HBM 제공 (Elastic) 수요 급증 시 기증 공간 단계적 회수 NVLink ~600 GB/s 비교: CPU 오프로드(PCIe ≈16 GB/s) → NVLink 대비 약 37배 느린 재로드
SwiftCache 아키텍처 — 단일 서버 내 NVLink 기반 이종 GPU KV 캐시 공유

세 가지 핵심 기술

1. NVLink 기반 이종 KV 캐시 공유

실서빙 클러스터에서는 여러 모델이 같은 서버에 공존한다. 챗봇 모델은 긴 대화 컨텍스트로 KV 캐시가 많이 필요한 반면, 도구 실행 모델이나 분류 모델은 짧은 요청만 처리해 HBM 여유가 많다.

SwiftCache의 공유 메커니즘은 두 단계로 동작한다.

  1. 기증(Donation): 저수요 모델(GPU 1)이 유휴 HBM 블록을 공유 풀에 등록한다.
  2. 할당(Allocation): 고수요 모델(GPU 0)이 이전 턴 KV 캐시를 GPU 1의 공유 블록에 저장한다.

전송 경로는 NVLink다. NVLink의 대역폭은 ~600 GB/s로 PCIe(~16 GB/s)보다 약 37배 빠르다. KV 캐시를 CPU로 내보내는 대신 인접 GPU에 두면 재로드 지연이 대폭 줄어든다.

2. Layer Stream Cache

SwiftCache는 추론 시 전체 레이어의 KV 캐시를 로컬에 보관하지 않는다. 현재 실행 중인 레이어 N의 KV 캐시만 로컬 HBM에 두고, 나머지 레이어의 KV 캐시는 원격 GPU 메모리에 저장된다.

실행 순서는 다음과 같다.

  1. 레이어 N 실행 시작 → 레이어 N KV 캐시를 원격 GPU에서 NVLink로 가져온다.
  2. 레이어 N 어텐션 연산 완료 → 결과 KV를 다시 원격 GPU에 저장한다.
  3. 레이어 N+1로 이동 → 같은 과정 반복.

이 방식은 HBM 소비량을 단일 레이어 KV 크기로 제한한다. 전체 레이어 KV 캐시를 보유할 필요가 없어 최대 컨텍스트 길이가 크게 늘어난다.

3. Elastic Cache

기증 GPU의 수요가 늘어나면 이전에 기증한 공간을 회수해야 한다. Elastic Cache는 공유 공간을 동적으로 조정한다.


성능 결과

실험 환경: 단일 멀티-GPU 서버, 이종 모델 공존 환경.

지표SwiftCache비고
P99 TTFT최대 69% 감소베이스라인 대비
최대 컨텍스트 길이최대 3.98배 확장HBM 단일 레이어 사용으로 가능
공존 모델 간섭소폭(modest)기증 GPU 성능 영향 제한적

PCIe 오프로드 대비 NVLink 전송은 대역폭 차이(~37배)만큼 재로드 지연이 줄었다. Layer Stream Cache는 HBM 사용량을 단일 레이어 수준으로 줄여 컨텍스트 확장에 결정적으로 기여했다.


운영 시 고려사항

적용 조건

주의사항

항목내용
기증 풀 회수 지연저수요 모델 수요가 급증하면 기증 회수가 KV 캐시 중단으로 이어질 수 있다. Elastic 정책 파라미터 조정이 필요하다.
레이어 통신 오버헤드Layer Stream Cache는 레이어마다 NVLink 왕복이 발생한다. 레이어 수가 많은 대형 모델(70B+)에서는 통신 빈도도 증가한다.
동기화 복잡도여러 모델이 공유 메모리 풀을 동시에 읽고 쓰면 메모리 관리가 복잡해진다. 세밀한 잠금 메커니즘이 필요하다.
NVLink 토폴로지 의존성NVSwitch 기반 풀-메시(full-mesh) 구성이 최적이다. 링(ring) 토폴로지에서는 GPU 간 홉 수에 따라 대역폭이 달라진다.

다른 접근법과 비교

방식전송 매체특징SwiftCache 대비
CPU 오프로드PCIe (~16 GB/s)구현 단순재로드 약 37배 느림
SSD 오프로드NVMe (~7 GB/s)더 큰 용량재로드 약 85배 느림
PagedAttention로컬 HBM단편화 최소화HBM 상한 해결 못함
SwiftCacheNVLink (~600 GB/s)이종 GPU 협력최저 재로드 지연

요점 정리


References