AI의 변화, 근거와 맥락까지.AI NEWS & CONTEXT
AI 사전 · 작동 원리

어텐션

어텐션은 데이터에 따라 달라지는 가중치를 여러 표현에 매기고, 그 가중 합으로 출력을 만드는 신경망 연산 계열이다. 기계 번역에서 고정 크기 벡터 병목을 없애려는 방법으로 처음 주목받았고, 이후 트랜스포머의 핵심 토큰 혼합 연산이 되었다.

어텐션
분류신경망 연산 계열(가중 집계)[1]
처음 쓰인 곳2014년 기계 번역 모델[2]
대표 구조트랜스포머의 토큰 혼합 연산(2017년)[3]
핵심 수식스케일드 점곱 어텐션[3]
기본 구성질의(query), 키(key), 값(value)의 가중 합[1]

쉽게 말하면, 어텐션은 입력의 여러 부분 가운데 지금 중요한 부분에 더 큰 비중을 두고 그 내용을 합치는 계산 방법이다. 처음에는 기계 번역에서 문장 전체를 고정 크기 벡터 하나로 압축하던 방식의 병목을 줄이려고 쓰였다. 지금은 트랜스포머가 단어들 사이의 관계를 계산하는 기본 연산으로 쓰인다.[1]

1. 개요

어텐션(attention)은 데이터에 따라 달라지는 가중치를 여러 표현에 매기고, 그 가중치로 표현들을 합쳐 출력을 만드는 신경망 연산 계열이다. 가중치는 현재의 질의나 문맥에 따라 정해지므로, 같은 입력 요소라도 디코딩 단계, 공간 위치, 층에 따라 다르게 작용할 수 있다. 어텐션은 처음에 신경망 기계 번역의 고정 벡터 병목을 없애는 방법으로 주목받았고, 이후 트랜스포머의 주된 토큰 혼합 연산이 되었다.[1]

머신러닝에서 어텐션이라는 말은 사람의 주의 집중을 재현한다는 주장이 아니라 기술 용어다. 이 말은 여러 관련 구조를 가리키며, 여기에는 순환 신경망 기반 인코더·디코더 어텐션, 셀프 어텐션, 크로스 어텐션, 희소 어텐션, 멀티헤드 어텐션이 포함된다. 이들의 공통점은 학습된 방식으로 입력에 따라 달라지는 집계를 한다는 것이다.[1]

2. 정의와 범위

이 기법 이전에는 영향력 있던 시퀀스 대 시퀀스 설계가 입력 시퀀스를 고정 차원 벡터 하나로 인코딩하고, 두 번째 순환 신경망으로 목표 시퀀스를 디코딩했다.[4] Bahdanau, Cho, Bengio는 디코더가 출력 단계마다 모든 인코더 상태에 가중치를 두어 그때그때 다른 문맥 벡터를 만들게 했다. 이들은 이를 입력 위치에 대한 미분 가능한 소프트 탐색으로 설명했고, 정렬 모델과 번역 모델을 함께 학습시켰다.[2] 이 메커니즘은 기계 번역을 위해 도입되었지만, 같은 아이디어는 곧 이미지 캡션 생성과 음성 인식에도 나타났다.[5][6][7][1]

추상적으로 어텐션 층은 다음을 입력으로 받는다:[1]

  • 하나 이상의 질의(query): 무엇에 대한 정보를 요청하는지 정한다.
  • 키(key): 질의와 비교되는 대상이다.
  • 값(value): 집계될 정보를 담고 있다.
  • 점수 함수와, 보통은 정규화 함수.[1]

질의 q_i, 키 k_j, 값 v_j에 대해 흔히 쓰는 형태는 다음과 같다.[1]

e_{ij} = s(q_i, k_j)
\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{\ell \in A_i}\exp(e_{i\ell})}
o_i = \sum_{j \in A_i}\alpha_{ij}v_j
기본 어텐션 수식

여기서 s는 학습되거나 고정된 호환성 점수, A_i는 질의 i가 볼 수 있는 위치들의 집합, α_ij는 어텐션 가중치, o_i는 출력이다. 패딩(padding) 위치, 미래 위치, 이웃이 아닌 위치처럼 허용되지 않는 연결은 마스크가 A_i에서 제외한다. 소프트맥스(softmax) 정규화를 쓰면 A_i에 대한 가중치는 음이 아니며 합이 1이다.[1]

이 정의는 흔히 혼동되는 세 가지 선택을 구분한다:[1]

  • 무엇이 소통할 수 있는가? 어텐션 패턴이나 마스크가 허용하는 질의-키 쌍을 정한다.
  • 관련성은 어떻게 점수화되는가? 점수는 가법, 점곱, 쌍선형 또는 다른 학습 함수일 수 있다.
  • 무엇이 전달되는가? 값은 같은 입력에서 나오더라도 키와 같을 필요가 없다.[1]

따라서 어텐션은 트랜스포머와 같은 뜻이 아니다. 트랜스포머 이전에도 순환 인코더·디코더 모델이 어텐션을 썼고, 어텐션 모듈은 합성곱 신경망, 그래프, 집합, 멀티모달 구조에도 넣을 수 있다.[1]

3. 등장 배경과 발전

3.1. 인코더·디코더 어텐션

2014년 Bahdanau 모델은 순환 인코더·디코더 번역의 고정 벡터 병목을 해결하려 했다. 디코더의 각 단계 i에서 정렬 모델이 이전 디코더 상태를 양방향 인코더가 만든 각 주석(annotation)과 비교한다. 소프트맥스가 그 점수를 가중치로 바꾸고, 가중 합이 단계마다 고유한 문맥 벡터가 된다.[2] 정렬 모델이 작은 순방향 신경망을 쓰므로, 이 구성은 흔히 가법 어텐션(additive attention) 또는 Bahdanau 어텐션이라고 부른다.[1]

Luong, Pham, Manning은 나중에 모든 입력 위치를 보는 전역 어텐션과 창 안으로 제한하는 지역 어텐션을 비교했다. 점수 함수로는 점곱, 쌍선형, 연결 기반을 함께 연구했다.[5] 이 논문들을 통해 ‘어텐션’은 단일 공식이 아니라 정렬과 집계 선택의 계열을 뜻하는 말로 자리 잡았다.[1]

소프트 어텐션(soft attention)과 하드 어텐션(hard attention)의 구분은 요소를 고르는 방식에 관한 것이다. 소프트 어텐션은 연속 가중치로 값을 평균하므로 가중치를 통해 미분할 수 있다. 하드 어텐션은 이산적인 위치를 샘플링하거나 골라서 계산할 위치 수를 줄일 수 있지만, 보통 기울기 추정기나 다른 학습 전략이 필요하다. Xu 등은 이미지 캡션 생성에서 두 방식을 모두 평가했다.[6] Chorowski 등은 순환 어텐션을 음성 인식에 맞게 바꾸고, 긴 음향 시퀀스를 따라 정렬이 진행되도록 위치 인식 정보를 더했다.[7][1]

3.2. 트랜스포머 어텐션

2017년 논문 「Attention Is All You Need」는 순환이나 합성곱으로 시퀀스를 섞지 않고, 어텐션과 위치별 순방향 층만으로 만든 인코더·디코더 구조를 제시했다.[3] 핵심 연산은 스케일드 점곱 어텐션(scaled dot-product attention)이다.

\operatorname{Attention}(Q,K,V) = \operatorname{softmax}\left(\frac{QK^\top}{\sqrt{d_k}} + M\right)V
스케일드 점곱 어텐션

Q의 행은 질의, K의 행은 키, V의 행은 값이며, M은 선택 사항인 마스크다. 스케일 계수 1/√d_k는 키 차원 d_k가 커질 때 점곱 값의 전형적인 크기를 제한한다. 이 스케일링이 없으면 큰 로짓 값이 소프트맥스를 기울기가 작은 영역으로 밀어낼 수 있다.[3]

입력 행렬 X가 있을 때 셀프 어텐션 층은 보통 학습된 투영으로 세 행렬을 만든다.[1]

Q=XW_Q,\qquad K=XW_K,\qquad V=XW_V
셀프 어텐션의 투영

