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