같은 문장을 다시 쓴다고 해서 KV 캐시도 그대로 재사용할 수 있는 것은 아닙니다. 에이전트 프롬프트에서는 시스템 지시, 누적 대화, 장기 기억이 글자 하나 바뀌지 않아도 앞쪽에 새로운 도구 결과나 추론 단계가 끼어듭니다. 그러면 고정 구간의 절대 토큰 위치가 달라집니다. 위치 인코딩이 key와 value 계산에 참여하므로, 이전 위치에서 만든 표현을 새 위치에 놓으면 문장은 같아도 어텐션 결과가 달라질 수 있습니다.
FAST 2026의 CacheSlide 논문은 이를 고정 접두어 캐싱과 위치 독립 캐싱 사이에 있는 세 번째 재사용 조건으로 정의했습니다[1]. 저자들이 제안한 상대 위치 의존 캐싱(Relative-Position-Dependent Caching, RPDC)은 재사용 구간의 순서는 유지되지만 그 사이에서 바뀌는 구간의 길이는 달라지는 상황을 뜻합니다. CacheSlide는 고정 구간끼리 이미 계산한 어텐션을 최대한 보존하고, 바뀐 구간과의 관계만 선택적으로 보정하며, 보정한 KV 페이지가 SSD I/O 병목으로 이어지지 않게 관리합니다.
논문이 제시한 성능 범위는 큽니다. 평가한 모델과 에이전트 작업에서 선택한 비교 시스템보다 지연은 3.11~4.3배 낮고 처리량은 3.5~5.8배 높았다고 보고했습니다. 출력 품질을 함께 보기에는 ContextCache 비교가 더 유용합니다. CacheSlide는 측정한 정확도 손실을 거의 만들지 않으면서 첫 토큰까지의 시간(TTFT)을 2.4~3.3배 줄였습니다. 다만 수정하지 않은 모델에 캐시 정책 하나만 넣어 얻은 결과는 아닙니다. 위치 인코딩을 어댑터 학습으로 바꾸고, 작업별 프롬프트 템플릿을 사용하며, 보정할 토큰 비율을 조정했습니다. 성능 수치와 이 운영 조건을 분리해서 읽으면 안 됩니다.
에이전트 프롬프트는 세 번째 캐싱 조건을 만듭니다
접두어 캐시는 재사용할 모든 토큰이 매번 같은 위치에서 시작하고 새 내용이 그 뒤에 붙을 때 잘 동작합니다. 에이전트 프롬프트는 이 조건을 자주 어깁니다. 기억을 관리하는 에이전트는 시스템 접두어와 긴 이력을 유지하면서 그 사이의 작업 창을 바꿀 수 있습니다. 코드 에이전트는 지시와 과거 도구 출력을 남긴 채 여러 제어 필드를 교체합니다. 공통 접두어를 늘리려고 이 구간의 순서를 바꾸면 최근 정보의 중요도가 달라지거나 프롬프트 구성 요소 사이의 의존 관계가 깨질 수 있습니다.
위치 독립 캐싱은 어느 위치에나 같은 구간을 놓을 수 있게 하지만, 캐시에 저장한 좌표와 실제 입력 좌표가 달라집니다. 그래서 일부 토큰을 다시 계산해 어긋난 어텐션을 복구합니다. 문제는 어텐션 head마다 중요하게 보는 토큰이 다르고, 어떤 부분이 최종 출력에 영향을 주는지는 디코딩 전에 정확히 알기 어렵다는 점입니다. 보정 범위를 넓히면 품질은 지킬 수 있지만 계산 절감이 줄고, 범위를 좁히면 출력 품질이 조용히 나빠질 수 있습니다.
RPDC는 문제 범위를 더 좁힙니다. 갱신 구간이 늘거나 줄어 절대 위치가 바뀌어도 고정 청크의 상대적인 순서는 같다고 가정합니다. 논문이 평가한 여러 에이전트 템플릿에서는 이 조건이 성립했습니다. 따라서 같은 고정 청크 내부와 여러 고정 청크 사이의 관계는 재사용하고, 갱신된 내용과 고정 청크가 만나는 어텐션만 복구할 수 있습니다. 운영 관점에서는 반복 문자열을 모두 같은 캐시 대상으로 보지 말고, 먼저 프롬프트 구조가 접두어형인지, 위치 독립형인지, 상대 순서 고정형인지 분류해야 합니다.
저자들은 위치 차이의 영향을 별도 실험으로 측정했습니다. MemGPT 입력에서 같은 구간을 0~1,000토큰 옮겼을 때 RoPE를 사용한 캐시와 새 계산 사이의 key 유사도는 90% 넘게 감소했지만, 평가한 CoPE 구성에서는 감소폭이 28%였습니다. 갱신 구간을 1K, 2K, 3K토큰 창에 맞춰 채우는 방법도 일반적인 답이 되지 못했습니다. 같은 추론 회차에서 패딩하지 않은 비교 기준보다 F1이 78.1% 넘게 낮아졌습니다. 작은 창은 필요한 문맥을 버리고, 큰 창은 뒤쪽 위치를 계속 밀면서 빈 토큰 계산까지 추가합니다.

