SDPA rank-3 입력도 fused CUDA 경로 — PyTorch 2.14에서 배치 없는 텐서가 math 폴백을 피합니다 | DAKER 커뮤니티

rank-3도 fused로
설명용 생성 이미지입니다.

한 줄 요약
PyTorch 2.14의 SDPA는 rank-3 입력도 fused CUDA 백엔드로 보냅니다. 배치 축을 빼거나 이미 펼쳐 둔 텐서가 math 폴백으로 조용히 떨어지던 함정이 줄어듭니다.

어텐션 입력을 [B, H, L, D]로만 가정하다 보면, 이미 flatten한 [H, L, D]나 배치 없는 텐서를 그대로 넘기기 쉽습니다. 오늘은 텐서 ndim이 3인지 4인지부터 로그로 남기십시오. rank-3인데도 fused가 도는지가 이번 변경의 핵심입니다.

재현해 볼 실험 조건

  1. 동일 내용을 rank-4와 rank-3 두 형태로 준비합니다.
  2. 둘 다 scaled_dot_product_attention에 넣고, 백엔드·커널 이름·지연 시간을 비교합니다.
  3. reshape만으로 fused를 억지로 맞추던 기존 우회를 제거한 뒤 결과가 유지되는지 확인합니다.

배치 차원이 없거나 이미 평탄해진 입력이 math 경로로 가면, 코드는 그대로인데 속도만 빠집니다. 2.14는 그 입력을 fused CUDA로 보내 형태 변환 부담을 줄입니다. 참가자는 프로파일에 math 커널이 남는지만 먼저 보면 됩니다.

실무에서 바로 볼 포인트

관련 DAKER 학습

설명용 생성 이미지입니다. fused 여부는 로컬 프로파일로 확인하십시오.