자연어처리(NLP)/LLM(Large Language Model)

[LLM][기초] LLM의 Attention (self, cross, sparse flash)

Hyen4110 2024. 9. 11. 20:12

1. Attention의 역할?

Attention은 중요도에 따라서 입력된 토큰에 가중치를 부여함으로써, 모델이 연관이 있는 토큰을 더 강조할 수 있도록 합니다. 트랜스포머의 Attention은 입력 시퀀스의 query, key, value를 계산한 후, query와 key를 곱해서 attention score를 얻습니다. attention score는 value를 에 가중치를 부여하는데 사용됩니다.

 

 

2. Attention 유형

1) Self Attention : encoder 혹은 decoder의 같은 block으로부터 query, key, value를 사용하여 attention을 계산


2) Cross Attention : encoder-decoder 아키텍처에서 사용되는 방법으로, encoder가 output으로 query를 만들고, decoder로부터 key-value 쌍을 얻습니다.

3) Sparse Attention : Self Attention의 경우, O(n2)의 복잡도를 가지고 있기 때문에, 대용량의 시퀀스를 처리하기 어렵다는 한계가 존재합니다. 연산을 빠르게 하기위해서 Sparse Attention은 sliding window 내에서 attention을 반복적으로 계산합니다.

4) Flash Attention : GPU를 사용해서 attention을 계산할 때, 가용 메모리가 큰 제한점이 됩니다. 속도를 높이기위해서 Flash Attention은 입력 타일링을 사용하여 GPU 고대역폭 메모리(HBM)와 온칩 SRAM 간의 메모리 읽기 및 쓰기를 최소화합니다.

 

참고

https://arxiv.org/pdf/2307.06435