본문 바로가기

AI Compiler framework

GEMM Epilogue (Gemm + Bias (+ReLU)) 반영 및 수정 문서

0. 목적

기존 그래프에서 gemm - bias_add - relu 로 분리되어 실행되던 경로를 단일 fused op 로 실행하여

  • 커널 런치 수 감소
  • 메모리 왕복 감소
  • epilogue 비용을 GEMM store 단계로 흡수

역전파에서 dBias 계산을 전용 커널로 가속, dA / dB 는 기존 gemm BWD 재사용으로 정확성과 재사용성을 유지

 

1. 변경 요약 (What changed)

1.1 Forward : gemm_epilogue emitter 추가 / 수정

I / O 계약

  • inputs : [A, B, bias]
  • outputs : [Y]
  • semantics:
    • Y = op(A) @ op(B) + bias
    • if relu : Y = max(Y, 0)

 

1.2 Backward : 합성 BWD 로 정의

gemm_epilogue 는 forward 가 fused 이지만, backward 는 다음의 조합으로 구성한다.

목표 그래디언트

  • dA, dB, dBias

구성 로직

  • ReLU mask 반영
    • relu = True 일 때 
      • dZ = dY * (Y > 0)
      • 기존 relu_bwd 커널 재사용
    • relu = False 일 때
      • dZ = dY
  • dA / dB 는 기존 GEMM BWD 재사용
  • dBias 는 전용 커널로 가속

 

2. 왜 이렇게 설계 했는지 (Why this design)

dA/dB는 재사용, dBias만 전용 커널로 최적화가 비용 대비 효과가 가장 좋다.