트랜스포머 어텐션 덕분에 학습 중 모든 시퀀스 위치를 병렬로 계산할 수 있게 되었다. 또한 두 위치 사이의 최대 경로 길이가 상수 번의 어텐션 연산으로 줄었다. 다만 전체 어텐션 층은 모든 쌍을 비교하므로 점수 행렬의 크기가 시퀀스 길이의 제곱에 비례한다.[3][1]

4. 스케일드 점곱 어텐션, 단계별로

이 절은 2017년 트랜스포머 논문의 표기를 따라 어텐션 층 하나를 살펴보고, 두 토큰짜리 예시를 손으로 계산한다. 여기서 정하는 형태, 스케일 계수, 연산 순서는 이후 모든 변형이 물려받는 기준이다. 개별 변형은 관련 문서에서 자세히 다룬다.[1]

입력 행렬 X는 토큰마다 한 행이 있으며 형태는 n × d_model이다. 학습되는 세 행렬이 X를 질의, 키, 값으로 바꾼다.[1]

Q = XW^Q,\qquad K = XW^K,\qquad V = XW^V
질의, 키, 값 투영

W^Q와 W^K는 d_model × d_k 형태이고, W^V는 d_model × d_v 형태다. 질의와 키는 점곱으로 비교되므로 차원 d_k를 공유해야 하지만, 값은 다른 너비 d_v를 가질 수 있으며 출력은 그 너비를 물려받는다. 원래 모델은 d_model = 512였고, 헤드가 h = 8개일 때 각 헤드는 d_k = d_v = d_model/h = 64를 썼다.[3] 셀프 어텐션에서는 같은 X가 세 투영 모두에 들어가고, 크로스 어텐션에서는 질의가 한 표현에서, 키와 값이 다른 표현에서 나온다(주요 형태 절 참고).[1]

4.1. 점수 계산과 스케일 계수

점수 행렬은 모든 질의를 모든 키와 비교하며, 다음과 같이 만든다.[1]

S = \frac{QK^\top}{\sqrt{d_k}}
점수 행렬

S의 형태는 n × n이고, 항목 S_ij는 토큰 i가 토큰 j에 얼마나 강하게 주의를 두는지 측정한다. 트랜스포머 논문의 저자들은 스케일링이 없으면 d_k가 클 때 가법 어텐션이 점곱 어텐션보다 나았다고 보고했다. 저자들은 그 이유를 점곱 값이 크게 자라 소프트맥스를 기울기가 극도로 작은 영역으로 밀어내기 때문이라고 추정했고, 그 해결책으로 √d_k로 나누는 방식을 택했다.[3]

각주에 실린 직관은 다음과 같다. q와 k의 성분이 평균 0, 분산 1인 독립 확률 변수라면 q·k는 평균 0, 분산 d_k를 가지므로, √d_k로 나누면 분산이 다시 1이 된다.[3]

나누는 값은 모델 너비가 아니라 헤드별 키 차원이다. 원래 설정에서 점수는 √512 ≈ 22.6이 아니라 √64 = 8로 나눈다. d_model을 잘못 쓰면 소프트맥스가 의도보다 훨씬 평평해진다.[1]

4.2. 소프트맥스와 마스킹

소프트맥스는 행마다 적용되므로, 각 질의가 키에 두는 가중치는 음이 아니고 합이 1이다. 마스크 M은 소프트맥스 이전에 점수에 더한다. 허용된 위치는 0을, 허용되지 않은 위치는 −∞(실제로는 큰 음수)를 받아 지수 함수 뒤에 정확히 0이 된다. 트랜스포머 논문은 인과 마스크를 이렇게 설명한다. 소프트맥스 입력에서 허용되지 않은 연결에 해당하는 값을 모두 −∞로 설정해 가리므로, 디코더에서 왼쪽 방향 정보가 흐르지 않는다.[3] 소프트맥스 뒤에 마스크를 적용하면 남은 가중치의 합이 1보다 작아지므로, 의도와 다른 연산이 된다.[1]

마지막 단계는 가중치에 값을 곱하는 것이다.[1]

P = \operatorname{softmax}(S + M),\qquad O = PV
가중치 적용과 출력

O의 형태는 n × d_v다. 다중 헤드 층에서는 이 전체 계산이 헤드마다 각자 투영된 Q, K, V로 한 번씩 수행되고, 헤드 출력을 이어 붙인 뒤 W^O로 투영한다.[3]

큰 점수에 대한 소프트맥스는 행의 최댓값을 먼저 빼고 계산한다. 수학적으로 결과는 같지만 지수 값이 범위를 벗어나지 않는다.[1]

\operatorname{softmax}(x)_i = \frac{e^{x_i - m(x)}}{\sum_j e^{x_j - m(x)}},\qquad m(x) = \max_i x_i
안정적인 소프트맥스

FlashAttention은 정확히 이 형태를 쓰고, 최댓값과 정규화 상수를 키 블록에 걸쳐 점진적으로 유지할 수 있음을 보여 준다. 그래서 전체 점수 행렬을 메모리에 만들지 않아도 된다.[8] 점진적 형태는 Milakov와 Gimelshein의 온라인 정규화 상수 계산에서 가져왔다.[9][1]

4.3. 계산 예시와 인과 마스킹

d_model = d_k = d_v = 2인 토큰 두 개를 살펴본다. 모든 행렬이 2×2다. 아래 투영 가중치는 손으로 확인할 수 있도록 고른 값이며, 실제 학습된 층은 이 값을 학습으로 얻는다.[1]

X = \begin{pmatrix} 1 & 2 \\ 2 & 1 \end{pmatrix},\quad W^Q = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix},\quad W^K = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix},\quad W^V = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}
예시의 입력과 투영 가중치

투영 결과 Q = X이고, K는 X의 열을 서로 바꾼 것이며, V는 둘째 열의 부호를 바꾼 것이다.[1]

Q = \begin{pmatrix} 1 & 2 \\ 2 & 1 \end{pmatrix},\quad K = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix},\quad V = \begin{pmatrix} 1 & -2 \\ 2 & -1 \end{pmatrix}
예시의 Q, K, V
두 토큰 예시의 계산 단계 · 소수 넷째 자리 반올림
단계토큰 1의 행토큰 2의 행비고
원점수 QK^T(4, 5)(5, 4)q1·k1 = 1·2 + 2·1 = 4; q1·k2 = 1·1 + 2·2 = 5[1]
√d_k(≈1.4142)로 나눔(2.8284, 3.5355)(3.5355, 2.8284)나누는 값은 √d_k[1]
행 최댓값 빼기(-0.7071, 0)(0, -0.7071)수치 안정화 단계[1]
지수 함수(0.4931, 1)(1, 0.4931)두 행의 합은 모두 1.4931[1]
소프트맥스 가중치(0.3302, 0.6698)(0.6698, 0.3302)각 행의 합은 1[1]
출력 O = PV(1.6698, -1.3302)(1.3302, -1.6698)1행은 0.3302·v1 + 0.6698·v2[1]

토큰 1은 q1·k2 = 5가 q1·k1 = 4보다 크기 때문에 토큰 2에 더 큰 가중치(0.6698)를 준다. 출력은 두 값 행의 혼합이며 v2 = (2, −1) 쪽으로 기운다. 스케일 계수를 생략했다면 토큰 1의 가중치는 (0.2689, 0.7311)이 되었을 것이다. 순서는 같지만 분포가 더 날카로워지며, 그 날카로움은 d_k가 커질수록 커진다.[1]

자기회귀 모델은 위치 i가 j ≤ i인 위치만 보도록 마스크를 더하며, 행렬로는 대각선과 그 아래가 0, 위쪽이 −∞인 형태다.[1]

M = \begin{pmatrix} 0 & -\infty \\ 0 & 0 \end{pmatrix}
인과 마스크

이 예시에 적용하면 토큰 1의 스케일된 점수는 (2.8284, −∞)가 되고, 가중치는 (1, 0), 출력은 정확히 v1 = (1, −2)가 된다. 토큰 2는 이미 두 토큰을 모두 보므로 행이 바뀌지 않는다. 가중치는 (0.6698, 0.3302), 출력은 (1.3302, −1.6698)이다.[1]

