Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Flash Attention

Flash Attention은 빠른 온칩 GPU 메모리에 타일 단위로 저장된 정확한 Transformer 어텐션을 계산해 메모리 트래픽과 긴 시퀀스의 처리 비용을 줄입니다.

Flash Attention(FlashAttention)은 Transformer 모델의 정확한 어텐션을 계산하면서 전체 어텐션 행렬을 GPU의 주 메모리에 기록하지 않는 알고리즘이자 GPU 커널 계열입니다. N개의 토큰에 대한 표준 셀프 어텐션은 N × N 점수 행렬을 만들고 이를 고대역폭 메모리(HBM)에 기록한 다음, 소프트맥스 및 값과의 곱셈을 위해 다시 읽습니다. 따라서 어텐션 실행 시간의 대부분은 데이터 이동에 소요됩니다. 스탠퍼드의 Tri Dao와 동료들은 2022년 논문 FlashAttention: IO 인식 기반의 빠르고 메모리 효율적인 정확한 어텐션에서 이 방법을 소개했습니다. 이 방법은 작업을 빠른 온칩 SRAM에 들어가는 타일로 분할하므로 메모리 사용량은 시퀀스 길이에 선형적으로 증가하고, 출력은 부동소수점 반올림 오차 범위 내에서 표준 어텐션과 일치합니다. 이 커널은 PyTorch 내부와 vLLM 같은 대규모 언어 모델(LLM) 추론 엔진에서 실행됩니다.

Flash Attention의 작동 방식#

GPU에는 연산 유닛 옆에 소량의 초고속 메모리가 있고, 칩 외부에는 용량이 크지만 속도가 느린 메모리가 있습니다. FlashAttention 논문은 NVIDIA A100의 HBM 40~80 GB, 대역폭 1.5~2.0 TB/s, 그리고 108개의 스트리밍 멀티프로세서 각각에 있는 SRAM 192 KB와 추정 대역폭 19 TB/s를 설명합니다. 어텐션은 읽는 바이트당 연산량이 적으므로 속도는 데이터가 두 메모리 계층 사이를 오가는 빈도에 좌우됩니다. 이 방법은 이러한 전송을 계산하며, 이것이 바로 "IO 인식"의 의미입니다.

FlashAttention은 쿼리 타일을 불러온 다음 키와 값 타일을 SRAM으로 스트리밍합니다. 각 타일에 대해 점수를 계산하고, 각 쿼리 행의 실행 중인 최댓값과 합계를 갱신하며, 최댓값이 커질 때마다 부분 출력을 재조정하고 새 타일의 기여분을 더합니다. 이 온라인 소프트맥스는 행 전체를 한꺼번에 보지 않고도 정확한 소프트맥스 결과를 제공하며, 최종 출력과 행마다 두 개의 숫자만 HBM으로 돌아갑니다. 역전파 단계에서는 N × N 행렬을 저장하는 대신 Q, K, V에서 점수 타일을 다시 계산합니다. 이로 인해 연산량은 늘어나지만 메모리를 훨씬 적게 읽으므로 여전히 더 빠르게 실행됩니다. 한 번에 하나의 키-값 타일에 대해 모든 쿼리를 처리하는 PyTorch의 동일한 루프는 다음과 같습니다:

import torch

torch.manual_seed(0)
n, d, block = 4096, 64, 256
q, k, v = torch.randn(3, n, d).unbind(0)

# Standard attention builds the full n x n score matrix in memory
reference = torch.softmax(q @ k.T / d**0.5, dim=-1) @ v

# FlashAttention-style: stream key/value tiles, keeping a running max and sum per query (online softmax)
row_max, row_sum, out = torch.full((n, 1), -torch.inf), torch.zeros(n, 1), torch.zeros(n, d)
for start in range(0, n, block):
    scores = q @ k[start : start + block].T / d**0.5  # only an n x block tile exists at once
    new_max = torch.maximum(row_max, scores.max(dim=-1, keepdim=True).values)
    rescale, probs = torch.exp(row_max - new_max), torch.exp(scores - new_max)
    row_sum = row_sum * rescale + probs.sum(dim=-1, keepdim=True)
    out = out * rescale + probs @ v[start : start + block]
    row_max = new_max
out = out / row_sum

