meta-pytorch/attention-gym

Helpful tools and examples for working with flex-attention

해결하는 문제

Attention Gym은 새로운 어텐션 메커니즘을 구현하고 실험할 수 있는 플레이그라운드와 빌딩 블록 라이브러리를 제공합니다. 사용자 정의 어텐션 마스크 및 스코어 수정을 간편하게 만들며, 일반적으로 처음부터 구현하기 어려운 스파스 및 선형 어텐션 변형에 대한 효율적인 구현을 제공합니다.

작동 방식

이 프로젝트는 세 가지 주요 워크플로우를 통해 작동합니다:

  1. FlexAttention 통합: PyTorch의 FlexAttention API에 직접 전달할 수 있는 mask_mod 및 score_mod 함수를 제공하여 어텐션 계산 방식을 사용자 정의할 수 있습니다.
  2. 전용 커널: gather_attn을 통해 스파스 어텐션을 위한 전용 API와 커널, GDN 및 KDA 경로를 포함한 선형 어텐션을 위한 커널을 제공합니다.
  3. 실용적인 예제: 페이지 기반 어텐션, 링 어텐션, CUDA Graphs를 포함한 벤치마크 및 실제 워크로드 세트를 제공하여 이러한 빌딩 블록을 실제 운영 환경과 유사한 시나리오에서 어떻게 적용할 수 있는지 보여줍니다.

대상 사용자

PyTorch 2.5 이상을 사용하여 새로운 어텐션 변형을 개발하거나 어텐션 성능을 최적화하고자 하는 AI 연구자 및 개발자에게 적합합니다.

주요 특징

  • PyTorch FlexAttention과의 통합으로 마스크 및 스코어 수정이 간편합니다.
  • 스파스 어텐션 패턴과 효율적인 선형 어텐션 커널 지원.
  • GDN 및 KDA(체크, 반복, 디코딩 경로)를 위한 전용 프리미티브.
  • 변동 스파스 어텐션, 컴파일, 프로파일링을 포함한 포괄적인 예제.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트