일반 규칙은 위치 i의 출력이 i까지의 토큰에만 의존한다는 것이다. 이로부터 두 가지 결과가 나온다. 학습 중에는 정답 시퀀스가 알려져 있고 각 행이 이 제약을 이미 지키므로, 모든 위치를 하나의 마스크된 점수 행렬로 병렬 계산할 수 있다.[10] 생성 중에는 새 토큰을 덧붙여도 앞 위치의 키와 값이 바뀌지 않으므로 저장해 두고 다시 계산하지 않아도 된다. 이것이 뒤에서 다루는 KV 캐시다.[1]

5. 주요 형태

5.1. 셀프 어텐션과 크로스 어텐션

셀프 어텐션에서는 질의, 키, 값이 모두 같은 시퀀스나 집합에서 만들어진다. 따라서 각 출력 위치가 같은 입력의 다른 위치 정보를 결합할 수 있다. 크로스 어텐션에서는 질의가 한 표현에서, 키와 값은 다른 표현에서 나온다. 인코더·디코더 번역에서는 디코더 상태가 질의가 되고 인코더 상태가 키와 값이 된다. 같은 구조로 텍스트에 따라 이미지 표현을 조건화하거나 다른 두 모달리티를 연결할 수 있다.[1]

이 용어들은 점수 함수가 아니라 Q, K, V가 어디에서 나오는지를 가리킨다. 셀프 어텐션이든 크로스 어텐션이든 단일 헤드 또는 다중 헤드, 밀집 또는 희소, 인과 또는 비인과일 수 있다.[1]

5.2. 인과, 양방향, 패딩 마스크

인과 마스크(causal mask)는 위치 i가 i 이전과 i 자신까지의 위치만 보도록 허용한다. 점수 행렬에서 허용되지 않는 항목은 소프트맥스 뒤에 0이 되는 값을 받으며, 보통 정규화 전에 −∞를 넣어 구현한다. 인과 셀프 어텐션은 자기회귀 언어 모델에 쓰인다.[1]

마스크가 없는 인코더는 양쪽 방향을 모두 볼 수 있다. 예를 들어 BERT는 양방향 트랜스포머 인코더와 마스크 언어 모델 목적 함수를 쓴다. 여기서 ‘양방향’은 허용되는 어텐션 패턴을 뜻하며, 별도의 점수 규칙을 뜻하지 않는다.[1]

패딩 마스크(padding mask)는 길이가 다른 예시를 배치로 묶을 때 생기는 자리표시자 위치를 제외한다. 그 밖의 마스크는 지역 창, 그래프 이웃, 블록 구조, 응용별 제약을 강제할 수 있다. 올바른 마스킹은 구현 세부가 아니라 층의 수학적 정의의 일부다.[1]

5.3. 멀티헤드 어텐션

멀티헤드 어텐션은 학습된 질의, 키, 값 투영을 여러 개 병렬로 적용한다.[1]

\operatorname{head}_r = \operatorname{Attention}(QW_r^Q, KW_r^K, VW_r^V)
\operatorname{MHA}(Q,K,V) = \operatorname{Concat}(\operatorname{head}_1,\ldots,\operatorname{head}_h)W^O
멀티헤드 어텐션 수식

원래 트랜스포머는 표현을 헤드 사이에 나눈 뒤 각 헤드 출력을 이어 붙이고 출력 투영을 적용했다.[3] 여러 헤드는 한 층 안에서 서로 다른 투영된 상호작용을 표현하게 한다. 다만 한 헤드가 안정적인 하나의 언어적 또는 의미적 개념에 대응한다고 가정해서는 안 된다. 헤드의 행동은 모델, 층, 입력, 학습 실행, 분석 방법에 따라 달라진다.[1]

5.4. 가법 점수와 승법 점수

두 가지 흔한 호환성 함수는 다음과 같이 정의된다.[1]

s_{\mathrm{add}}(q,k) = v_a^\top\tanh(W_q q + W_k k)
s_{\mathrm{dot}}(q,k) = q^\top k
가법 점수와 점곱 점수

가법 어텐션은 학습된 순방향 정렬 모델을 쓴다. 승법(multiplicative) 어텐션은 점곱이나 q^T W k 같은 쌍선형 형태를 쓴다. 가법 어텐션과 점곱 어텐션은 서로 다른 함수를 표현할 수 있으며, 실제 비용은 텐서 형태와 하드웨어에 따라 달라진다. 스케일드 점곱 어텐션은 쌍별 점수 배치를 행렬 곱으로 계산할 수 있어 특히 편리하다.[3][1]

6. 다중 헤드 어텐션과 그 변형

멀티헤드 어텐션은 h개의 스케일드 점곱 어텐션을 병렬로 돌리고, 각각 자기 투영을 쓴 뒤 결과를 이어 붙인다.[3] 널리 쓰이는 변형들은 질의 헤드는 그대로 두고 키·값 헤드의 수를 바꾼다. 이는 생성된 토큰마다 디코더가 보관해야 하는 상태의 양을 정한다. DeepSeek-V2 논문은 변형별 토큰당 KV 캐시를 원소 수로 세어 표로 정리했고, 아래 공식은 그 표에서 옮긴 것이다.[11]

변형별 토큰당 KV 캐시 · 공식은 DeepSeek-V2 논문 표 기준
변형논문키·값 헤드 구성토큰당 KV 캐시, 모든 층(원소 수)예시 크기(16비트 저장, 계산값)위키 문서
다중 헤드 어텐션(MHA)Vaswani 등, 2017n_h개, 질의 헤드마다 하나2 n_h d_h l262,144 원소, 512 KiB멀티헤드 셀프 어텐션[3] [11]
다중 질의 어텐션(MQA)Shazeer, 20191개, 모든 질의 헤드가 공유2 d_h l8,192 원소, 16 KiBMQA[10] [11]
그룹 질의 어텐션(GQA)Ainslie 등, 2023n_g개 그룹, 그룹마다 n_h / n_g개 질의 헤드가 공유2 n_g d_h l65,536 원소, 128 KiB(n_g = 8)그룹 질의 어텐션[12] [11]
다중 헤드 잠재 어텐션(MLA)DeepSeek-AI, 2024잠재 벡터(너비 d_c) 하나와 분리 RoPE 키(너비 d_h^R) 하나(d_c + d_h^R) l, DeepSeek-V2 비율에서 약 9/2 d_h l18,432 원소, 36 KiB다중 헤드 잠재 어텐션[11]

예시 열은 n_h = 32, d_h = 128, l = 32로 계산했는데, 이는 Mistral 7B의 공개 차원이다. 이 모델은 키·값 헤드 8개의 GQA를 쓰므로 GQA 행이 실제 토큰당 캐시에 해당한다.[13] MLA 행은 DeepSeek-V2의 선택인 d_c = 4d_h, d_h^R = d_h/2를 가정하며, 논문은 이때 캐시가 2.25개 그룹의 GQA와 같다고 밝힌다.[11] 바이트 수는 원소 수에 16비트 저장을 위해 2를 곱한 값이다. vLLM 논문도 같은 계산을 OPT-13B에 적용해 토큰당 800 KB를 얻는다.[14]

MQA의 동기는 점진적 디코딩에 대한 성능 분석이었다. n단계 동안 연산량은 Θ(bnd^2)인데 메모리 접근량은 Θ(bn^2d + nd^2)다. 매 단계마다 앞선 모든 위치의 키와 값을 다시 읽어 오기 때문이다. 메모리 접근 대 연산 비율 Θ(n/d + 1/b)은 시퀀스 길이가 모델 너비에 견줄 만하거나 배치가 작으면 1에 가까워져, 메모리 대역폭이 병목이 된다. 모든 질의 헤드가 키와 값 헤드 하나를 공유하면 다시 읽어야 하는 텐서가 줄어든다.[10][1]

GQA는 질의 헤드를 G개 그룹으로 나누고, 각 그룹이 키 헤드와 값 헤드 하나씩을 공유한다. GQA-1은 MQA이고 헤드마다 한 그룹을 두는 GQA-H는 MHA이므로, 이 방법은 둘 사이를 보간한다. 논문의 또 다른 기여는 업트레이닝(uptraining)이다. 기존 다중 헤드 체크포인트에서 그룹별 키·값 헤드를 평균 풀링으로 합친 뒤, 원래 사전 학습 연산의 작은 비율(실험에서 5%)만 추가 학습한다.[12] 저자들은 GQA를 디코더 셀프 어텐션에만 적용했고 인코더 셀프 어텐션에는 적용하지 않았다고 밝힌다. 인코더에서는 표현이 병렬로 계산되어 메모리 대역폭이 주된 제약이 아니기 때문이다.[12][1]

