IndexCache

IndexCache

IndexCache는 DeepSeek-V3.2(DSA) 모델에서 중복된 top-k 계산을 줄여주는 기능이에요. 레이어 간에 top-k 인덱스를 캐시하고 재사용해서 계산량을 아껴요.

배경 (Background)

DeepSeek-V3.2는 DeepSeek Sparse Attention(DSA, 희소 어텐션) 메커니즘을 쓰는데, 여기서 top-k 토큰 선택이 레이어마다 계산돼요. 레이어가 많은 깊은 모델에서는 이 계산이 비쌀 수 있어요. IndexCache는 이전 레이어의 인덱스를 재사용함으로써 중복된 top-k 계산을 건너뛸 수 있게 해줘요.

참고: IndexCache 논문

사용법 (Usage)

CLI

vllm serve deepseek-ai/DeepSeek-V3.2 \
    --hf-overrides '{"use_index_cache": true, "index_topk_freq": 4}' ...

설정 참조 (Configuration Reference)

파라미터 타입 기본값 설명
use_index_cache bool false IndexCache 활성화. 이 기능을 쓰려면 반드시 true로 설정해야 해요.
index_topk_freq int 1 top-k를 계산하는 빈도(레이어 단위). 1 = 매 레이어마다 계산(비활성화), 4 = 1/4 레이어에서 계산
index_topk_pattern str null 레이어별 F/S 패턴. 설정하면 index_topk_freq를 덮어써요. 각 문자가 DSA 레이어 1개에 대응: F = Full, S = Shared

설정 예시 (Configuration Examples)

index_topk_freq 사용 (N 레이어마다 계산):

vllm serve deepseek-ai/DeepSeek-V3.2 \
    --hf-overrides '{"use_index_cache": true, "index_topk_freq": 4}' ...

index_topk_pattern 사용 (명시적 레이어별 제어):

# 61개 레이어용 커스텀 패턴: F = 계산, S = 재사용
vllm serve deepseek-ai/DeepSeek-V3.2 \
    --hf-overrides '{"use_index_cache": true, "index_topk_pattern": "FFSFSSSFSSFFFSSSFFFSFSSSSSSFFSFFSFFSSFFFFFFSFFFFFSFFSSSSSSFSF"}'

동작 원리 (How It Works)

  1. IndexCache가 활성화되면 "F"(Full)로 표시된 레이어가 top-k 인덱스를 계산해 저장해요
  2. 이후 "S"(Shared)로 표시된 레이어는 다시 계산하는 대신 이전 레이어의 캐시된 인덱스를 받아요
  3. 캐시된 인덱스가 레이어 스택을 따라 전달되어, 총 계산량이 줄어들어요

요구 사항 (Requirements)

  • DeepSeek-V3.2 또는 호환 DSA 모델
  • --hf-overridesuse_index_cache: true

더 알아보기