Skip to content

Commit fd89102

Browse files
committed
post : efficient attention
Online-Self Attention Proof
1 parent 26e79a8 commit fd89102

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

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

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ context를 전체 input이 아닌 부분으로 한정하는 Window Attention 이
6262
따라서, Memory Efficient한 Attention이 주목을 받고 있습니다. Gpu Programming을 활용하여 정확도를 유지한채 연산속도와 메모리 사용량을 상당부분 향상시키기 때문입니다.
6363

6464
## Softmax
65-
65+
Attention은 embedding vector들을 합하지만 모든 embedding vector를 동일하게 사용하는 것이 아니기에 가중치를 계산하게 됩니다. 이 때, 사용하는 것이 softmax입니다.
66+
softmax는 받은 vector의 element의 합이 1이 되도록 , 각 element가 0이 되도록 변환을 해줍니다.
6667
### Safe-Softmax
6768

6869
$$ y_i = \frac{e^{x_i}}{\sum_{j=1}^V e^{x_j}} $$
@@ -145,7 +146,7 @@ d_i \, e^{\,m_i - \max(m_i, m_j)} \;+\; d_j \, e^{\,m_j - \max(m_i, m_j)}
145146
\end{bmatrix}
146147
$$
147148

148-
$$d_i $$ , $$m_i $$ 를 미리 구해놓고 다음 input에 대하여 $$d_j $$ , $$m_j $$ 를 계산하면 위의 공식에 대입하여 update를 할 수 있습니다.
149+
$$d_i $$ , $$m_i $$ 를 미리 구해놓고 다음 input에 대하여 $$d_j $$ , $$m_j $$ 를 계산하면 위의 공식에 대입하여 update를 할 수 있습니다.
149150
max에 대한 증명은 생략하도록 하겠습니다.
150151

151152
1. $$ Assume \quad d_{j} = \sum_{k=0}^{j} e^{\,x_k - m_i} \quad d_{i} = \sum_{k=i+1}^{j+i} e^{\,x_k - m_j} \quad m_{i+j} = \max(m_i, m_j) $$
@@ -169,20 +170,35 @@ query $$q$$, keys $$k_1, \dots, k_n$$ 와 values $$v_1, \dots, v_n$$ 가 주어
169170

170171

171172

173+
### Proof
172174

173-
Online-Self Attention을 실제로 알고리즘 관점에서 자세하게 분석한게 FlashAttention이다.
175+
$$m^* = \max(m^*,s_i)$$, ,$$ s^* \leftarrow s^* e^{m^* - m_i} + e^{s_i - m_i} $$ 들은 위에서 증명이 되었습니다.
176+
따라서, 증명을 생략하도록 하겠습니다. $$ v^* \leftarrow v^* e^{m^* - m_i} + v_i e^{s_i - m_i} $$에 대해서 증명을 하도록 하겠습니다.
177+
178+
**Base case**: \(V = 1\)
179+
180+
1. $$v^* \leftarrow v^* e^{m^* - m_1} + v_1 e^{s_1 - m_1} $$
181+
$$= v_1 e^{s_1 - m_1}$$
174182

175183

184+
**Induction**: \(V = i\)
176185

177186

178-
귀납법으로 증명
187+
188+
1. $$ Assume \quad v^* = \sum_{j=1}^{i-1} v_je^{\,x_j - m^*} $$
189+
$$ m_i = \max(m^*,s_i)$$ , $$ s_i = \mathrm{dot}(q, k_i) $$
190+
$$ v^* \leftarrow v^* e^{m^* - m_i} + v_i e^{s_i - m_i} $$
191+
$$= \left(\sum_{j=1}^{i-1} v_j e^{\,x_j - m^*}\right) e^{\,m_^* - m_i} + v_i e^{\,s_i - m_i} $$
192+
$$ = \sum_{j=1}^{i} v_j e^{\,s_j - m_i} $$
179193

180194
### FlashAttention
181195

182196

183197
![FlashAttention](\assets\images\DeepLearning\KernelFusion\FlashAttention_forward.png)
184198

185199

200+
Online-Self Attention을 실제로 알고리즘 관점에서 자세하게 분석한게 FlashAttention이다.
201+
186202
## Conclusion
187203

188204

0 commit comments

Comments
 (0)