MLA는 각 토큰의 키와 값을 저랭크 잠재(latent) 벡터로 압축하고, 상향 투영으로 복원한다. DeepSeek-V2에서는 키의 상향 투영을 추론 시 질의 투영에 흡수할 수 있어 잠재 벡터만 캐시하면 된다. 회전 위치 임베딩은 위치에 따라 키를 회전시키므로 압축 경로 안에는 적용할 수 없다. 그래서 논문은 이를 실어 나르는 토큰별 분리 키(decoupled key)를 따로 둔다. DeepSeek-V2는 n_h = 128, d_h = 128, d_c = 512, d_h^R = 64를 썼고, MLA가 벤치마크에서 MHA보다 나은 성능을 보이면서도 캐시는 훨씬 작았다고 보고했다.[11][1]

6.1. 위치 정보

어텐션만으로는 순열 등변(permutation-equivariant)이므로 위치를 어딘가에 넣어야 한다. 원래 트랜스포머는 위치 인코딩으로 사인파 또는 학습된 위치 벡터를 토큰 임베딩에 더했다.[3] 이후의 두 방법은 대신 위치 정보를 어텐션 점수에 넣으며, 각각 별도 문서로 다룬다.[1]

위치 정보 방식 비교
방법논문위치가 들어가는 곳논문의 주장위키 문서
회전 위치 임베딩(RoPE)Su 등, 2021질의와 키를, 절대 위치에 따라 커지는 각도만큼 회전시켜 점곱이 상대 거리에 의존하게 함시퀀스 길이에 유연하고, 거리에 따라 감쇠하는 의존성을 가지며, 선형 셀프 어텐션과 호환회전 위치 임베딩[15]
선형 편향 어텐션(ALiBi)Press, Smith, Lewis, 2021위치 임베딩을 쓰지 않고, 질의-키 거리에 비례하는 벌점을 점수에 더함길이 1024로 학습한 1.3B 모델이 2048로 외삽하며, 2048로 학습한 사인파 모델과 같은 퍼플렉시티를 보임. 학습은 11% 빠르고 메모리는 11% 적게 씀ALiBi[16]

RoPE는 대부분의 공개 디코더 전용 모델에서 기본값이 되었다. 다만 앞선 캐시 축소 방법과 조합할 때 부작용 없이 쓸 수 있는 것은 아니다. DeepSeek-V2는 RoPE가 저랭크 압축과 맞지 않아 분리 키가 필요했다.[11] ALiBi의 저자들은 자신들의 방법을, 모델이 학습 때 본 길이보다 긴 시퀀스에 어떻게 외삽하는지에 대한 답으로 제시한다.[16][1]

6.2. 추론 시 KV 캐시

인과 마스크가 있으면 앞 토큰들의 키와 값 행은 바뀌지 않으므로, 디코더는 이를 저장하고 매 단계 새 토큰의 질의, 키, 값만 계산한다. 저장된 상태가 KV 캐시이고, 그 크기는 위 표의 토큰당 원소 수에 문맥 토큰 수를 곱한 값이다. vLLM 논문은 구체적 수치를 든다. 13B 파라미터 OPT 모델에서 토큰 하나의 캐시는 2(키와 값) × 5120(은닉 크기) × 40(층) × 2(FP16 값당 바이트)로 계산되어 800 KB다. 따라서 2048 토큰 요청은 최대 1.6 GB가 필요하고, 메모리가 수십 GB인 GPU에는 수십 개 요청만 들어간다.[14]

토큰당 디코딩 비용은 이 캐시를 읽는 데 지배된다. Shazeer의 분석에서 각 디코딩 단계는 전체 K와 V 텐서를 다시 읽으므로, 생성 전체에서 메모리 접근량은 시퀀스 길이의 제곱으로 늘지만 연산량은 선형으로 늘어난다.[10][1]

PyTorch 블로그의 Flash-Decoding 소개글은 하드웨어 측면을 더한다. 디코딩 때 질의 길이는 보통 1이고, FlashAttention은 배치와 질의 길이 방향으로만 병렬화하므로 배치 크기 1에서는 108개의 스트리밍 멀티프로세서를 가진 A100 GPU의 1% 미만만 쓴다. Flash-Decoding은 키와 값을 시퀀스 차원으로 나누고, 각 분할의 어텐션을 행마다 log-sum-exp 스칼라와 함께 계산한 뒤 분할 결과를 줄인다. 저자들은 긴 시퀀스 길이에서 어텐션이 FlashAttention보다 최대 50배, CodeLlama-34B의 종단 간 디코딩이 최대 8배 빠르다고 측정했다.[17]

이 캐시 문제를 다루는 기법은 다음과 같다.

KV 캐시 관련 기법과 출처
문서다루는 문제출처
KV 캐시저장되는 키와 값 자체, 크기, 정밀도Shazeer, 2019; Kwon 등, 2023[10] [14]
PagedAttention캐시를 연속일 필요가 없는 고정 크기 블록에 저장하고, 가상 메모리 페이징처럼 요청마다 필요할 때 할당·공유함. vLLM의 기반Kwon 등, 2023[14]
Flash-Decoding긴 문맥에서 작은 배치 크기에도 GPU를 쓰도록 단일 질의의 어텐션을 키·값 길이에 걸쳐 병렬화Dao 등, 2023[17]
RadixAttention같은 프롬프트를 공유하는 호출 사이에서 캐시된 접두사를 재사용하는 기법(SGLang)Zheng 등, 2023[1]
FlashInfer서빙 중 페이지 방식 캐시 위의 어텐션을 처리하는 커널 라이브러리연결된 문서 참고[1]
H2O어텐션 질량을 많이 받는 「헤비 히터」 토큰을 남기고 다른 캐시 항목을 제거Zhang 등, 2023[18]
어텐션 싱크(attention sink)앞쪽 몇 토큰의 키와 값을 최근 창과 함께 유지. 창만 쓰는 캐시는 텍스트가 캐시 크기를 넘으면 실패하기 때문Xiao 등, 2023[19]
슬라이딩 윈도 어텐션크기 W의 순환 버퍼 캐시에서 위치 i mod W를 덮어써 캐시가 커지지 않게 함Jiang 등, 2023[13]

6.3. 효율적·희소 구현

「효율적 어텐션」에는 두 종류의 작업이 있다. 첫째는 밀집(dense) 어텐션과 정확히 같은 함수를 계산하되 메모리 접근을 더 잘 구성하는 것이다. 둘째는 계산하는 질의-키 쌍을 바꾸거나 소프트맥스를 더 싼 연산자로 바꿔 모델 자체를 바꾸는 것이다. 아래 표가 둘을 나눈다.[1]

