TL;DR
긴 추론에서는 생성 토큰의 Key·Value 표현을 KV 캐시에 계속 보존해야 하므로 메모리 예산이 병목이 되며, 기존 축출기는 Attention 점수나 Value 통계 또는 calibration data를 사용해 남길 토큰을 고릅니다. Random Attention은 프롬프트를 유지한 뒤 각 KV head에서 생성 토큰을 균등 무작위로 선택하고 짧은 recency window를 추가하는 방식으로 캐시를 줄여, 별도 신호 계산 없이 compaction만 수행합니다. MATH-500, GPQA-Diamond, AIME, HMMT, LiveCodeBench에서 Qwen3-4B·14B·32B와 phi-4-reasoning을 평가한 결과, 동일한 예산에서 SnapKV·R-KV·VaSE·TriAttention과 맞먹거나 앞섰으며 Hugging Face harness와 vLLM serving stack 모두에서 가장 빠른 축출기로 측정됐습니다. 저장소에는 축출 엔진, 평가·통계 검정·효율성 벤치마크, vLLM 포트와 메커니즘 연구 도구가 포함되어 있어 논문 수치의 재현과 셀 단위 무결성 검사를 지원합니다.
섹션별 상세
git clone https://github.com/SalesforceAIResearch/Random-Attention && cd Random-Attention
bash setup.shRandom Attention 저장소를 복제한 뒤 setup.sh로 Python 3.10 가상 환경과 실험 의존성을 설치합니다.
scripts/run_cell.sh Qwen3-4B math random_ppQwen3-4B 모델과 math 작업에서 Random Attention의 정확도 셀을 기본 예산으로 실행합니다.
scripts/run_cell.sh Qwen3-4B math vase # VaSE with the faithful n_large = K/4
scripts/run_cell.sh Qwen3-4B math triattn # TriAttention with per-model calibration stats같은 모델과 작업에서 VaSE 및 TriAttention 비교 실험을 각각 실행하며, 방법별 설정과 보정 통계를 적용합니다.
scripts/run_cell.sh phi-4-reasoning gpqa snapkv 2048phi-4-reasoning 모델의 GPQA 작업에서 SnapKV를 2048 예산으로 실행합니다.
python kvcompress/eval/stats_paired.py --base results/Qwen3-4B/math_K1024 --data_name math \
--method_a random_pp --methods_b attn,attn_rkv_l05,vase_faithful,triattn_ph_memofixQwen3-4B의 math 결과에서 Random Attention과 여러 비교 방법의 성능 차이를 paired bootstrap 및 sign test로 검정합니다.
용어 해설
- KV 캐시 축출(KV-cache Eviction)
- — KV 캐시 축출은 긴 생성 과정에서 저장된 토큰의 Key·Value 표현 일부를 제거해 메모리 사용량을 제한하는 기법입니다. 예산을 넘는 토큰을 선택해 삭제하고 필요한 최근 토큰이나 프롬프트를 유지함으로써 추론을 계속합니다. 어떤 토큰을 보존하느냐가 정확도와 처리 속도에 직접 영향을 줍니다.
- 어텐션 점수(Attention Score)
- — Attention Score는 현재 토큰이 이전 토큰의 정보를 얼마나 참조하는지 나타내는 값입니다. KV 캐시 축출기는 이 점수를 계산해 중요한 토큰을 남길 수 있지만, 계산 비용과 추가 통계 처리가 필요합니다. Random Attention은 이 신호를 전혀 읽지 않고 무작위 선택으로 대체합니다.
- KV 헤드(KV Head)
- — KV Head는 Transformer의 어텐션에서 Key와 Value를 묶어 처리하는 단위입니다. Random Attention은 전체 캐시를 한 번에 무작위로 줄이지 않고 KV 헤드마다 생성 토큰의 일부를 균등 무작위로 선택합니다. 헤드별 선택 구조가 캐시 축소 과정의 기본 단위가 됩니다.
- 쌍체 부트스트랩(Paired Bootstrap)
- — 쌍체 부트스트랩은 같은 문제 집합에서 두 방법의 결과를 짝지어 재표본화하고 성능 차이의 불확실성을 평가하는 통계 기법입니다. 이 저장소에서는 Random Attention과 비교 방법의 정확도 셀을 대상으로 사용합니다. sign test와 함께 결과 차이가 우연인지 확인하는 절차로 쓰입니다.
- vLLM
- — vLLM은 대규모 언어 모델을 서비스 환경에서 실행하는 추론 런타임입니다. 이 연구의 벤치마크에서는 vLLM 0.19의 paged-KV 압축 구조 안에 Random Attention 선택 규칙을 연결해 serving 처리 속도를 측정합니다. 정확도 전이 점검과 런타임 수정 사항도 별도 문서로 관리됩니다.
기술
- Python 3.10
- torch 2.4.0
- cu121
- flash-attn 2.7.3
- transformers 5.0.0
- Hugging Face harness
- vLLM 0.19
- Qwen3-4B
- Qwen3-14B
- Qwen3-32B
- phi-4-reasoning
- DeepSeek-R1-Distill-Llama-8B
- SnapKV
- R-KV
- VaSE
- TriAttention
활용 사례
- 긴 추론 작업에서 GPU 메모리 예산에 맞춘 KV 캐시 축소
- Hugging Face harness를 이용한 모델·작업·축출 방법·예산별 정확도 비교
- vLLM serving stack에서 paged-KV 압축과 Random Attention 선택 규칙의 처리 속도 측정
- KV 캐시 보존 패턴과 축출 시점을 분석하는 메커니즘 연구
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