CCPE는 모델 좌표계에서 이동 폭을 줄입니다
청크형 문맥 위치 인코딩(Chunked Contextual Position Encoding, CCPE)은 하나의 작업 템플릿을 재사용 청크와 재계산 청크로 나눕니다. 작업별 준비 단계에서 같은 종류의 프롬프트를 CoPE로 인코딩하고, 재사용 영역에서 가장 자주 나타난 위치 패턴을 기록합니다. 이후 요청에서는 고정 청크에 이 범위를 적용하고 바뀌는 청크에는 현재 위치를 계산합니다. 내용 해시로 저장된 KV를 찾습니다.
위치 정보를 없애는 것이 아니라 좌표 차이를 줄이는 설계입니다. CoPE는 의미 경계에 따라 인접 토큰이 같은 문맥 위치를 공유할 수 있으므로, 절대 토큰 번호가 움직여도 RoPE처럼 모든 토큰 표현이 함께 회전하지 않습니다. 캐시에 저장한 이력 청크와 새로 계산한 청크가 이 좌표계에서 가까우면, 청크 내부와 다른 고정 청크 사이의 어텐션을 더 적은 오차로 재사용할 수 있습니다.
대신 배포할 때 관리해야 할 모델 구성 요소가 늘어납니다. 저자들은 backbone 가중치를 유지한 채 LoRA 어댑터를 추가 학습해 CoPE를 활성화했습니다. CacheSlide에는 이 어댑터를 켰고, 비교 시스템은 기존 RoPE 또는 ALiBi를 사용했습니다. 따라서 이 평가는 vLLM의 페이지 교체 정책만 비교한 결과가 아닙니다. 운영 환경에서는 모델별 어댑터 검증, 프롬프트 템플릿 버전, 해당 패턴이 성립하지 않을 때 사용할 기본 계산 경로가 필요합니다.
일반적인 의미 캐시와도 범위가 다릅니다. CCPE는 뜻이 비슷한 두 문장이 같은 KV를 공유할 수 있다고 주장하지 않습니다. 내용이 같은 재사용 청크와 반복되는 배열을 전제로 합니다. 도구 순서를 동적으로 바꾸거나 요청마다 새로운 스키마를 만들고 작업별로 프롬프트 분기가 달라지는 에이전트는 문자열이 많이 반복되더라도 RPDC 조건에서 벗어날 수 있습니다.
Weighted Correction Attention은 가장 많이 어긋난 토큰에 계산을 씁니다
위치를 가깝게 맞춰도 고정 청크와 갱신 청크 사이의 어텐션은 복구해야 합니다. Weighted Correction Attention(WCA)은 첫 번째 layer에서 전체 프롬프트를 다시 계산하고, 캐시한 key와 새 key의 차이가 큰 토큰을 고릅니다. 이후 layer에서는 선택한 토큰만 다시 계산하고, 차이에 따라 새 KV와 캐시 KV를 가중 합산합니다.
네 개 layer마다 유사도를 다시 확인합니다. 충분히 수렴한 토큰은 보정 집합에서 빼고, 아직 차이가 큰 다른 토큰을 넣을 수 있습니다. 깊은 layer로 갈수록 인접 layer의 표현이 비슷해지는 성질을 이용해 보정을 멈출 시점을 정합니다. 두 실험 조건에서 정답을 낸 작업 수를 기준으로 한 처리량은 토큰 선택 비율 약 0.26, CKSim 임곗값 약 0.12에서 가장 높았습니다.
이 두 값은 transformer의 보편 상수가 아니라 논문에서 찾은 경험값입니다. 모델 깊이, 어텐션 특성, 프롬프트 구성, 품질 지표가 바뀌면 최적점도 달라집니다. 운영자는 선택 토큰 비율, layer별 수렴 속도, 작업별 품질 회귀를 관찰할 수 있어야 합니다. 정확히 완료한 작업을 분모로 쓰지 않으면 처리량 개선이 의미를 잃습니다.
WCA는 어떤 토큰을 보정할지 찾기 위해 첫 layer 전체를 계산하는 고정 비용도 지불합니다. 프롬프트가 짧거나 재사용 구간이 적으면 이 비용이 이득을 없앨 수 있습니다. 고정 청크가 입력의 큰 비중을 차지하고, 같은 템플릿이 여러 번 반복되며, 첫 토큰 지연을 줄이는 가치가 모델 경로 단순성보다 클 때 적용 가능성이 높습니다.
SLIDE는 KV 보정을 스토리지 스케줄링 문제로 다룹니다
선택한 토큰을 고치려면 layer마다 기존 KV를 읽고 새 값을 써야 합니다. 일반적인 서빙 런타임은 이전 페이지를 불러온 다음 보정 값을 기록하므로 두 작업이 프리필 경로에서 직렬화됩니다. 메모리가 부족해 페이지를 NVMe로 내보내면 일부만 바뀐 페이지가 작은 무작위 쓰기를 만들고 장치 쓰기량을 늘립니다. 어텐션 계산을 줄인 캐시가 메모리 계층에서 이득을 다시 잃을 수 있습니다.
SLIDE는 vLLM 0.8.5에 보정 토큰용 추가 페이지를 둡니다. 새 계산이 이전 페이지 읽기보다 먼저 끝나면 기다리지 않고 다른 페이지에 쓸 수 있습니다. 디코딩 단계에서는 가능한 경우 원래 위치를 덮어써 공간을 회수합니다. 보정 토큰이 들어간 페이지를 더티 상태로 표시하고, SSD로 내보낼 때 깨끗한 페이지를 먼저 선택합니다. 더티 페이지를 꼭 써야 하면 보정 토큰 수를 기준으로 묶어 더 큰 순차 쓰기를 만듭니다.
요소별 평가에서는 layer 내 읽기와 쓰기를 겹쳐 batch size가 2에서 6으로 늘어날 때 병렬 지연을 26.7%~51.5% 줄였습니다. 더티 페이지 정책은 보고한 batch-size 범위에서 쓰기 대기 시간을 66.9%~73.5% 낮췄습니다. SSD 쓰기 증폭은 3.11~3.62배 감소했고, 해당 비교에서 GPU 메모리 사용량은 PromptCache보다 1.63~1.9배 낮았습니다. 서로 다른 요소 평가이므로 이 수치들을 곱해 하나의 종단 성능으로 만들면 안 됩니다.
깨끗한 페이지 우선 정책이 다중 사용자 공정성을 자동으로 보장하지는 않습니다. 보정한 페이지가 많은 요청이 이를 오래 유지하는 동안 다른 요청의 깨끗한 재사용 페이지가 먼저 밀려날 수 있습니다. 논문은 전체 지연과 처리량에 집중했고, 우선순위가 섞인 요청의 격리, 서비스 수명 동안의 SSD 내구성, 꼬리 지연까지 입증하지 않았습니다. 실제 스케줄러에는 페이지 상태뿐 아니라 요청별 한도가 필요합니다.
평가는 에이전트 세 종류, 모델 세 종류, 스토리지 계층 하나를 다룹니다
주 시험 서버는 DRAM 500 GB, NVMe SSD 2 TB, PCIe Gen4 연결을 사용했습니다. 대부분의 실험은 HBM 80 GB인 NVIDIA A100 한 개에서 수행했고, Llama-3 70B는 A100 두 개를 사용했습니다. 소프트웨어 구성은 Ubuntu 20.04, Linux 5.16.7, CUDA 12.6, vLLM 0.8.5입니다. 모델은 Mistral-7B, MPT-30B, Llama-3 70B를 포함합니다.
에이전트 조건은 서로 다른 구조를 선택했습니다. Reflexion은 HotPotQA로 반복 추론을 평가했고, MemGPT는 여러 세션으로 구성한 대화 자료를 사용했으며, SWE-Agent는 Python 저장소 12개에서 문제 해결을 측정했습니다. 작업에 따라 ROUGE-L recall, 성공률, F1을 사용했습니다. 품질과 TTFT의 관계는 batch size 1에서 평가했고, 병렬 추론과 beam search에서는 동시성을 높여 스토리지 압력을 만들었습니다.
CacheBlend와 비교하면 CacheSlide의 TTFT는 1.21~2.11배 낮고 작업 정확도는 1.97~2.28배 높았습니다. PromptCache와 비교한 범위는 각각 1.12~2.45배와 1.41~3.95배입니다. Batch size 8의 처리량 평가에서는 선택한 비교 시스템보다 초당 처리량이 평균 63.1% 높고, 초당 처리량의 표준편차는 68.9% 낮았습니다. 이 결과는 평가한 에이전트 템플릿에서 품질과 지연의 경계를 개선했다는 근거이며, 모든 문맥 캐시를 포괄하는 순위는 아닙니다.
평가 범위 밖의 항목도 분명합니다. 서버 한 대와 GPU 최대 두 개를 사용했으므로 분산 KV 이동, 프리필 분리, 네트워크 연결 캐시 계층은 측정하지 않았습니다. CoPE 어댑터 학습 비용과 다른 작업의 품질에 미치는 영향도 따로 계산해야 합니다. 실제 프롬프트는 모델 업그레이드, 안전 정책, 도구 스키마, 서비스 실험에 따라 바뀝니다. 정답을 낸 작업 수를 기준으로 처리량을 본 방향은 타당하지만, ROUGE, 성공률, F1이 서로 다른 실패를 측정하므로 배포 대상의 품질 자료가 별도로 필요합니다.
프롬프트 템플릿도 캐시 메타데이터로 관리해야 합니다
CacheSlide에서는 내용 해시만으로 캐시 유효성을 판단할 수 없습니다. 모델 빌드, 위치 어댑터, 청크 순서 템플릿, 보정 정책, 스토리지 관리자 버전도 일치해야 합니다. 이 값들을 하나의 캐시 이름 공간에 포함해야 프롬프트나 모델을 갱신할 때 호환되지 않는 KV가 조용히 섞이지 않습니다.
캐시 적중률만 봐서도 안 됩니다. 입력에서 재사용으로 분류한 토큰 비율, 위치 유사도 분포, layer별 보정 토큰 비율, 작업별 품질 변화, 깨끗한 페이지와 더티 페이지의 SSD 이동량, 쓰기 증폭, 동시 요청의 TTFT 꼬리값을 함께 측정해야 합니다. 템플릿이 달라지기 시작하면 정확도가 떨어지기 전에 보정 비율이 먼저 올라갈 수 있습니다. 이 신호를 이용해 캐시를 무효화하거나 전체 재계산으로 돌아갈 수 있습니다.
이 논문의 시스템 수준 의미는 문맥 캐싱이 모델 의미와 스토리지 스케줄링을 함께 다뤄야 한다는 점입니다. 토큰 좌표가 계산을 바꾸면 같은 바이트만으로는 충분하지 않고, 좌표를 보정했더라도 페이지 I/O가 멈추면 성능을 얻을 수 없습니다. CacheSlide는 두 경계를 하나의 설계로 연결했습니다. 운영 가치는 상대 순서가 실제로 안정적인지 입증하고, 어댑터와 템플릿을 버전으로 관리하며, 계산량을 줄일 때마다 완료 작업의 품질을 측정할 수 있는지에 달려 있습니다.
출처와 저작권 안내
이 글은 Yang Liu, Yunfei Gu, Liqiang Zhang, Chentao Wu, Guangtao Xue, Jie Li, Minyi Guo, Junhao Hu, Jie Meng이 FAST 2026에 발표한 논문을 Silicon & Systems가 독립적으로 분석한 편집 글입니다. 저자들은 Shanghai Jiao Tong University, Jinan Inspur Data Technology, Peking University, Huawei Cloud에 소속되어 있습니다. 원문은 USENIX 발표 페이지에서 공개되어 있습니다. 메커니즘과 측정 결과는 우리 표현으로 다시 썼고 도판은 이 글을 위해 새로 만들었습니다. 원문의 문장, 표, 도판을 복제하지 않았습니다. Copyright (c) 2026 the paper authors.