효율적 어텐션 방법 비교
방법정확성바꾸는 것논문의 주장출처
FlashAttention정확Q, K, V를 SRAM에 맞는 블록으로 나누고, 블록 사이에서 소프트맥스 최댓값과 정규화 상수를 유지하며, 역전파에서 점수 행렬을 저장하지 않고 다시 계산표준 구현은 N×N 점수와 확률 행렬을 HBM에 써서 O(N²) 메모리가 든다. 타일 알고리즘은 N에 선형인 추가 메모리만 쓴다Dao 등, 2022[8]
FlashAttention-2정확스레드 블록과 워프 사이의 작업 분할을 개선하고 행렬곱이 아닌 연산(FLOP)을 줄임FlashAttention보다 약 2배 빠르고, A100에서 최고 FLOPs/s의 50~73%에 도달Dao, 2023[20]
FlashAttention-3정확Hopper의 비동기성(워프 특화, TMA)을 쓰고 행렬곱과 소프트맥스를 교차 배치하며, FP8과 블록 양자화·비일관 처리를 추가FP16은 H100에서 1.5~2.0배 빠르고 최대 740 TFLOPs/s(활용률 75%). FP8은 약 1.2 PFLOPs/s이며 기준 FP8 어텐션보다 수치 오차가 2.6배 낮음Shah 등, 2024[21]
Ring Attention정확블록 단위 어텐션과 피드포워드 계산을 여러 장치에 나누고, 키·값 블록 전송을 계산과 겹침근사 없이, 이전 메모리 효율 Transformer보다 장치 수 배만큼 긴 시퀀스를 처리Liu, Zaharia, Abbeel, 2023[22]
고정 패턴 희소 어텐션아님(패턴 제한)Longformer는 슬라이딩 창과 선택된 전역 위치를 결합하고, BigBird는 무작위 연결을 더함창과 전역 위치 수가 고정이면 비용이 시퀀스 길이에 선형(Longformer)Longformer; BigBird[23] [24]
슬라이딩 윈도 어텐션아님(패턴 제한)각 층이 앞 W개 위치를 보며, k개 층을 쌓으면 도달 범위는 약 W×kW=4096, 32개 층이면 Mistral 7B 저자들은 이론적 범위를 약 131K 토큰으로 설명Jiang 등, 2023[13]
Native Sparse Attention(NSA)아님(학습된 선택)거친 토큰 압축과 세밀한 토큰 선택을 하드웨어 산술 강도에 맞춘 계층으로 결합하고 종단 간 학습저자들의 벤치마크에서 전체 어텐션과 같거나 넘고, 64k 길이에서 디코딩과 순·역방향 계산을 빠르게 함Yuan 등, 2025[25]
DeepSeek Sparse Attention(DSA)아님(학습된 선택)작은 「라이트닝 인덱서」가 질의마다 앞 토큰을 점수화하고 상위 k개 키·값만 어텐션에 넣음. MLA 위에 구현기술 보고서에 따르면 DeepSeek-V3.2는 희소 학습 단계에서 질의마다 키·값 토큰 2048개를 선택DeepSeek-AI, 2025[26]
블록 혼합 어텐션(MoBA)아님(학습된 선택)키·값 블록에 전문가 혼합식 라우팅을 적용해 각 질의가 블록 일부만 보게 함. 전체 모드와 희소 모드를 전환논문에 따르면 MoBA가 Kimi의 긴 문맥 요청에 배포되었다Lu 등, 2025[27]
선형 어텐션아님(다른 연산자)소프트맥스 커널을 특징 맵으로 바꿔, 질의를 곱하기 전에 키-값 곱을 누적저자들의 정식화에서 시퀀스 길이에 선형 확장. Performer는 랜덤 특징으로 소프트맥스를 근사선형 어텐션 논문; Performer[28] [29]
라이트닝 어텐션(Lightning Attention)아님(선형 어텐션 구현)블록 내 항과 블록 간 항을 나눠 타일로 구현해 인과 선형 어텐션이 이론 처리량에 도달개발사에 따르면 MiniMax-01은 전문가 혼합과 결합해 100만 토큰 창으로 학습한 4,560억(456B) 파라미터 모델을 만듦Qin 등, 2024; MiniMax, 2025[1]
Infini-attention아님(압축 메모리 추가)마스크된 지역 어텐션과 장기 선형 어텐션 메모리를 한 블록에서 결합하고, 메모리 매개변수를 제한1B와 8B 모델로 100만 토큰 패스키 검색과 50만 토큰 책 요약에서 평가Munkhdalai, Faruqui, Gopal, 2024[30]
어텐션 싱크(StreamingLLM)아님(캐시 정책)처음 몇 토큰의 키·값과 슬라이딩 창을 유지. 학습된 모델은 내용과 무관하게 처음 토큰에 큰 어텐션 질량을 두기 때문최대 400만 토큰까지 안정적인 언어 모델링, 슬라이딩 창 재계산 기준보다 최대 22.2배 빠름Xiao 등, 2023[19]

「논문의 주장」 열의 값은 저자들이 자기 설정에서 얻은 결과이며 독립 측정이 아니다. 희소 방법이나 선형 방법이 품질을 유지하는지는 과제에 따라 다르다. FlashAttention 논문이 동기로 삼은 것도 근사 방법이 벽시계 시간 향상을 자주 주지 못한다는 점이었다.[8][1]

6.4. 교차 어텐션과 인코더·디코더 활용

크로스 어텐션은 질의가 한 시퀀스에서, 키와 값이 다른 시퀀스에서 나오는 배열이다. 트랜스포머보다 먼저 있었다. Bahdanau, Cho, Bengio의 번역 모델에서는 디코더의 이전 은닉 상태가 질의이고, 인코더 주석이 키와 값이며, 작은 순방향 정렬 모델이 점수를 만든다. 그래서 디코더는 출력 단계마다 입력 위치에 대한 소프트 탐색을 수행한다.[2]

트랜스포머는 이 아이디어를 「인코더·디코더 어텐션」 층에 유지한다. 이 층에서는 질의가 이전 디코더 층에서 오고, 키와 값은 인코더 출력에서 와서 모든 디코더 위치가 입력의 모든 위치를 볼 수 있다.[3] 이 논문의 전체 구조는 아래 관련 문서에서 다룬다.[1]

이 주제의 관련 문서는 다음과 같다.

교차 어텐션 관련 문서
문서다루는 내용
크로스 어텐션질의와 키·값의 출처를 나누는 일반 구성. 텍스트-이미지 조건화에 쓰이는 경우 포함[31]
바다나우 어텐션2014년 가법 정렬 모델과 그 학습[2]
Attention Is All You Need2017년 논문, 인코더·디코더 배치, 실험[3]

디코더 전용 언어 모델에는 인코더가 없으므로 크로스 어텐션도 없다. 조건이 되는 텍스트는 출력과 같은 시퀀스에 넣고 인과 셀프 어텐션으로 처리한다.[1] T5 같은 인코더·디코더 모델은 두 종류의 층을 모두 유지한다. 인코더에는 메모리 대역폭이 주된 병목이 아니라는 GQA 논문의 관찰이 이 구조에도 적용된다.[12]

7. 구조적 성질

어텐션은 메시지 전달로 이해할 수 있다. 각 키-값 쌍이 메시지를 내고, 질의가 가중치를 정하며, 출력은 선택된 값들을 모은다. 이 관점은 시퀀스를 넘어 확장된다.[1]

그래프 어텐션 네트워크(Graph Attention Networks)는 노드의 어텐션을 그래프 이웃으로 제한하고, 이웃 메시지에 서로 다른 계수를 학습한다.[32] 비지역(non-local) 신경망 블록은 이미지나 영상의 특징 맵에서 위치들에 걸쳐 가중 합을 계산한다.[33] Set Transformer는 집합 입력을 다루는 순열 불변 모델을 만들면서 어텐션을 사용한다.[34]

순서 정보가 없는 셀프 어텐션은 순열 등변(permutation-equivariant)이다. 입력 행을 바꾸면 출력도 같은 방식으로 바뀐다. 집합에는 유용하지만 순서가 중요할 때는 부족하다. 그래서 트랜스포머 모델은 위치 인코딩을 더하거나 포함시킨다. 원래 트랜스포머는 사인파 또는 학습된 위치 표현을 입력 임베딩에 더했다.[3] 이후의 방법은 상대 위치 정보를 점수에 넣거나 질의와 키를 수정하지만, 이 선택은 기본 어텐션 연산과 별개다.[1]

밀집 셀프 어텐션 층은 허용된 모든 위치 쌍을 한 단계에서 연결할 수 있다. 고정 커널을 쓰는 합성곱과 달리 가중치가 현재 표현에 따라 달라진다. 다만 이것이 학습된 모델이 먼 정보를 잘 쓴다는 보장은 아니다. 계산 그래프가 연결을 허용할 뿐이며, 최적화, 학습 데이터, 위치 표현, 마스킹, 수치 정밀도가 실제로 쓰이는 정보를 함께 결정한다.[1]

8. 응용

