본문으로 건너뛰기

[triton] Triton에서의 MXFP 변환 성능 최적화: TMA와 벡터화된 연산 활용

PR 링크: triton-lang/triton#8610 상태: Merged | 변경: +218 / -80

들어가며

최근 AI 모델의 추론 및 학습 효율을 높이기 위해 MXFP(Microscaling Formats)와 같은 저정밀도 데이터 포맷이 주목받고 있습니다. 하지만 이러한 포맷으로의 변환(Upcast/Downcast) 과정에서 발생하는 연산 오버헤드는 전체 파이프라인의 병목이 될 수 있습니다. 본 PR은 Triton 레포지토리에서 MXFP8 및 MXFP4 변환 커널의 처리량을 극대화하기 위해 수행된 최적화 작업을 다룹니다. 핵심은 Blackwell 아키텍처의 TMA(Tensor Memory Accelerator) 활용, 벡터화된 메모리 스토어, 그리고 최적의 타일링 파라미터 튜닝입니다.

코드 분석

1. Upcast 최적화: TMA 활용 및 패딩 처리

Upcast 과정에서는 TensorDescriptor를 도입하여 TMA를 활용하도록 변경되었습니다. TMA는 비동기 데이터 이동을 통해 메모리 대역폭을 효율적으로 활용합니다.

# Before
_upcast_from_mxfp[(blocks_out_dim, blocks_quant_dim)](reshaped_out, *reshaped_out.stride(), ...)

# After
out_desc = TensorDescriptor.from_tensor(reshaped_out, [BLOCK_OUT_DIM, BLOCK_QUANT_DIM])
tensor_desc = TensorDescriptor.from_tensor(reshaped_tensor, [BLOCK_OUT_DIM, block_size_quant_mx_tensor])
_upcast_from_mxfp[(blocks_out_dim, blocks_quant_dim)](out_desc, tensor_desc, ...)

TMA의 정렬 요구사항을 만족시키기 위해, 내부 차원에 대한 패딩(Padding) 로직이 추가되었으며 연산 후 이를 다시 제거하는 언패딩 과정이 포함되었습니다.

2. Downcast 최적화: 벡터화된 스토어

Downcast에서는 바이트 단위의 스토어 대신 벡터화된 스토어를 활성화하여 메모리 처리량을 개선했습니다.

# 성능 튜닝 파라미터 변경
BLOCK_OUT_DIM = 32
BLOCK_QUANT_DIM = MXFP_BLOCK_SIZE.value * 4
NUM_WARPS = 4 if src_tensor.dtype == torch.float32 else 8

리뷰 과정에서 지적된 정렬 문제(Misaligned base pointer)에 대해서도 가드 코드를 추가하여 안정성을 확보했습니다.

왜 이게 좋은가

이번 최적화는 하드웨어 가속기(TMA)를 적극적으로 활용하고, 메모리 접근 패턴을 벡터화함으로써 대역폭(GBps)을 획기적으로 향상시켰습니다. 예를 들어, H100 환경에서 MXFP4(e2m1)의 경우 기존 대비 2배 이상의 성능 향상을 보였습니다.

일반적 교훈

  1. TMA 활용: 최신 GPU 아키텍처에서는 메모리 복사 및 로드 연산을 커널 코드에서 직접 제어하기보다 TMA를 사용하는 것이 훨씬 효율적입니다.
  2. 정렬(Alignment)의 중요성: 벡터화된 연산이나 TMA를 사용할 때는 메모리 정렬이 필수적입니다. 패딩을 통해 정렬을 맞추는 비용이 연산 속도 향상으로 얻는 이득보다 작다면, 패딩 전략은 매우 유효한 최적화 기법입니다.
  3. 타일링 튜닝: BLOCK_DIMNUM_WARPS는 하드웨어 점유율과 레지스터 압박 사이의 균형을 맞추는 핵심 요소입니다. 실험을 통한 튜닝은 필수적입니다.

리뷰어 피드백 반영

리뷰어들은 특히 0.2500000298...과 같은 코너 케이스에서 발생하는 반올림 오류를 지적했습니다. 이는 RTNE(Round to Nearest, Ties to Even) 알고리즘의 정확한 구현을 통해 해결되었으며, 정렬되지 않은 포인터에 대한 UB(Undefined Behavior) 방지 로직이 추가되어 커널의 견고함이 강화되었습니다.

참고 자료

⚠️ 알림: 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.

댓글

관련 포스트

PR Analysis 의 다른글