print(f"Largest score tile: {tuple(scores.shape)} vs full matrix: ({n}, {n})")
print(f"Max difference from standard attention: {(out - reference).abs().max().item():.1e}")

가장 큰 점수 타일은 4,096 × 256으로, 4,096 × 4,096 행렬의 16분의 1입니다. 결과는 표준 어텐션과 최대 4.3e-07만큼 차이가 나며, 이는 FP32 반올림 오차의 크기입니다. 실제 커널은 쿼리도 타일로 나누어 각 타일을 GPU 스레드 블록 하나에 할당하고, 전체 루프를 단일 커널로 융합하여 타일이 SRAM을 벗어나지 않도록 합니다.

FlashAttention-2, -3, -4#

각 버전은 더 새로운 GPU 세대를 대상으로 합니다. FlashAttention-2(2023)는 스레드 간 작업 분할 방식을 재구성해 기존보다 약 두 배 빠르게 실행되었으며, A100 최대 처리량의 50~73%에 도달했습니다. FlashAttention-3(2024)는 H100의 비동기 Tensor Core를 사용하고 FP8을 지원하여 FP16에서 740 TFLOPs/s, FP8에서 약 1.2 PFLOPs/s에 도달했습니다. FlashAttention-4(2026)는 Blackwell GPU를 대상으로 하며 B200에서 BF16 기준 최대 1,613 TFLOPs/s, 즉 최대 처리량의 71%를 보고합니다. 이 커널은 flash-attention 오픈 소스 라이브러리에 포함되어 있으며 FP16 및 BF16 입력에서 작동합니다. PyTorch의 scaled_dot_product_attention은 GPU와 입력이 지원하는 경우 FlashAttention-2 커널을 자동으로 선택하고, 그렇지 않으면 메모리 효율형 또는 기본 구현으로 대체합니다. Ultralytics 패키지에서 실행되는 Meta의 SAM 2는 Hiera 이미지 인코더와 메모리 어텐션에서 해당 함수를 통해 어텐션을 계산하므로, 하드웨어와 입력 정밀도가 허용하는 경우 PyTorch는 해당 계층을 FlashAttention으로 라우팅합니다.

  • 표준 어텐션: 동일한 수학적 연산이지만 전체 점수 행렬과 확률 행렬을 HBM에 기록하여 계산합니다.
  • 희소 어텐션: 선택된 쿼리-키 쌍만 점수를 계산합니다. FlashAttention 논문에서는 비어 있는 타일을 건너뛰는 블록 희소 변형도 소개했습니다.
  • 선형 어텐션: 소프트맥스를 특징 맵으로 대체해 비용이 시퀀스 길이에 선형적으로 증가하도록 합니다. 이 방식은 모델 출력을 바꿉니다.
  • PagedAttention: 서빙 중 KV 캐시를 고정 크기 페이지에 저장하는 메모리 관리자입니다. FlashAttention을 포함한 어텐션 커널은 해당 페이지에서 키와 값을 읽습니다.
  • 링 어텐션: 매우 긴 시퀀스를 여러 기기에 분산하고, 각 기기는 자신의 샤드에서 블록 단위 어텐션을 계산하며 키-값 블록은 링을 따라 전달합니다.

학습 및 긴 컨텍스트에 미치는 영향#

메모리가 시퀀스 길이에 선형적으로 증가하기 때문에 FlashAttention은 긴 컨텍스트 윈도우를 실용적으로 학습할 수 있게 했습니다. 원 논문은 MLPerf 1.1 학습 기록에서 시퀀스 길이 512인 BERT-large의 종단 간 속도가 15% 향상되었고, 시퀀스 길이 1,024인 GPT-2는 3배, Long Range Arena 벤치마크에서는 2.4배 빨라졌다고 보고했습니다. Vision Transformer(ViT)나 디퓨전 Transformer가 고해상도 이미지와 비디오를 긴 토큰 시퀀스로 변환하는 비전 분야에도 동일한 절감 효과가 적용됩니다. 더 긴 시퀀스는 정확도도 높였습니다. 논문은 128 × 128 이미지의 픽셀 16,384개를 일렬로 펼쳤을 때 두 점이 경로로 연결되어 있는지 묻는 작업인 Path-X에서 우연 수준을 넘은 최초의 Transformer 결과를 보고했습니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요