100만 토큰 컨텍스트는 모델 스펙이 아니라 캐시 정책 문제다
1M 토큰 컨텍스트는 모델 카드에서 보면 멋진 상한처럼 보입니다. 하지만 실제 서비스에서 중요한 질문은 “이 요청을 넣을 수 있는가”가 아니라 “그 상태를 얼마나 오래 메모리에 보관하고, 다음 요청이 다시 쓸 때 어떤 비용을 낼 것인가”입니다. Together AI의 「Serving DeepSeek-V4: why million-token context is an inference systems problem」은 DeepSeek-V4를 바로 그런 서빙 시스템의 문제로 설명합니다. 이 글의 원문은 DeepSeek-V4의 1M 컨텍스트가 Compressed Sparse Attention(CSA), Heavily Compressed Attention(HCA), Sliding Window Attention(SWA)을 섞는 하이브리드 구조에서 나온다고 설명합니다. 따라서 V4의 장점은 “긴 입력을 받는다”에서 끝나지 않습니다. 추론 엔진이 서로 다른 KV 상태를 저장하고, 배치하고, 회수하고, prefix 재사용 때 복원하는 방법까지 맞아야 실현됩니다. 아래 내용은 Together의 NVIDIA HGX B200 초기 bring-up 설명을 기준으로 한 분석이며, 제가 V4를 독립 실행해 재현한 결과는 아닙니다. 1M 토큰보다 먼저 바뀐 것은 KV 캐시의 단위다 autoregressive 디코딩은 앞서 읽은 컨텍스트를 KV 캐시에 남겨 두고 새 토큰을 생성할 때 그 상태를 다시 읽습니다. 원문이 제시한 단순화된 관계는 KV cache ∝ layers × tokens × kv_heads × head_dim × bytes 입니다. 긴 컨텍스트에서는 토큰 수가 늘어나는 것만 문제가 아닙니다. 각 요청이 더 많은 메모리를 점유해 동시성을 제한하고, 매 디코드 단계에서 읽어야 할 상태가 커져 메모리 대역폭과 처리량에도 부담을 줍니다. 이전 최적화가 줄인 항은 서로 달랐습니다. GQA는 KV head 수를, MLA는 head 차원의 표현을 줄이고, FP8·MXFP4·NVFP4...