Skip to content

Commit 6ea725a

Browse files
committed
post : Efficient Attention
Chatgpt로 다듬기
1 parent 93fb1db commit 6ea725a

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

_posts/DeepLearning/Kernel Fusion/2025-03-07-fused.md

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ Self-Attention의 효율적인 구현은 단순한 최적화를 넘어, LLM의
3232
### Attention
3333

3434
기존의 RNN, GRU, LSTM 기반의 encoder-decoder 구조는 시퀀스 정보를 고정된 크기의 벡터에 압축하면서 **정보 손실**이 발생하는 한계가 있었습니다. 이를 보완하기 위해 **Attention** 메커니즘이 등장했습니다.
35-
Attention은 [Bahdanau et al. (2014)](https://arxiv.org/pdf/1409.0473)이 처음 제안했으며, 해당 연구는 뉴욕대학교의 조경현 교수님이 주도했습니다.
35+
Attention은 [link](https://arxiv.org/pdf/1409.0473)이 처음 제안했으며, 해당 연구는 Dzmitry Bahdanau 와 뉴욕대학교의 조경현 교수님이 주도했습니다.
3636

37-
조 교수님은 [강의 자료](https://www.boostcourse.org/ai331/lecture/540234?isDesc=false)를 통해 "고정된 크기의 벡터로는 시퀀스의 의미를 완전히 표현할 수 없다"고 설명합니다.
37+
조 교수님은 [link](https://www.boostcourse.org/ai331/lecture/540234?isDesc=false)를 통해 "고정된 크기의 벡터로는 시퀀스의 의미를 완전히 표현할 수 없다"고 설명합니다.
3838
즉, 입력 시퀀스를 단일 벡터로 압축하는 것이 아니라, **시퀀스의 길이에 비례한 벡터 정보**를 decoder의 입력으로 활용해야 한다는 것입니다.
3939

4040
<br/>
@@ -46,7 +46,7 @@ Attention은 [Bahdanau et al. (2014)](https://arxiv.org/pdf/1409.0473)이 처음
4646
![vector-diff](\assets\images\DeepLearning\KernelFusion\vectordiff.png)
4747
![country-capital](\assets\images\DeepLearning\KernelFusion\country-capital.png)
4848

49-
이러한 벡터 표현의 유용성은 [Tomas Mikolov의 연구](https://arxiv.org/pdf/1310.4546), [ACL 논문](https://aclanthology.org/N13-1090.pdf) 등에서 입증되었습니다.
49+
이러한 벡터 표현의 유용성은 Tomas Mikolov의 논문 [link1](https://arxiv.org/pdf/1310.4546), [link2](https://aclanthology.org/N13-1090.pdf) 에서 입증되었습니다.
5050
벡터의 **방향과 크기**를 통해 단어 간 관계를 파악할 수 있으며, 임베딩 벡터들을 더하거나 평균내는 방식으로 **의미 있는 벡터**를 생성할 수도 있습니다.
5151

5252
즉, tokenize된 시퀀스는 임베딩 벡터들의 시퀀스로 표현되며, 이 벡터들을 조합하면 문맥 정보를 유지한 의미 벡터를 만들 수 있습니다.
@@ -78,14 +78,32 @@ GEMM은 병렬 처리가 가능하며, 하드웨어 수준에서 다양한 최
7878

7979
### Efficient Attention
8080

81-
Efficient Attention의 일반적인 접근 방법은 computation Complexity의 Upper Bound를 낮추는 방법입니다.
82-
context를 전체 input이 아닌 부분으로 한정하는 Window Attention 이 있습니다.Linear Attention은 Q@K^T를 계산할 때 (n,d) ,(d,n) 의 matrix들을 곱해서 계산하는게 아닌 K^T @V를 먼저 계산함. 즉, (d,n) @ (n,d) 의 matrix multiplication을 통해서 computation complexity를 O(N)으로 낮춥니다.
83-
하지만, 이러한 efficient attention은 computation Complexity의 장점을 얻는 대신에 정확도에서 단점을 얻게 됩니다.
84-
따라서, Memory Efficient한 Attention이 주목을 받고 있습니다. Gpu Programming을 활용하여 정확도를 유지한채 연산속도와 메모리 사용량을 상당부분 향상시키기 때문입니다.
81+
Efficient Attention의 주요 목적은 **연산 복잡도(Computation Complexity)의 Upper Bound를 낮추는 것**입니다.
82+
![window-attention](\assets\images\DeepLearning\KernelFusion\window-attention.png)
83+
이를 위해 대표적으로 사용되는 방법 중 하나가 **Window Attention** [link](https://arxiv.org/abs/2103.14030)으로, 전체 입력 시퀀스를 대상으로 연산하는 것이 아니라 **일부 입력(context)을 제한된 범위 내에서만 처리**하는 방식입니다.
84+
85+
86+
![window-attention](\assets\images\DeepLearning\KernelFusion\Linear-Attention.png)
87+
또 다른 접근 방식인 **Linear Attention** [link](https://arxiv.org/abs/2006.04768)은 일반적인 Self-Attention에서 사용하는 $QK^T$ 연산을 재구성합니다.
88+
기존 방식에서는 $(n, d)$와 $(d, n)$ 형태의 행렬을 곱해 복잡도가 $O(n^2)$에 해당했지만, Linear Attention에서는 **$K^T V$를 먼저 계산**한 뒤, 이를 이용해 $Q (K^T V)$를 구합니다.
89+
즉, **$(d, n)$와 $(n, d)$의 곱셈으로 복잡도를 $O(n)$까지 낮추는 것**이 가능합니다.
90+
91+
하지만 이러한 Efficient Attention 기법들은 연산 속도나 메모리 측면에서 이점을 얻는 대신, **정확도(Accuracy) 저하**라는 단점을 동반하기도 합니다.
92+
이로 인해 최근에는 연산 복잡도를 낮추기보다는, **동일한 수학적 연산 구조를 유지하면서도 더 적은 메모리와 연산량으로 수행할 수 있는 방식**, 즉 **Memory Efficient Attention**에 대한 관심이 높아지고 있습니다.
93+
94+
이러한 방식은 **정확도를 유지하면서도 GPU 프로그래밍을 통해 속도 및 메모리 사용을 크게 최적화**할 수 있기 때문에, 특히 대규모 모델을 운영하는 데 있어 매우 유용한 접근법으로 주목받고 있습니다.
8595

8696
## Softmax
87-
Attention은 embedding vector들을 합하지만 모든 embedding vector를 동일하게 사용하는 것이 아니기에 가중치를 계산하게 됩니다. 이 때, 사용하는 것이 softmax입니다.
88-
softmax는 받은 vector의 element의 합이 1이 되도록 , 각 element가 0이 되도록 변환을 해줍니다.
97+
98+
Attention 메커니즘에서는 여러 개의 embedding vector를 결합하지만, 이들을 **동일한 비중으로 더하지 않습니다.**
99+
각 embedding vector의 중요도를 고려해 **가중치를 계산**한 뒤, 이를 기반으로 weighted sum을 수행하게 됩니다.
100+
101+
이때 사용되는 함수가 바로 **Softmax**입니다.
102+
Softmax는 입력된 벡터의 각 요소들을 **0과 1 사이의 값으로 변환**하며, **전체 요소의 합이 1이 되도록 정규화**합니다.
103+
즉, 각 embedding vector가 **얼마나 중요한지를 나타내는 확률 분포 형태로 가중치**를 표현하게 되는 것이죠.
104+
105+
이러한 특성 덕분에 Softmax는 Attention 구조에서 **어떤 입력이 더 중요한지를 반영하는 핵심적인 역할**을 하게 됩니다.
106+
89107
### Safe-Softmax
90108

91109
$$ y_i = \frac{e^{x_i}}{\sum_{j=1}^V e^{x_j}} $$
104 KB
Loading
247 KB
Loading

0 commit comments

Comments
 (0)