LLM 추론 SWA의 역할과 한계
추론 시 Sliding Window Attention을 긴 문서 이해 기술로 오해하지 않고, KV 캐시 증가를 제한하는 캐시 정책으로 판단할 수 있도록 적용 대상과 한계를 정리한다.
LLM 추론용 SWA는 “긴 문서를 잘 읽는 기술”이 아니라 “캐시를 무한히 키우지 않는 기술”에 가깝다
사전학습 LLM에 Sliding Window Attention을 추론 레이어로 얹는 접근은 유용할 수 있다. 그러나 적용 판단을 잘못하면 기대와 결과가 어긋난다. 이 방식의 핵심 가치는 긴 컨텍스트 전체를 더 잘 이해하게 만드는 데 있지 않다. attention sink 토큰과 최근 토큰 윈도우만 KV 캐시에 남겨, 생성이 길어질 때 캐시가 계속 커지는 문제를 제한하는 데 있다.
따라서 의사결정 기준은 비교적 분명하다. 챗봇, 에이전트 루프, 스트리밍 생성처럼 “최근 대화 흐름을 유지하며 오래 생성하는” 워크로드라면 검토할 만하다. 반대로 긴 문서 중간에 나온 사실을 나중에 정확히 회수해야 하는 RAG, 법률·계약서 분석, 장문 QA에는 이 기법만으로 충분하다고 보면 안 된다.
왜 단순 sliding window만으로는 부족한가
기본적인 KV 캐시는 생성된 과거 토큰의 key/value를 계속 보관한다. 캐싱을 쓰면 매 스텝마다 전체 과거를 다시 계산하지 않아도 된다. 대신 메모리는 시퀀스 길이에 따라 증가한다. 긴 생성에서는 이 KV 캐시가 병목이 된다.
가장 단순한 대응은 최근 K개 토큰만 남기는 sliding window다. 그러나 StreamingLLM 연구는 최근 KV만 캐시하는 window attention이 텍스트 길이가 캐시 크기를 넘어서면 실패한다고 보고했다. 모든 과거 토큰이 같은 정도로 불필요한 것은 아니기 때문이다. 일부 초기 토큰은 모델의 attention이 안정적으로 흐르도록 하는 “attention sink”처럼 작동한다.
StreamingLLM 계열의 아이디어는 여기서 나온다. 초기 attention sink 토큰의 KV를 보존하고, 나머지는 최근 sliding window만 유지한다. 해당 연구는 attention sink로 초기 4개 토큰만 유지해도 충분하다고 보고했으며, sliding window 재계산 기준 대비 최대 22.2배 속도 향상을 제시했다. 단, 이 수치는 전체 KV 캐시 방식과 직접 비교한 토큰/초 개선률이 아니다. 실제 Hugging Face 모델, 윈도우 크기, GPU 조건에서 얼마나 빨라지는지는 별도 측정이 필요하다.
추론 레이어 SWA가 주는 실용성
이번 주제의 커뮤니티 구현은 Hugging Face causal LLM에 대해 모델을 수정하거나 재학습하지 않고, 재사용 가능한 추론 레이어로 SWA를 적용하려는 시도다. 실무 관점에서 검토할 이유가 있다. 이미 배포한 모델을 다시 학습하지 않고, 추론 시 KV 캐시 정책만 바꿔 자원 사용을 제어할 수 있기 때문이다.
다만 여기서 “Hugging Face 모델이면 다 된다”는 결론까지 가면 안 된다. 확인된 범위는 커뮤니티 구현이 Llama, Mistral, Falcon, MPT, GPT-NeoX 계열을 지원한다는 정도다. Hugging Face 문서의 SlidingWindowCache도 오래된 KV를 버리고 최근 sliding_window 토큰만 유지하지만, sliding window attention을 지원하는 모델에서만 작동하도록 설계됐다고 설명한다. 즉, 캐시 정책과 모델 구조의 호환성은 구현별로 확인해야 한다.
attention sink 기반 SWA의 차이점은 단순히 “최근 토큰만 남긴다”가 아니라 “초기 sink 토큰과 최근 윈도우를 함께 남긴다”는 데 있다. 이 조합은 단순 sliding window에서 나타나는 성능 붕괴를 완화하려는 장치다.
무엇을 잃는가: 중간 과거는 사라진다
이 방식의 비용은 명확하다. 중간 과거 토큰을 버린다. Hugging Face의 attention sinks 설명도 최근 토큰과 attention sink만 유지하고 중간 토큰은 폐기된다고 설명한다. 그러면 모델은 사실상 최근 토큰 중심으로 처리한다.
이 점은 제품 요구사항으로 번역해야 한다.
대화형 어시스턴트가 최근 몇 턴의 맥락만 유지하면 되는 경우라면, 중간 과거를 버리는 손실이 감당 가능할 수 있다. 에이전트가 장시간 도구 호출을 반복하지만 매 단계 의사결정이 최근 상태에 주로 의존한다면, bounded cache의 이점이 더 클 수 있다.
반대로 사용자가 초반이나 중간에 준 제약을 수천 토큰 뒤에도 정확히 지켜야 한다면 위험하다. 예를 들어 “앞에서 언급한 세 번째 조항의 예외 조건”처럼 중간 문맥을 직접 참조해야 하는 작업에서는 SWA가 그 정보를 캐시에서 제거했을 수 있다. 이 경우 필요한 정보는 별도 메모리, 검색, 요약 상태, 재주입 프롬프트로 관리해야 한다. SWA는 장기 기억 장치가 아니다.
환각률에 대해서도 조심해야 한다. attention sink와 window 크기 설정이 텍스트 LLM의 환각률을 낮추거나 높인다는 직접적인 정량 근거는 확인되지 않았다. 중간 맥락을 잃으면 특정 작업에서 오류가 늘 수 있다는 추론은 가능하다. 그러나 이를 환각률 전반의 개선 또는 악화로 단정할 수는 없다.
적용 결정을 위한 기준
이 기법은 다음 조건이 맞을 때 우선 실험할 가치가 있다.
첫째, 병목이 KV 캐시 메모리다. 전체 과거 KV를 계속 보관하는 방식에서는 메모리가 길이에 따라 증가한다. SWA는 attention sink와 최근 윈도우만 유지하므로 긴 컨텍스트에서 캐시 크기를 윈도우 기준으로 제한한다. 정확한 절감률은 모델 구조, 레이어 수, hidden size, 윈도우 크기, 배치 크기에 따라 달라지므로 직접 측정해야 한다.
둘째, 품질 요구가 “전체 과거 회수”가 아니라 “최근 흐름 유지”에 가깝다. 이 조건이 맞지 않으면 메모리는 줄어도 제품 품질은 나빠질 수 있다.
셋째, 배포 대상 모델에서 구현 호환성을 검증할 수 있다. Hugging Face의 기본 캐시, SlidingWindowCache, attention sink 기반 커스텀 레이어는 같은 문제가 아니다. 특히 내장 SlidingWindowCache는 sliding window attention을 지원하는 모델을 전제로 한다.
실험할 때는 전체 KV 캐시를 기준선으로 두고, 최소한 세 가지를 같이 봐야 한다. 최대 생성 길이에서의 KV 메모리, 토큰 생성 속도, 그리고 윈도우 밖 정보를 요구하는 평가셋의 실패율이다. 평균 응답 품질만 보면 중간 과거 손실을 놓치기 쉽다.
결론적으로, 추론용 SWA는 장문 이해력을 공짜로 늘리는 방법이 아니다. 재학습 없이 캐시를 bounded하게 만들고, attention sink로 단순 sliding window의 불안정성을 줄이려는 추론 최적화다. 최근 문맥 중심의 긴 생성에는 실용 후보가 될 수 있다. 그러나 장문 전체를 기억해야 하는 제품에는 검색·요약·상태 관리와 함께 써야 한다.
다음으로 읽기
- 샌더스·카사르 AI 금지 법안의 실무적 의미
- CKD 선별에 LLM을 쓰기 전 확인할 것
- 채용 LLM 감사는 과정 로그부터
- AI 자기증폭 루프를 보는 법
- 인과 리코스 XAI의 제품 설계 기준
참고 자료
업데이트 받기
주간 요약과 중요한 업데이트만 모아서 보내드려요.
오류를 발견했나요? 정정/오류 제보로 알려주시면 검토 후 업데이트에 반영할게요.