← Back to list

Mastering GPT-OSS — Attention 변형체 (2/6)

Attention Variants 완벽 가이드: LLM의 O(N²) 문제 해결법

Hugman Sangkeun Jung · 2026-02-09 07:53 · 52 claps · 10.3 min read
#대규모-언어-모델 #트랜스포머 #자연어처리 #gpt-oss #딥러닝
Open on Medium ↗
Wiki topics: LLM · Large Language Models

Mastering GPT-OSS — Attention 변형체 (2/6)

(You can find the English version of the post at this link.)

시리즈 위치

이 글은 Mastering GPT-OSS 시리즈1.2 Attention Variants 편입니다.

이전 글에서 Attention Sink가 Softmax의 정규화 문제를 어떻게 해결하는지 살펴보았습니다. 이번 글에서는 GPT-OSS가 사용하는 다양한 Attention 변형들 — Full, Window, Sliding, 그리고 Hybrid Attention 을 자세히 알아보겠습니다.

다양한 Attention 의 변형기법들이 어떻게 128K 토큰이라는 긴 컨텍스트를 효율적으로 처리할 수 있게 해주는지 이해하는 것이 이 글의 목표입니다.

Full Attention: 기본 형태

가장 기본적인 형태인 Full Attention부터 시작하겠습니다.

Full Attention에서는 각 Query가 모든 Key에 대해 attention을 계산합니다. 시퀀스 길이가 N이라면, N개의 Query가 있고 각 Query가 N개의 Key에 대해 attention을 계산해야 합니다. 따라서 총 복잡도는 O(N²)가 됩니다.

수식으로 표현하면 다음과 같습니다:

이 방식의 장점은 전역 컨텍스트(global context)를 완벽하게 포착할 수 있다는 것입니다. 모든 토큰이 다른 모든 토큰과 상호작용하기 때문에, 문서의 처음과 끝에 있는 정보도 서로 연결될 수 있습니다.

그러나 문제는 계산 복잡도입니다. 아래 그림 및 예를 통해 구체적으로 살펴보겠습니다.

시퀀스 [A, B, C, D, E, F]가 있을 때:

  • 1번 토큰 A가 query일 때: A는 자기 자신(A)과 B, C, D, E, F 모든 토큰에 대해 attention score를 계산합니다. 총 6번의 연산이 필요합니다.
  • 2번 토큰 B가 query일 때: B 역시 A, B, C, D, E, F 모든 토큰과 attention score를 계산합니다. 또 6번의 연산입니다.
  • 이하 C, D, E, F도 마찬가지: 각각 6번씩 연산합니다.

시퀀스 길이가 128K 토큰이라면 어떻게 될까요? attention 연산은 128K × 128K = 약 160억 번의 연산이 필요합니다. 이는 현실적으로 감당하기 어려운 수준이죠. 메모리 사용량도 마찬가지로 제곱에 비례하여 증가합니다.

Full (Dense) Attention in Transformers (Image by the author)

Full (Dense) Attention in Transformers (Image by the author)

Window Attention: 관심영역만

Full Attention의 복잡도 문제를 해결하기 위한 첫 번째 아이디어는 Window Attention입니다. 핵심 아이디어는 간단합니다:

“각 Query는 자신이 속한 윈도우 내의 Key들만 참조한다.”

시퀀스를 겹치지 않는 고정 크기 윈도우로 분할합니다. 예를 들어 윈도우 크기가 W=3이면, 시퀀스 [A, B, C, D, E, F]는 Window 1: [A, B, C]와 Window 2: [D, E, F]로 나뉘게 됩니다. 각 윈도우 내에서만 attention이 계산되죠.

수식으로 표현하면 다음과 같습니다:

여기서 Mᵢ,ⱼ = 0 (j가 윈도우 내), Mᵢ,ⱼ = -∞ (윈도우 외)입니다. 마스크 값이 -∞이면 Softmax 후에 해당 위치의 확률이 0이 되므로, 윈도우 외부의 토큰은 완전히 무시됩니다.

복잡도는 O(N ⋅ W)로 크게 감소합니다. W가 상수라면 사실상 O(N)이 되어, 시퀀스 길이에 선형적으로만 증가합니다.

