빠르고 메모리 효율적인 Transformer 어텐션 방법인 플래시 어텐션에 대해 알아보고, NLP 및 CV를 위한 GPU 학습과 실시간 추론 속도를 높여줍니다.
플래시 어텐션은 다음과 같은 고급 알고리즘을 통해 트랜스포머 모델의 성능을 가속화하도록 설계된 알고리즘입니다. 그래픽 메모리 액세스 방식을 최적화하는 하드웨어의 메모리에 액세스하는 방식을 최적화합니다. 딥 러닝의 계산 병목 현상을 해결하기 위해 개발되었습니다. 딥 러닝의 계산 병목 현상을 해결하기 위해 개발된 이 방법은 훈련 속도와 실시간 추론 속도를 정확도. 데이터 이동을 보다 효율적으로 관리합니다, 플래시 어텐션은 AI 모델이 더 긴 데이터 시퀀스를 처리할 수 있게 해주며, 이는 다음과 같은 최신 애플리케이션에 매우 중요합니다. 자연어 처리(NLP) 및 고성능 컴퓨터 비전(CV)의 최신 애플리케이션에 매우 중요합니다.
플래시 어텐션의 핵심 혁신은 'IO 인식' 기능에 있으며, 이는 명시적으로 데이터 이동에 드는 메모리 레벨 간에 데이터를 이동하는 데 드는 비용을 GPU (그래픽 처리 장치). In 표준 어텐션 구현에서는 대용량 중간 행렬을 자주 읽고 GPU 고대역폭 메모리(High 대역폭 메모리(HBM)로 자주 읽고 쓰는데, 이 메모리는 넓지만 상대적으로 느립니다.
플래시 어텐션은 타일링이라는 기술을 사용하여 이 프로세스를 재구성합니다. 이는 큰 주의 매트릭스를 GPU 빠른 온칩 SRAM(정적 랜덤 액세스 메모리)에 완전히 들어맞는 작은 블록으로 나눕니다. 더 많은 더 많은 연산을 수행하고 HBM에 대한 읽기/쓰기 작업을 최소화하여 메모리 대역폭을 줄임으로써 병목 현상을 줄입니다. 이 개념은 다음 연구진에 의해 도입되었습니다. 스탠포드 대학교 연구진에 의해 도입되었으며 플래시어텐션.
플래시 주의는 일반적인 주의 개념과 구별하는 것이 중요합니다.
플래시 어텐션은 NLP 영역에서 시작되었지만 LLM(대규모 언어 모델)에서 시작되었지만, 이제는 비전 작업에서 점점 더 중요해지고 있습니다. 다음과 같은 최신 아키텍처는 비전 트랜스포머(ViT)와 같은 최신 아키텍처는 주의 계층에 크게 의존합니다.
YOLO12와 같은 일부 커뮤니티 중심 모델에서는 플래시 어텐션을 활용하여 아키텍처의 과중한 컴퓨팅 비용을 완화하는 통합 어텐션 메커니즘을 사용합니다. 아키텍처를 사용합니다. 하지만 이러한 모델도 여전히 높은 메모리 소비와 훈련 불안정성으로 인해 어려움을 겪을 수 있습니다. 대부분의 실제 사용 사례, Ultralytics YOLO11 이 여전히 속도와 효율성의 탁월한 균형을 제공하는 권장 선택입니다. 향후 출시 예정인 YOLO26은 기본적으로 엔드투엔드 작업을 지원하도록 설계되고 있습니다. 유사한 효율성 원칙을 활용할 수 있는 최적화된 아키텍처로 엔드투엔드 작업을 기본적으로 지원하도록 설계 중입니다.
플래시 어텐션은 이전에는 계산이 불가능했던 작업을 AI 시스템이 처리할 수 있게 해줍니다.
다음과 같은 최신 프레임워크 PyTorch (버전 2.0 이상)와 같은 최신 프레임워크에는 플래시 Attention을 해당 기능 API에 직접 통합합니다. 하이레벨 라이브러리를 사용할 때, 시스템은 하드웨어가 플래시 어텐션과 같은 가장 효율적인 커널(예: 플래시 어텐션)을 자동으로 선택합니다(예: NVIDIA Ampere 또는 Hopper GPU 등 하드웨어가 이를 지원하는 경우).
다음 예시는 사용자가 이 에코시스템을 활용하는 방법을 보여줍니다. 모델을 로드하고 이를 쿠다 디바이스로 이동하면 기본 프레임워크는 모델 훈련 중에 이러한 최적화를 적용합니다. 모델 훈련.
import torch
from ultralytics import YOLO
# Ensure PyTorch is using a CUDA device for GPU acceleration
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using device: {device}")
# Load the YOLO11 model, which is optimized for efficiency
model = YOLO("yolo11n.pt")
# When training on a compatible GPU with PyTorch 2.0+,
# Flash Attention (SDPA) is utilized automatically for attention layers where applicable.
if device == "cuda":
results = model.train(data="coco8.yaml", epochs=5, imgsz=640)
이러한 원활한 통합을 통해 개발자는 다음을 사용할 수 있습니다. Ultralytics 플랫폼을 사용하는 개발자는 복잡한 CUDA 커널을 직접 작성하지 않고도 최첨단 가속 기술을 활용할 수 있습니다.