어텐션은 재귀 번역 시스템에서 여러 모델 계열로 옮겨 갔다.[1]

  • 언어와 음성: 인코더·디코더 어텐션은 입력과 목표 시퀀스의 정렬을 지원하고, 트랜스포머 셀프 어텐션은 문맥적 토큰 표현을 제공한다. 위치 인식 어텐션은 음성 인식을 위해 개발되었다.[7]
  • 비전: 초기 시각 어텐션 모델은 캡션 생성 중 공간 특징에 가중치를 주었다.[6] 비지역 블록은 이후 이미지와 영상 특징에 비슷한 집계를 적용했다.[33] 비전 트랜스포머(Vision Transformer)는 이미지 패치를 시퀀스로 보고 트랜스포머 인코더로 처리한다.[35]
  • 멀티모달 생성: 잠재 확산 모델은 크로스 어텐션으로 이미지 생성 특징을 텍스트나 공간 입력 같은 표현에 맞춰 조건화한다.[31] 이는 새로운 점수 함수가 아니라, 크로스 어텐션이 두 표현 흐름을 잇는 예다.
  • 그래프와 집합: 마스크로 통신을 그래프 간선에 제한할 수 있고, 마스크 없는 집합 어텐션은 입력 순서를 부과하지 않고 쌍별 상호작용을 모델링한다.[32][34]
  • 생물 분자 모델링: AlphaFold 2의 Evoformer는 다중 서열 정렬과 잔기 쌍 표현에 대해 어텐션 기반과 비어텐션 기반 갱신을 함께 포함하고, 구조 모듈은 불변 점 어텐션(invariant point attention)을 쓴다.[36]

이 예들은 같은 넓은 패턴을 쓰지만 토큰화, 마스크, 기하, 목적 함수, 주변 구조에서 크게 다르다. 한 영역의 결과가 특정 어텐션 설계가 다른 영역에서도 최선이라는 것을 그 자체로 보여 주지는 않는다.[1]

9. 효율성과 메모리

길이 n의 시퀀스에 대해 밀집 셀프 어텐션 점수 행렬은 n²개 항목을 가진다. 헤드 차원이 d이면 점수를 만들고 값에 적용하는 데 대략 n²d번의 산술 연산이 든다. 단순한 구현은 배치 원소와 헤드마다 n×n 중간 행렬도 실체화한다. 이 비용은 긴 시퀀스와 고해상도 공간 입력에서 중요해진다.[3][1]

자기회귀 디코딩 중에는 이전에 계산한 키와 값을 보통 KV 캐시에 보관한다. 캐싱은 앞 토큰의 투영을 다시 계산하지 않게 하지만, 저장된 상태는 시퀀스 길이와 키·값 헤드 수에 따라 커진다. 다중 질의 어텐션(MQA)은 키와 값 세트를 모든 질의 헤드가 공유해 점진적 디코딩 중 캐시와 읽는 데이터를 줄인다.[10] 그룹 질의 어텐션(GQA)은 중간 개수의 키·값 헤드를 쓰며, 표준 다중 헤드와 다중 질의 어텐션 사이의 절충으로 제안되었다.[12] 이 변형들은 키·값 메모리와 대역폭을 줄이지만, 밀집 어텐션의 쌍별 질의-키 연산은 없애지 않는다.[1]

희소 어텐션은 허용되는 쌍을 제한한다. Longformer는 슬라이딩 지역 창과 선택된 전역 위치를 결합해, 창 크기와 전역 위치 수가 고정되면 어텐션 비용이 시퀀스 길이에 선형으로 늘어난다.[23] BigBird는 지역, 전역, 무작위 연결을 결합하고 그 특정 희소 패턴에 대한 이론적 결과를 제시한다.[24] 희소 설계는 보편적인 직접 연결성을 정해진 통신 그래프와 바꾸므로, 정확도와 효율은 패턴이 과제에 맞는지에 달려 있다.[1]

선형 어텐션 방법은 어텐션을 다시 쓰거나 근사해, 키-값 집계를 각 질의와 결합하기 전에 먼저 수행할 수 있게 한다. Katharopoulos 등은 커널 특징 맵과 행렬 결합법칙을 써서 자신들의 정식화에서 시퀀스 길이에 대한 선형 확장을 얻었다.[28] Performer는 양의 직교 랜덤 특징을 써서 소프트맥스 어텐션을 근사했다.[29] 이런 방법은 연산자를 바꾸거나 근사하므로, 품질, 안정성, 실제 속도는 점근 표기만으로 정해지지 않는 경험적 문제다.[1]

FlashAttention은 IO를 고려한 타일 알고리즘으로 정확한 스케일드 점곱 어텐션을 계산한다. HBM에 전체 어텐션 행렬을 쓰지 않고, 더 빠른 온칩 메모리에서 블록을 처리하며 블록 사이의 소프트맥스 정규화를 유지한다.[8] 밀집 어텐션의 산술 연산은 여전히 시퀀스 길이에 대해 이차이지만, 보조 메모리 사용과 메모리 접근량은 단순한 구현보다 적다.[1]

이 방법들은 바꾸는 대상이 서로 다르다.

접근 방식별 차이
접근 방식수학적 어텐션 패턴을 바꾸는가?주로 겨냥하는 자원
희소 어텐션바뀜(쌍을 마스킹)쌍별 연산과 메모리[1]
커널·특징 맵 어텐션바뀌거나 근사점근적 시퀀스 확장[1]
다중 질의·그룹 질의 어텐션키·값 공유 방식이 바뀜디코딩 캐시 크기와 대역폭[1]
FlashAttention식 타일링정확한 밀집 어텐션에서는 바뀌지 않음메모리 접근량과 중간 결과[1]

10. 해석과 한계

어텐션 행렬은 한 층, 한 헤드, 한 입력에서 쓰인 계수를 기록한다. 그 계산에서 어떤 값 벡터에 강한 가중치가 주어졌는지 보여 줄 수 있다. 그러나 원시 입력 특징이 최종 예측에 미치는 인과 효과를 자동으로 재지는 않는다.[1]

Jain과 Wallace는 자신들이 연구한 NLP 모델에서 어텐션 가중치가 경사 기반 중요도와 약하게 관련되는 경우가 많고, 상당히 다른 어텐션 분포가 비슷한 출력을 낼 수도 있음을 발견했다.[37] Wiegreffe와 Pinter는 어텐션이 설명으로 인정되는지가 정의, 모델, 검증 방식에 달려 있다고 논증하며, 보편적 기각 대신 대안적 진단을 제안했다.[38] Serrano와 Smith도 개입 아래에서 어텐션 크기가 중요도의 확실한 척도가 아님을 발견했다.[39]

깊은 트랜스포머에서는 잔차 연결과 반복된 혼합이 해석을 더 복잡하게 만든다. Abnar와 Zuidema는 층을 가로지르는 정보 전파를 설명하기 위해 어텐션 롤아웃(attention rollout)과 어텐션 흐름(attention flow)을 제안했고, 자신들의 실험에서 원시 어텐션보다 절제(ablation) 및 경사 측정과 더 높은 상관을 보였다.[40] 이 방법들은 여전히 진단 도구이며, 인과적 책임의 증명은 아니다.[1]

서로 다른 점수 벡터가 비슷한 가중 합을 낼 수 있다. 특히 값 벡터가 중복될 때 그렇다. 로짓의 크기가 크면 소프트맥스가 포화되어 분포가 매우 뾰족해지고 미분값은 작아진다. 따라서 스케일링, 정규화, 초기화, 정밀도, 마스킹이 학습 동작에 영향을 준다.[1]

밀집 어텐션은 허용된 모든 위치가 서로 상호작용하도록 하지만, 허용이 곧 성공적인 사용은 아니다. 긴 시퀀스는 여전히 검색, 최적화, 위치 처리에 어려움을 줄 수 있다. 반대로 희소하거나 근사적인 층도 관련 의존성이 그 통신 패턴을 따르면 충분할 수 있다. 장문맥 능력에 대한 주장은 컨텍스트 창 크기나 복잡도만으로 추론하지 말고, 목표 분포와 과제에서 평가해야 한다.[1]

트랜스포머의 동작은 어텐션만으로 생기지 않는다. 순방향 층, 잔차 경로, 정규화, 토큰화, 위치 표현, 목적 함수, 데이터, 디코딩이 모두 기여한다. 어텐션을 바꾸거나 시각화하는 것은 시스템의 한 부분만 다룬다.[1]

11. 흔한 오해와 함정

구현과 설명에서 반복되는 오류는 다음과 같다. 각 행은 이를 바로잡는 출처를 함께 보여 준다.

