본문으로 건너뛰기

[sglang] MiniMax-H3 모델의 RMSNorm 및 AdaLN 연산 최적화: Triton을 활용한 커널 융합

PR 링크: sgl-project/sglang#43327 상태: Merged | 변경: +248 / -7

들어가며

최신 Diffusion Transformer(DiT) 모델인 MiniMax-H3는 각 블록 내에서 residual stream을 두 번 정규화합니다. 기존 구현에서는 nn.RMSNorm과 indexed AdaLN 연산이 분리되어 실행되었는데, 이는 중간 결과를 BF16으로 반복적으로 반올림(rounding)하고 메모리에서 읽고 쓰는 과정을 중복으로 발생시켰습니다. 본 PR은 이 두 연산을 하나의 Triton 커널로 융합하여 메모리 접근을 최적화하고 연산 효율을 극대화합니다.

코드 분석

1. Triton 커널 구현 (rmsnorm_scale_shift_triton.py)

핵심 변경 사항은 _rmsnorm_indexed_scale_shift_kernel의 도입입니다. 기존에는 RMSNorm 후 별도의 scale/shift 연산을 수행했으나, 이제는 FP32 정밀도로 한 번에 계산하여 반올림 횟수를 줄였습니다.

# Before: 분리된 연산 (nn.RMSNorm + indexed_scale_shift_bf16_)
# After: 융합된 커널
@triton.jit
def _rmsnorm_indexed_scale_shift_kernel(...):
    # ... (생략)
    x = tl.load(x_ptr + row * DIM + cols, mask=mask, other=0.0).to(tl.float32)
    rstd = tl.math.rsqrt(tl.sum(x * x, axis=0) / DIM + EPS)
    w = tl.load(w_ptr + cols, mask=mask).to(tl.float32)
    scale = tl.load(scale_ptr + mod_ptr, mask=mask).to(tl.float32)
    shift = tl.load(shift_ptr + mod_ptr, mask=mask).to(tl.float32)
    y = (x * rstd * w) * (1.0 + scale) + shift
    tl.store(y_ptr + row * DIM + cols, y, mask=mask)

2. 품질 게이트 적용 (minimax_h3_norm_modulate_site.py)

이 최적화는 quality="lossless" 및 "high" 모드에서만 활성화됩니다. exact 모드에서는 기존의 비트 단위 일치(bit-exact)를 유지하기 위해 융합 커널을 사용하지 않도록 설계되었습니다.

# 융합 여부를 결정하는 QualityGatedFusion 사용
_FUSION = QualityGatedFusion(
    name="MiniMax-H3 fused RMSNorm + AdaLN",
    marker_attr="_sgl_minimax_h3_norm_modulate_site",
    enabled_attr="_sgl_minimax_h3_norm_modulate_enabled",
)

왜 이게 좋은가

성능 향상

H200 GPU 환경에서 D=5376 기준으로 벤치마크를 수행한 결과, 기존 대비 약 2.4배의 속도 향상을 확인했습니다.

rows 기존 (ms) 융합 (ms) 속도 향상
32768 440.2 µs 182.0 µs 2.4×

일반적 교훈

  1. 메모리 바운드 커널의 융합: 메모리 접근이 잦은 연산(RMSNorm + AdaLN)을 하나로 묶으면 대역폭 병목을 획기적으로 줄일 수 있습니다.
  2. 정밀도 관리: FP32로 중간 연산을 수행하고 마지막에 한 번만 반올림함으로써, 성능 향상과 동시에 수치적 안정성을 확보할 수 있습니다.
  3. 품질 게이트(Quality Gate) 전략: 최적화가 모델 결과에 미치는 영향을 제어하기 위해 exact, lossless 등의 레벨을 나누어 적용하는 방식은 프로덕션 환경에서 매우 유용한 패턴입니다.

결론

이번 최적화는 MiniMax-H3의 추론 속도를 개선하면서도, lossless 품질 수준을 유지하여 실사용 시의 결과물 품질 저하를 방지했습니다. SGLang과 같은 고성능 추론 엔진에서 Triton 커널 융합은 필수적인 최적화 기법임을 다시 한번 입증했습니다.

참고 자료

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

댓글

관련 포스트

PR Analysis 의 다른글