그러나 Window Attention에는 치명적인 문제가 있습니다. 윈도우 경계에서 정보가 단절된다는 것입니다. Window 1의 C와 Window 2의 D는 바로 옆에 있음에도 불구하고 서로를 전혀 참조할 수 없습니다. 이는 문맥 이해에 심각한 문제를 일으킬 수 있죠.

Sliding Attention: 경계 문제 해결

Sliding Attention은 Window Attention의 경계 문제를 해결합니다. 기본 Window Attention과의 핵심 차이점은 윈도우가 겹친다(overlap)는 것입니다.

윈도우 크기가 4이고 stride가 2인 경우를 생각해봅시다. Window 1은 [A, B, C, D]를 포함하고, Window 2는 [C, D, E, F]를 포함합니다. 여기서 C와 D가 두 윈도우 모두에 포함된다는 점이 중요합니다. 이로 인해 경계 토큰들이 양쪽 컨텍스트를 모두 볼 수 있게 되는 거죠.

Sliding Window Attention with Overlapping Windows (Stride=2, Window=4)

Sliding Window Attention with Overlapping Windows (Stride=2, Window=4)

더 극단적으로 stride=1인 경우를 생각해볼 수 있습니다. 이 경우 각 토큰마다 고유한 윈도우가 있는 것과 같습니다. 토큰 A의 윈도우는 [A, B], 토큰 B의 윈도우는 [A, B, C], 토큰 C의 윈도우는 [B, C, D]가 됩니다. 각 토큰이 자신을 중심으로 주변 W개의 토큰을 볼 수 있게 되는 것이죠.

Sliding Window Attention with Overlapping Windows (Stride=1, Window=3)

Sliding Window Attention with Overlapping Windows (Stride=1, Window=3)

이 방식에서 각 Query는 자신을 중심으로 W개의 이웃 토큰만 참조합니다. 시퀀스 끝에 있는 경계 토큰(A, F 등)은 윈도우가 잘릴 수 있지만, 대부분의 토큰은 충분한 컨텍스트를 확보할 수 있습니다. 복잡도는 여전히 O(N ⋅ W)로 효율적입니다.

Autoregressive 모델링과의 결합

GPT-OSS와 같은 decoder 모델은 autoregressive하게 작동합니다. 다음 토큰을 예측할 때, 현재 토큰은 미래 토큰을 볼 수 없어야 합니다. 이는 학습과 추론의 일관성을 위해 필수적이죠.

이를 위해 causal masking(look-ahead masking)이 적용됩니다. Sequence가 만약 [A,B,C,D,E,F] 라고 할 때, Full Attention에서의 Query D는 [A, B, C, D]만 참조할 수 있고, E와 F는 미래 토큰이므로 마스킹됩니다.

Causal Masking

Causal Masking

Sliding Attention과 Autoregressive를 결합하면 어떻게 될까요? Query D는 윈도우 내의 토큰 중에서도 과거 토큰만 참조할 수 있습니다. 윈도우 크기가 3이라면 [B, C, D]가 윈도우에 포함되지만, A는 윈도우 밖이고 E, F는 미래 토큰이므로 결과적으로 [B, C, D]만 참조하게 됩니다.

이 조합으로 Sliding Attention은 autoregressive 모델에서 어떻게 보면 더 효과적으로 작동합니다. 각 토큰은 자신의 윈도우 내에서 과거 토큰들만 참조하므로, 인과성(causality)이 유지됩니다.

Attention 패턴 시각화

세 가지 attention 방식의 attention 패턴을 시각화하면 차이가 더욱 명확해집니다.

Attention Pattern Comparison

Attention Pattern Comparison

Full Attention은 전체 행렬에 값이 분포합니다. 모든 Query-Key 쌍이 계산되기 때문이죠. Window Attention은 블록 대각선 형태를 보입니다. 각 윈도우 내에서만 attention이 계산되기 때문입니다. Sliding Attention은 대각선 띠(band) 형태를 보입니다. 각 토큰이 주변 W개의 토큰만 참조하기 때문에 대각선을 따라 일정 폭의 띠가 형성됩니다.

Hybrid Attention: 두 방식의 장점 모으기

지금까지 살펴본 방식들에는 각각 트레이드오프가 있습니다. Full Attention은 전역 컨텍스트를 완벽하게 포착하지만 O(N²) 복잡도를 가집니다. Sliding Attention은 O(N⋅W)의 효율성을 제공하지만 장거리 의존성을 포착하기 어렵습니다.