흔한 오해와 함정
오해 또는 함정출처가 말하는 내용
점수는 √d_model로 나눈다트랜스포머 논문은 헤드별 키 차원인 √d_k로 나눈다. d_model = 512, 헤드 8개면 √64 = 8이다. 각주의 분산 논증은 두 d_k 차원 벡터의 점곱에 관한 것이다.[3]
소프트맥스는 e^{x_i}/Σe^{x_j}로 바로 계산하면 된다유한 정밀도에서 큰 점수의 지수는 오버플로한다. 행 최댓값을 먼저 빼도 결과는 같으며, 최댓값과 정규화 상수는 새 키 블록이 들어올 때마다 온라인으로 갱신할 수 있다.[8][9]
FlashAttention이 어텐션을 준이차로 만든다정확한 어텐션이므로 연산량은 여전히 시퀀스 길이에 대해 이차다. 줄이는 것은 메모리다. 표준 구현은 N×N 점수와 확률 행렬을 HBM에 쓰지만, 타일 알고리즘은 이를 피하고 추가 메모리는 N에 선형이다.[8]
마스크는 소프트맥스 뒤에 적용할 수 있다트랜스포머 논문은 허용되지 않는 위치를 소프트맥스 입력에서 −∞로 설정하므로 그 위치가 0 가중치를 받고, 남은 가중치의 합은 1이 된다.[3]
MQA와 GQA는 학습을 빠르게 한다목표는 점진적 디코딩이다. 매 단계 키와 값을 다시 읽는 과정에서 메모리 대역폭이 병목이 된다. GQA 논문은 병렬 계산되는 인코더 셀프 어텐션은 바꾸지 않는다.[10][12]
KV 캐시는 사소한 비용이다OPT-13B에서 토큰 하나의 캐시는 800 KB이고, 2048 토큰 요청은 최대 1.6 GB가 필요하다. vLLM 논문은 기존 시스템이 단편화와 과잉 예약으로 이 메모리의 많은 부분을 낭비한다고 밝혔다.[14]
크기 W의 슬라이딩 창은 W개 토큰 밖의 정보를 쓸 수 없게 한다층을 쌓으면 정보가 전파된다. k개 층 뒤 한 위치는 약 W×k 떨어진 토큰의 영향을 받을 수 있다. 그래서 Mistral 7B 저자들은 4096 토큰 창보다 훨씬 긴 이론적 범위를 설명한다.[13]
최근 토큰만 캐시하면 메모리를 안전하게 제한할 수 있다Xiao 등은 창만 쓰는 캐시가 텍스트가 캐시 크기를 넘으면 실패함을 발견했다. 모델이 초기 토큰에 큰 어텐션 질량을 주기 때문이며, 이 토큰들을 유지하면 성능이 회복된다.[19]
어텐션 가중치는 어떤 입력이 출력을 일으켰는지 보여 준다Jain과 Wallace는 자신들이 연구한 모델에서 어텐션 가중치가 경사 기반 중요도와 약하게 관련된다고 보았다. Wiegreffe와 Pinter는 답이 정의와 검증 방식에 달려 있다고 논증했다. 위의 해석 절을 보라.[37][38]
회전 임베딩은 어떤 캐시 압축 방식에도 붙일 수 있다DeepSeek-V2 저자들은 RoPE가 저랭크 키 압축과 맞지 않음을 발견했다. 위치 의존 회전 때문에 키의 상향 투영을 질의 투영에 흡수할 수 없어, 별도의 분리 키를 두어 RoPE를 실었다.[11]

12. 실무 점검 항목

구현하거나 평가할 때 다음 점검이 흔한 오류를 막는다.

  • 패딩 마스크와 인과 마스크를 소프트맥스 이전에 적용하고, 마스크된 확률이 0인지 확인한다.
  • 질의 길이, 키 길이, 헤드, 배치 차원의 의도된 축을 확인한다.
  • 정규화와 누적에 수치적으로 안정적인 소프트맥스와 충분한 정밀도를 쓴다.
  • 학습 시의 병렬성과 자기회귀 디코딩의 지연 시간을 구분한다.
  • 점근적 비용과 목표 하드웨어에서 측정한 실제 벽시계 시간을 함께 보고한다.
  • 어텐션 시각화는 독립된 설명이 아니라 추가 검증이 필요한 가설로 다룬다.
  • 가능하면 변형들을 같은 매개변수 수, 학습 예산, 시퀀스 길이, 평가 설정에서 비교한다.[1]
각주·출처 40개
  1. ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24 ↩25 ↩26 ↩27 ↩28 ↩29 ↩30 ↩31 ↩32 ↩33 ↩34 ↩35 ↩36 ↩37 ↩38 ↩39 ↩40 ↩41 ↩42 ↩43 ↩44 ↩45 ↩46 ↩47 ↩48 ↩49 ↩50 ↩51 ↩52 ↩53 ↩54 ↩55 ↩56 ↩57 ↩58 ↩59 ↩60 ↩61 ↩62 ↩63 ↩64 ↩65 ↩66 ↩67 ↩68 ↩69 ↩70 ↩71 ↩72 ↩73 ↩74 ↩75 ↩76 ↩77 ↩78 ↩79 ↩80 ↩81 AI Wiki: Attention (2026-09-05 수정본) · CC BY 4.0 · 확인 2026-10-11
  2. ↩1 ↩2 ↩3 ↩4 ↩5 Neural Machine Translation by Jointly Learning to Align and Translate · 확인 2026-10-11
  3. ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 Attention Is All You Need · 확인 2026-10-11
  4. ↩1 Sequence to Sequence Learning with Neural Networks · 확인 2026-10-11
  5. ↩1 ↩2 Effective Approaches to Attention-based Neural Machine Translation · 확인 2026-10-11
  6. ↩1 ↩2 ↩3 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention · 확인 2026-10-11
  7. ↩1 ↩2 ↩3 Attention-Based Models for Speech Recognition · 확인 2026-10-11
  8. ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness · 확인 2026-10-11
  9. ↩1 ↩2 Online normalizer calculation for softmax · 확인 2026-10-11
  10. ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 Fast Transformer Decoding: One Write-Head is All You Need · 확인 2026-10-11
  11. ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model · 확인 2026-10-11
  12. ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints · 확인 2026-10-11
  13. ↩1 ↩2 ↩3 ↩4 Mistral 7B · 확인 2026-10-11
  14. ↩1 ↩2 ↩3 ↩4 ↩5 Efficient Memory Management for Large Language Model Serving with PagedAttention · 확인 2026-10-11
  15. ↩1 RoFormer: Enhanced Transformer with Rotary Position Embedding · 확인 2026-10-11
  16. ↩1 ↩2 Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation · 확인 2026-10-11
  17. ↩1 ↩2 Flash-Decoding for long-context inference · 확인 2026-10-11
  18. ↩1 H2O: Heavy-Hitter Oracle for Efficient Generative Inference of Large Language Models · 확인 2026-10-11
  19. ↩1 ↩2 ↩3 Efficient Streaming Language Models with Attention Sinks · 확인 2026-10-11
  20. ↩1 FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning · 확인 2026-10-11
  21. ↩1 FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision · 확인 2026-10-11
  22. ↩1 Ring Attention with Blockwise Transformers for Near-Infinite Context · 확인 2026-10-11
  23. ↩1 ↩2 Longformer: The Long-Document Transformer · 확인 2026-10-11
  24. ↩1 ↩2 Big Bird: Transformers for Longer Sequences · 확인 2026-10-11
  25. ↩1 Native Sparse Attention: Hardware-Aligned and Natively Trainable Sparse Attention · 확인 2026-10-11
  26. ↩1 DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models · 확인 2026-10-11
  27. ↩1 MoBA: Mixture of Block Attention for Long-Context LLMs · 확인 2026-10-11
  28. ↩1 ↩2 Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention · 확인 2026-10-11
  29. ↩1 ↩2 Rethinking Attention with Performers · 확인 2026-10-11
  30. ↩1 Leave No Context Behind: Efficient Infinite Context Transformers with Infini-attention · 확인 2026-10-11
  31. ↩1 ↩2 High-Resolution Image Synthesis With Latent Diffusion Models · 확인 2026-10-11
  32. ↩1 ↩2 Graph Attention Networks · 확인 2026-10-11
  33. ↩1 ↩2 Non-Local Neural Networks · 확인 2026-10-11
  34. ↩1 ↩2 Set Transformer: A Framework for Attention-based Permutation-Invariant Neural Networks · 확인 2026-10-11
  35. ↩1 An Image Is Worth 16x16 Words: Transformers for Image Recognition at Scale · 확인 2026-10-11
  36. ↩1 Highly accurate protein structure prediction with AlphaFold · 확인 2026-10-11
  37. ↩1 ↩2 Attention is not Explanation · 확인 2026-10-11
  38. ↩1 ↩2 Attention is not not Explanation · 확인 2026-10-11
  39. ↩1 Is Attention Interpretable? · 확인 2026-10-11
  40. ↩1 Quantifying Attention Flow in Transformers · 확인 2026-10-11

