본문으로 건너뛰기
임커밋조회 5

Flash Attention: GPU 메모리 병목을 해결하는 어텐션 최적화 기법

GPU의 SRAM과 HBM 메모리 계층 구조를 활용하여 데이터 이동을 최소화하고 연산 속도를 획기적으로 개선하는 Flash Attention의 핵심 메커니즘을 설명한다.

챕터별 상세

00:26

Attention 연산의 기본 과정

Attention은 Query, Key, Value 세 행렬을 이용해 계산된다. Query와 Key의 행렬 곱으로 Attention Score를 구하고 수치 안정성을 위해 최댓값을 뺀 Softmax를 적용한 뒤 Value와 가중합을 구하여 최종 출력을 얻는다. 이 과정에서 Softmax 계산 시 지수 함수의 값이 너무 커져 발생하는 Overflow를 방지하기 위한 기법이 포함된다.

표준적인 Attention 연산은 중간 결과물인 Attention Score 행렬을 메모리에 저장해야 하므로 시퀀스 길이에 비례해 메모리 점유율이 급증한다.

01:24

GPU 메모리 구조와 I/O 병목

GPU에는 용량은 크지만 속도가 느린 HBM과 속도는 빠르지만 용량이 작은 SRAM이 존재한다. 실제 연산은 SRAM에서 이루어지므로 HBM의 데이터를 SRAM으로 가져와야 하는데 일반적인 Attention은 각 단계마다 중간 결과를 HBM에 쓰고 다시 읽는 과정을 반복한다. 이로 인해 연산 시간보다 데이터 이동 시간이 더 길어지는 I/O 병목 현상이 발생한다.

메모리 대역폭 제한(Memory-bound) 문제는 현대 GPU 연산에서 연산 능력 자체보다 더 큰 성능 저하 요인이 된다.

02:36

Flash Attention의 핵심 아이디어: Tiling

Flash Attention은 HBM과 SRAM 사이의 왕복 횟수를 줄이기 위해 데이터를 작은 조각으로 나누어 처리한다. Query와 Key를 SRAM에 올릴 수 있는 크기로 쪼개어 가져온 뒤 SRAM 내부에서 행렬 곱부터 Softmax, Value 곱까지 한 번에 수행한다. 이를 통해 중간 결과를 HBM에 저장하지 않고 최종 출력만 기록하여 메모리 접근 효율을 극대화한다.

Tiling은 커널 퓨전(Kernel Fusion)의 일종으로 여러 연산을 하나의 GPU 커널로 합쳐 메모리 접근을 줄이는 기법이다.

03:21

Online Softmax를 통한 블록 단위 계산

Softmax는 전체 시퀀스에 대한 합과 최댓값이 필요하므로 조각난 데이터만으로는 계산이 불가능해 보이지만 Flash Attention은 Online Softmax 기법을 사용한다. 이전 블록까지의 최댓값과 합을 유지하면서 새 블록이 들어올 때마다 수식을 보정하여 업데이트하는 방식이다. 이 과정을 통해 전체 데이터를 한꺼번에 보지 않고도 정확한 Softmax 결과를 점진적으로 산출할 수 있다.

Online Softmax는 수학적으로 표준 Softmax와 동일한 결과를 내면서도 메모리 효율성을 확보하는 핵심 알고리즘이다.

04:52

Flash Attention의 전체 알고리즘 구조

전체 알고리즘은 Query를 바깥쪽 루프에서 순회하고 Key-Value 조각을 안쪽 루프에서 순회하는 이중 반복문 구조로 설계되어 있다. 각 단계에서 SRAM에 로드된 조각들을 이용해 Online Softmax 업데이트를 수행하며 최종 출력 행렬을 완성한다. 논문과 실제 구현체(GitHub)의 루프 순서에 차이가 있을 수 있으나 SRAM 내부에서 연산을 완결 짓는 핵심 원리는 동일하다.

이중 루프 구조는 GPU의 병렬 처리 특성을 활용하면서도 메모리 계층 구조를 최적으로 이용하도록 설계되었다.

용어 해설

고대역폭 메모리(HBM)
GPU의 주 메모리로 사용되며 용량이 크지만 연산 장치와의 데이터 전송 속도가 SRAM에 비해 상대적으로 느린 메모리 계층이다. 딥러닝 연산에서 대량의 데이터를 저장하는 용도로 쓰이지만 빈번한 접근 시 병목 현상의 원인이 된다.
정적 랜덤 액세스 메모리(SRAM)
GPU 내부 연산 코어와 매우 가까이 위치한 고속 메모리로 용량은 작지만 데이터 읽기/쓰기 속도가 매우 빠르다. 실제 연산이 수행되는 공간이며 Flash Attention은 이 공간을 최대한 활용하여 성능을 높인다.
타일링(Tiling)
큰 행렬 연산을 GPU의 빠른 메모리(SRAM) 크기에 맞춰 작은 블록 단위로 나누어 처리하는 기법이다. 메모리 계층 간의 데이터 이동 횟수를 줄여 전체적인 연산 효율을 극대화하는 데 사용된다.
온라인 소프트맥스(Online Softmax)
전체 시퀀스 데이터를 한꺼번에 보지 않고도 부분적인 통계량(최댓값, 합계)을 순차적으로 업데이트하며 정확한 Softmax 값을 계산하는 알고리즘이다. 메모리 사용량을 줄이면서도 수학적으로 동일한 결과를 보장한다.
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 03. 22.수집 2026. 03. 22.출처 타입 YOUTUBE

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.