Hybrid Attention은 이 두 가지를 결합하여 양쪽의 장점을 취합니다. GPT-OSS가 사용하는 방식은 Layer-wise Hybrid입니다. 핵심 아이디어는 다음과 같습니다:

“Transformer 레이어마다 Full과 Sliding을 번갈아 사용한다.”

예를 들어, Layer 1은 Sliding Attention으로 로컬 패턴을 학습하고, Layer 2는 Full Attention으로 전역 컨텍스트를 통합합니다. Layer 3은 다시 Sliding, Layer 4는 Full… 이런 식으로 교차하는 것이죠.

이 방식이 작동하는 직관은 다음과 같습니다. 초기 레이어에서는 단어 관계나 구문 구조 같은 로컬 패턴에 집중합니다. 상위 레이어로 갈수록 문서 전체의 의미를 파악하는 전역 컨텍스트 통합이 중요해집니다. 정보가 레이어를 거치면서 점진적으로 전파되므로, 모든 레이어가 Full Attention일 필요가 없습니다. Sliding Attention 레이어가 충분한 로컬 정보를 수집하면, 그 다음 Full Attention 레이어가 이를 전역적으로 통합할 수 있기 때문이죠.

복잡도 비교

각 방식의 복잡도를 비교해보면 그 차이가 명확해집니다.

128K 토큰 시퀀스에서 Full Attention은 약 164억 번의 연산이 필요한 반면, Sliding Attention은 약 5억 번으로 줄어듭니다. Hybrid 방식은 그 중간인 약 85억 번 정도의 연산으로, Full의 절반 정도 비용으로 전역 컨텍스트를 유지할 수 있습니다.

결론

이번 글에서 다룬 내용을 정리해보겠습니다.

  • Full Attention은 모든 토큰 간 상호작용을 계산하며 O(N²) 복잡도를 가집니다. 전역 컨텍스트를 완벽하게 포착할 수 있지만, 긴 시퀀스에서는 계산 비용이 감당하기 어려워집니다.
  • Window Attention은 고정된 윈도우 내에서만 attention을 계산하여 복잡도를 줄이지만, 윈도우 경계에서 정보 단절 문제가 발생합니다.
  • Sliding Attention은 겹치는 윈도우를 사용하여 경계 문제를 해결하면서 O(N⋅W)의 효율적인 복잡도를 유지합니다. Autoregressive 모델에서는 causal masking과 결합하여 사용됩니다.
  • Hybrid Attention은 레이어별로 Full과 Sliding을 교차 사용하여 효율성과 전역 컨텍스트 포착이라는 두 가지 목표를 모두 달성합니다.

GPT-OSS는 이러한 Sliding Attention + Hybrid 조합을 사용하여 128K 토큰의 긴 컨텍스트를 효율적으로 처리합니다.

아래 두 개의 실습 자료를 통해 직접 다양한 Attention 변형체를 테스트해 볼 수 있습니다.

[embed]01_[Hands-On] Understanding Attention Variants.ipynb Colab notebookdrive.google.com

[embed]02_[Hands-On] Sliding Attention Comparison: Full, Sliding Window (Naive & Optimized) Colab notebookdrive.google.com

다음 단계

다음 글에서는 KV-Cache Streaming을 다룹니다. 긴 시퀀스를 처리할 때 Key-Value 캐시를 어떻게 효율적으로 관리하는지, 그리고 이것이 Sliding Attention과 어떻게 결합되어 무한한 길이의 시퀀스도 일정한 메모리로 처리할 수 있게 해주는지 살펴보겠습니다.

KV-Cache 완벽 이해: LLM 추론 속도 최적화의 핵심 | Medium


메타데이터
post_id
a489e5e7aae7
slug
mastering-gpt-oss-attention-변형체-2-6-a489e5e7aae7
url
https://medium.com/@hugmanskj/mastering-gpt-oss-attention-%EB%B3%80%ED%98%95%EC%B2%B4-2-6-a489e5e7aae7
canonical_url
https://medium.com/@hugmanskj/mastering-gpt-oss-attention-%EB%B3%80%ED%98%95%EC%B2%B4-2-6-a489e5e7aae7
author_url
https://medium.com/@hugmanskj
status
ok
fetched_at
2026-06-09 15:37:30