위키득계정 ↗
기술

FlashAttention-2

FlashAttention-2기술
기반
FlashAttention
주요 개선
작업 분할과 병렬 처리
연산 조절
행렬 곱 이외의 작업 감소
목적
GPU 실행 효율 향상
FlashAttention-2는 정확한 GPU 주의 연산의 작업 분배와 병렬화를 개선한 알고리즘이다. FlashAttention의 메모리 절약 원리를 유지하면서 연산 배치와 스레드 사이의 통신을 조절한다.

작업 분배의 개선

하나의 주의 헤드 안의 계산도 여러 스레드 블록에 나눠 GPU 자원을 더 잘 활용한다. 블록 내부에서는 워프들의 작업 배치를 조절해 공유 메모리를 통한 불필요한 통신을 줄인다. 주의의 수학적 목표를 다른 근사 연산으로 바꾸는 접근은 아니다.

연산 종류와 장치 효율

같은 연산 개수라도 행렬 곱과 스칼라·정규화 연산이 장치에서 처리되는 효율은 다르다. FlashAttention-2는 행렬 곱이 아닌 연산을 줄이는 조정도 활용한다. 단순한 총 FLOPs만으로 실제 시간을 모두 설명할 수는 없다.

전체 가속의 독립 예제

모형 실행 100ms 중 주의 연산이 40ms이고 나머지가 60ms라고 하자. 주의 부분만 두 배 빨라지면 총시간은 20+60=80ms로 전체 가속은 1.25배다. 핵심 층의 두 배 가속이 전체 모형의 두 배 가속과 같지는 않다.

비교 조건

입력 길이와 헤드 차원, 마스크, 정밀도 및 GPU 종류를 맞춰 비교해야 한다. 짧은 입력이나 작은 배치에서는 자원 활용 양상이 달라질 수 있다. 알고리즘 논문의 측정 결과와 현재 사용하는 라이브러리의 실제 성능을 구분한다.

관련 문서

FlashAttention / 게이트 선형 주의 / Mamba-2 / GPU / 병렬 컴퓨팅 / 자기 주의