플래시 어텐션
FlashAttention · 고급
어텐션 연산 시 GPU의 고속 메모리를 최대한 활용하도록 계산 순서를 재구성해, 큰 어텐션 행렬을 저장하지 않고도 정확히 동일한 결과를 더 빠르고 적은 메모리로 얻는 알고리즘을 말한다.
표준 어텐션 구현은 시퀀스 길이의 제곱에 비례하는 크기의 어텐션 행렬을 GPU의 느린 메모리에 그대로 저장했다가 다시 읽어오는데, 이 메모리 이동 자체가 연산 속도의 병목이 된다. 플래시 어텐션은 입력을 작은 블록으로 나눠 GPU의 빠른 온칩 메모리 안에서 소프트맥스와 가중합을 함께 계산하고, 전체 어텐션 행렬을 한 번도 통째로 저장하지 않은 채 수학적으로 동일한 결과를 만들어낸다. 이 과정에서 역전파에 필요한 값도 다시 계산하는 방식으로 메모리 사용량을 줄인다. 실무에서는 트랜스포머 모델을 학습하거나 긴 문맥을 다루는 추론 서버를 구성할 때 어텐션 레이어의 구현체를 선택하는 옵션으로 마주치며, 대부분의 딥러닝 프레임워크와 추론 엔진이 이를 기본 또는 선택 가능한 커널로 제공한다. 흔한 오해는 이것이 어텐션의 근사치나 다른 알고리즘이라고 생각하는 것인데, 실제로는 수치적으로 정확히 같은 결과를 더 효율적인 순서로 계산하는 것뿐이며 모델의 출력이나 정확도에는 영향을 주지 않는다.
함께 보기
트랜스포머트랜스포머는 입력 시퀀스의 모든 토큰 쌍 사이의 관계를 어텐션 메커니즘으로 직접 계산하여 문맥을 파악하는 신경망 아키텍처를 말한다.KV 캐시트랜스포머 기반 언어 모델이 토큰을 하나씩 생성할 때 이미 계산한 어텐션의 키(Key)와 값(Value) 벡터를 저장해 두었다가 다음 토큰 생성 시 재사용함으로써 중복 계산을 없애는 추론 최적화 기법을 말한다.