Fathom, 질의별 KV 캐시 읽기 깊이로 장문맥 디코딩 최적화
장문맥 추론에서 병목은 모델 연산량이 아니라 메모리 트래픽일 수 있습니다. 에이전트 세션이 백만 토큰에 이르고 여러 세션이 동시에 상주하면 KV 캐시와 순위 계산용 인덱스가 호스트 RAM에 놓일 수 있습니다. 디코딩 단계마다 모든 키를 스캔해 Top-k 후보를 골라야 하므로, 최종적으로 선택된 KV 행을 읽는 작업보다 인덱스 스캔이 더 큰 비용이 됩니다.
Fathom은 모든 질의에 같은 스캔 정밀도를 적용하는 대신, 질의가 각 키 채널에서 몇 비트를 읽을지 결정하게 합니다. 4비트 K 캐시는 채널 중심의 비트 평면으로 저장됩니다. 한 채널의 앞쪽 t개 평면을 읽으면 해당 채널의 t비트 양자화 값을 사용하는 것과 같기 때문에, 부분 읽기에서도 연속적인 메모리 접근을 유지하면서 정밀도를 단계적으로 높일 수 있습니다.
전체 비트 예산이 주어지면 Fathom은 현재 질의에 중요한 채널에 더 많은 비트를 할당합니다. 이 역 워터필링 방식은 닫힌 형태로 계산할 수 있으며, 하나의 Triton 커널에서 실행됩니다. 따라서 복잡한 별도 스케줄링을 추가하지 않고 질의별 읽기 예산을 적용할 수 있습니다.
논문에서 제시한 주요 결과는 다음과 같습니다.
- A100에서 Qwen3-8B와 백만 토큰 문맥을 사용했을 때, Double Sparsity, Loki, SparQ 계열의 136비트 스캔보다 GPU 시간 기준 1.67배 빠른 디코딩을 달성했습니다.
- SparQ의 68비트 읽기 구성과 같은 GPU 시간에서 Fathom은 읽는 바이트 수를 18% 줄였고, 7개 모델·문맥 설정 중 6개에서 더 낮은 어텐션 오차를 보였습니다.
- RULER 스타일 작업에서는 토큰별 스캔 결과가 정확한 Top-k 디코딩과 일치했습니다. 실제 OpenHands 코딩 에이전트 세션에서는 92비트 읽기만으로 가장 정확한 136비트 스캔과 같은 단계 일치 수준에 도달했습니다.
이 연구가 보여주는 방향은 인덱스를 일괄적으로 줄이는 것에서 질의별 읽기 예산을 배분하는 방식으로의 전환입니다. KV 데이터가 호스트 메모리에 있는 서비스 환경에서는 산술 연산을 줄이는 것보다 불필요한 메모리 이동을 없애는 일이 더 중요할 수 있습니다. 다만 Fathom은 모든 환경에서 빨라지는 방법은 아닙니다. 인덱스가 이미 GPU 메모리에 있으면 스캔은 산술 연산에 의해 제한되므로, 읽기 비트를 줄여도 필요한 곱셈·덧셈이 사라지지 않습니다. 저자들은 보정 데이터 영역의 영향도 작다고 보고했으며, 코드와 결과 파일, 실행 체인을 공개했습니다.
댓글
로그인 상태 확인 중…
댓글 불러오는 중…