트랜스포머가 모든 토큰 쌍을 비교하지 않고 관련 있어 보이는 토큰만 골라 어텐션을 계산해서, 긴 입력을 싸고 빠르게 처리하는 방법이다. 기본 어텐션은 입력이 길어질수록 계산이 제곱으로 불어나 책 한 권 분량부터 버거운데, 희소 어텐션은 이 부담을 줄여 긴 코드베이스나 문서를 통째로 넣는 작업에서 효과가 크다.
| 구분 | 기본(dense) 어텐션 | 희소(sparse) 어텐션 |
|---|---|---|
| 비교 대상 | 모든 토큰 쌍 | 골라낸 일부 토큰 |
| 입력이 길어지면 | 계산이 제곱으로 늘어남 | 길이에 비례하는 수준 |
| 약점 | 느리고 비쌈 | 건너뛴 토큰의 정보를 놓칠 수 있음 |
사람이 소설을 읽을 때 바로 앞 문장과 핵심 장면 몇 군데만 떠올리는 것처럼 읽는다고 보면 된다.
무엇을 볼지 정하는 방법은 크게 둘이다. 정해진 규칙은 단순하지만, 중요한 토큰이 범위 밖에 있으면 놓친다. 그래서 최근에는 모델이 학습으로 직접 고르게 하는 쪽으로 가고 있다.
| 방식 | 어떻게 고르나 | 예 |
|---|---|---|
| 규칙 | 바로 앞 N개만 보는 창문(슬라이딩 윈도우)에 전체를 보는 층이나 이정표 토큰을 섞음 | Gemma 3, gpt-oss |
| 학습 | 가벼운 채점기가 모든 토큰에 점수를 매기고 상위 일부만 자세히 봄 | DeepSeek-V3.2 (DSA) |
창문 방식은 KV 캐시를 창문 크기만큼만 들고 있으면 돼서, 대화가 길어져도 메모리가 훨씬 덜 늘어난다.
API로 쓰는 사람에게 희소 어텐션의 효과는 가격과 속도로 나타난다. DeepSeek은 이 방식을 넣고 성능은 비슷하게 유지하면서 API 가격을 절반 이상 내렸다. 긴 코드베이스나 문서 묶음을 매번 통째로 넣는 에이전트라면, 모델을 고를 때 최대 컨텍스트 길이만 보지 말고 긴 입력의 토큰 단가와 응답 속도를 함께 비교하는 게 좋다.
희소 패턴은 전용 GPU 커널이 있어야 제 속도가 난다. 예를 들어 vLLM은 DeepSeek-V3.2용 전용 캐시와 희소 커널을 따로 붙였고, vllm serve deepseek-ai/DeepSeek-V3.2-Exp --tensor-parallel-size 8처럼 GPU 여러 장에 나눠 띄운다. 새로운 구조의 모델은 추론 엔진이 지원할 때까지 기다려야 할 때가 많고, 지원되더라도 특정 GPU 세대에서만 최적화된 경우도 있다.
중요하지 않아 보여서 건너뛴 토큰에 답이 있었다면 틀린 답이 나온다. 긴 문서 여기저기에 흩어진 단서를 모두 모아야 하는 질문에서 이 약점이 잘 드러난다. 또 계산량이 줄어도 메모리를 띄엄띄엄 읽으면 GPU가 비효율적으로 돌아서, 실제 속도가 기대보다 덜 나올 수 있다.
희소 어텐션은 사용자가 따로 켜는 옵션이 아니라 모델 안에 들어 있는 구조다. 그래서 긴 입력이 많은 작업에 이 구조를 쓴 모델을 고르는 방식으로 쓴다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코딩 에이전트 | 저장소 파일을 많이 읽는 작업에 희소 어텐션 모델을 API로 붙여 긴 입력 비용을 낮춤 |
| 긴 문서 요약·질의 | 계약서·보고서 묶음을 통째로 넣고 요약하되, 여러 곳의 단서를 엮는 질문은 결과를 따로 확인 |
| 로컬·자체 서버 | 슬라이딩 윈도우가 섞인 오픈 모델을 띄워 긴 대화에서도 KV 캐시 메모리를 아낌 |