flagos-ai/FlagAttention
A collection of memory efficient attention operators implemented in the Triton language.
해결하는 문제
FlagAttention은 FlashAttention과 같은 표준 CUDA 기반 구현보다 수정 및 사용자 지정이 더 쉬운 메모리 효율적인 어텐션 연산자를 제공합니다. 언어 모델링에서 어텐션 스코어 계산, KV 캐시 레이아웃, 또는 추론 경로에 프로젝트별 맞춤형 변경이 필요한 비표준 어텐션 메커니즘의 필요성을 충족합니다.
작동 방식
Triton 언어로 구현되어 있으며, 전체 어텐션 스코어 행렬을 메모리에 저장하지 않고 타일링과 재계산을 사용하여 메모리 사용량과 트래픽을 크게 줄입니다. 다음과 같은 전용 연산자를 제공합니다:
- flash_attention: MQA/GQA 및 드롭아웃을 지원하는 Triton 기반의 FlashAttention v2 구현.
- piecewise_attention: 비선형화된 위치 임베딩(NLPE)을 위한 확장으로, 거리 임계값 기반으로 두 쌍의 쿼리와 키를 사용하여 어텐션 스코어를 계산합니다.
- flash_attention_split_kv: 긴 KV 시퀀스를 위한 분할 KV 플래시 디코딩 연산자.
- paged_attention: 추론 중 페이지 기반 KV 캐시 관리를 위한 연산자.
대상 사용자
기존 라이브러리에서 제공하는 것보다 더 많은 유연성을 필요로 하거나, 어텐션 스코어에 맞춤형 변환을 적용하고자 하는 AI 연구자 및 개발자에게 적합합니다.
주요 특징
- Triton 기반: 원시 CUDA 코드보다 이해하고 수정하기 쉬움.
- 메모리 효율성: 타일링과 재계산을 통해 메모리 트래픽과 사용량을 줄임.
- 사용자 지정 가능: NLPE용 비표준 연산자(예: piecewise_attention)를 특별히 지원.
- 하드웨어 호환성: Nvidia Ampere GPU(A100, RTX-3090) 및 Iluvatar CoreX GPU에서 테스트 완료.
- 포괄적인 기능: float16, bfloat16, 인과/비인과 모드, MQA/GQA를 지원.
관련
- 프로젝트
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트