Skip to content

Commit a59cd85

Browse files
committed
post : Efficient Attention
safeness
1 parent a306a5c commit a59cd85

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,19 @@ $$= \left(\sum_{j=1}^{S-1} e^{\,x_j - m_{S-1}}\right) e^{\,m_{S-1} - m_S} + e^{\
7676
$$ = \sum_{j=1}^{S} e^{\,x_j - m_S} $$
7777

7878

79+
**SafeNess** :
80+
- $$m_j \in \Bigl[\min_{k=1}^V m_k,\; \max_{k=1}^V m_k\Bigr], \quad \forall j \in \{1, \dots, V\}$$
81+
따라서,, $$m_j$$ 는 overflow나 underflow가 될 수 없습니다.
82+
83+
- $$1 \;\le\; d_j \;\le\; j, \quad \forall j \in \{1, \dots, V\}$$
84+
$$d_j $$의 식은 다음과 같습니다.
85+
$$d_S \leftarrow d_{j-1} \, e^{\,m_{j-1} - m_j} + e^{\,x_j - m_j} $$
86+
매번 1보다 같거나 작은 수를 $$d_j $$에 곱하고 $$d_j $$에 더해줍니다.
87+
따라서, 32-bit floating point 는 $$d_j$$$$1.7 \times 10^{37}$$ 까지 저장할 수 있도록 보장해줍니다.
88+
왜냐하면, 32-bit floating point 는 $$ 3.4 \times 10^{38}$$ 까지 표현할 수 있기 때문입니다.
89+
32-bit floating point의 range보다 적은 값까지 표현이 가능하다 하는 이유는 안전수치를 보수적으로 잡은거 같습니다.
90+
만약에, 더 많은 벡터를 처리한다면 64-bit floating point 를 사용해야 할 것입니다.
91+
7992
## Online-Self Attention
8093
attention에는 softmax 때문에 input 전체를 봐야한다.
8194

0 commit comments

Comments
 (0)