함께 읽는 용어

GPU정확도신경망벤치마크프롬프트트랜스포머토큰매개변수머신러닝

이 용어를 다룬 글

인프라와 비용

GPU

그래픽 처리 장치(GPU)는 같은 종류의 연산을 여러 개 동시에 수행하도록 설계된 프로세서다. 그래픽 작업을 위해 개발되었으며, 프로그래밍 가능한 연산 자원은 범용 계산과 AI 학습·추론 실행에도 쓰인다. AI 추론 실행에서는 연산 능력보다 메모리 대역폭이 달성 가능한 속도를 정하는 경우가 많다.

멀티모달·피지컬 AI

텍스트-이미지 생성

텍스트-이미지 모델은 자연어 설명(프롬프트)을 입력받아 그 내용을 묘사하는 새 이미지를 만드는 생성형 AI다. 텍스트를 조건으로 이미지 분포를 학습하며, 2021년 OpenAI의 DALL-E 이후 확산 모델과 트랜스포머 기반 구조로 발전했다. 2025년 이후에는 언어와 이미지를 함께 생성하는 네이티브 멀티모달 모델이 최전선으로 올라섰다.

AI 첫걸음

신경망

신경망은 동물 뇌의 신경세포 연결에서 느슨하게 영감을 받은 계산 모델이다. 명시적 규칙 대신 단순한 처리 단위 사이의 연결 강도(가중치)를 데이터로 조정해 과제를 학습하며, 인공 신경망(ANN)이라고도 부른다. 가중치를 조정하면 이미지 분류부터 텍스트 생성까지 거의 모든 함수를 근사할 수 있으며, 2010년대 초부터 깊은 신경망이 머신러닝과 딥러닝의 기반이 되었다.

학습과 데이터

강화 학습

강화 학습은 에이전트가 환경에서 행동을 취하고 그 결과로 받는 보상을 바탕으로, 누적 보상을 최대화하는 행동 방식을 시행착오로 찾아내는 머신러닝 분야다. 정답 예시 대신 보상 신호로 학습한다는 점에서 지도 학습과 구별된다. 게임 플레이와 대규모 언어 모델의 정렬에 쓰이며, 2024년 튜링상이 이 분야의 기초 연구에 수여되었다.

기업과 사람

Google DeepMind

구글 딥마인드(Google DeepMind)는 구글의 인공지능 연구·모델 개발 조직이다. 2023년 4월 딥마인드와 구글 브레인이 합쳐져 출범했으며, Gemini 모델 계열, 공개 가중치 모델 Gemma, 알파폴드 같은 과학 AI 시스템을 개발한다. 2026년 8월부터 Koray Kavukcuoglu가 일상 운영을 맡고 있다.

기업과 사람

Microsoft

Microsoft Corporation은 워싱턴주 레드몬드에 본사를 둔 미국 기술 기업으로, 인공지능 연산 자원과 모델, 응용 제품을 공급하는 대표 기업 가운데 하나다. 이 문서는 Microsoft 연구 조직, 자체 MAI 모델, Azure 인프라, Copilot 제품, OpenAI와의 제휴를 중심으로 AI 사업을 정리한다.

기업과 사람

Google

구글 유한책임회사(Google LLC)는 미국의 기술 기업으로, 알파벳 주식회사(Alphabet Inc.) 안에서 가장 큰 사업 법인이다. 스탠퍼드 대학교 대학원생 래리 페이지와 세르게이 브린의 검색 프로젝트에서 출발했으며, 인터넷 검색, 온라인 광고, 동영상, 모바일·웹 플랫폼, 소비자 소프트웨어, 기기, 클라우드 컴퓨팅, 인공지능 사업을 한다.

학습과 데이터

미세 조정

미세 조정은 사전 학습된 모델의 매개변수 전부 또는 일부를 목표 과제·분야·행동에 맞춘 데이터로 계속 최적화해 적응시키는 전이 학습의 한 형태다. 전체 미세 조정, 부분 미세 조정, 어댑터와 LoRA 같은 매개변수 효율적 방법, 지시 튜닝과 선호 기반 사후 학습을 포괄한다.

모델과 서비스

Gemini

Gemini는 Google DeepMind가 개발한 네이티브 멀티모달 대규모 언어 모델 계열로, 텍스트·이미지·오디오·영상·코드를 하나의 모델 안에서 다룬다. 2023년 12월 6일 처음 발표되었고 구글 제품 전반에 쓰인다.

AI 첫걸음

대규모 언어 모델

대규모 언어 모델은 수십억에서 수조 개의 매개변수를 가진 트랜스포머 신경망을 방대한 텍스트로 학습시켜 다음 토큰을 예측하게 만든 인공지능 시스템이다. 번역, 요약, 질의응답, 코드 생성, 대화에 쓰이며 ChatGPT, Claude, Gemini 같은 제품의 바탕이 된다.

AI 첫걸음

매개변수

매개변수는 모델을 학습하는 과정에서 데이터로부터 값이 정해지는 모델 내부 변수로, 신경망의 가중치와 편향이 대표적이다. 모델이 입력을 출력으로 바꾸는 방식을 결정하며, 그 총수는 모델 용량을 가늠하는 지표로 자주 쓰인다.

AI 첫걸음

토큰

토큰은 언어 모델이 읽고 쓰는 텍스트의 기본 단위로, 단어, 서브워드 조각, 문자, 바이트 등이 있으며 토큰화 과정에서 텍스트를 나누어 만든다. 컨텍스트 창 길이와 API 요금을 재는 단위이기도 하다. 현대 LLM에서는 대개 서브워드 조각이며 영어에서 1토큰은 평균 약 4자 또는 0.75단어에 해당한다.

작동 원리

트랜스포머

트랜스포머는 2017년 Google 연구원 8명이 논문 「Attention Is All You Need」에서 소개한 딥러닝 구조다. 순환이나 합성곱 없이 어텐션만으로 시퀀스 요소 사이의 관계를 모델링하며, 오늘날 대부분의 대규모 언어 모델이 이 구조를 바탕으로 한다.

AI 첫걸음

인공지능

인공지능(AI)은 학습, 추론, 패턴 인식, 언어 이해, 의사 결정처럼 보통 인간의 지능이 필요한 작업을 수행하는 시스템을 만드는 컴퓨터 과학 분야다. 1955년 제안서에서 용어가 만들어졌고 1956년 다트머스 프로젝트에서 연구 분야로 출범했다.

AI 첫걸음

딥러닝

딥러닝은 여러 층의 인공 신경망으로 데이터의 표현을 여러 수준의 추상화에서 자동으로 학습하는 머신러닝의 한 갈래다. 2012년 AlexNet이 ImageNet 대회에서 우승하면서 현대 AI의 핵심 기술로 자리 잡았다.

AI 첫걸음

생성형 AI

생성형 AI는 예시에서 통계적 구조를 학습한 뒤 모델에서 표본을 추출하거나 복호화해 텍스트, 코드, 이미지, 오디오, 영상, 분자 구조 같은 새 데이터를 만드는 인공지능 시스템의 한 부류다. 기술의 핵심은 데이터 분포를 나타내는 생성 모델이다.

AI 첫걸음

머신러닝

머신러닝은 컴퓨터가 명시적으로 프로그래밍되지 않고도 데이터로부터 학습해 과제 수행 성능을 높이게 하는 인공지능의 한 분야다. 1959년 IBM의 Arthur Samuel이 이 용어를 만들었고, 1997년 Tom Mitchell이 경험으로 성능이 향상되는지를 기준으로 학습을 정의했다. 오늘날 인공지능의 지배적 접근법이다.