[Triton] grouped_gemm 벤치마크 min/max ms 반환 순서 수정
PR 링크: triton-lang/triton#9432 상태: Merged | 변경: +2 / -2
들어가며
Triton의 grouped_gemm 튜토리얼에서 벤치마크 함수가 ms, max_ms, min_ms 순서로 값을 반환하고 있었다. triton.testing.perf_report는 이를 ms, min_ms, max_ms 순서로 기대하므로, y축이 절대 시간(ms)인 이 벤치마크에서 error bar의 상한과 하한이 뒤바뀌어 표시되었다.
핵심 코드 분석
Before
def benchmark_square_matrices(N, provider):
ms, min_ms, max_ms = triton.testing.do_bench(..., quantiles=quantiles)
return ms, max_ms, min_ms # max와 min이 뒤바뀜
def benchmark_batches(M, provider):
ms, min_ms, max_ms = triton.testing.do_bench(..., quantiles=quantiles)
return ms, max_ms, min_ms # 동일한 문제
After
def benchmark_square_matrices(N, provider):
ms, min_ms, max_ms = triton.testing.do_bench(..., quantiles=quantiles)
return ms, min_ms, max_ms # 올바른 순서
def benchmark_batches(M, provider):
ms, min_ms, max_ms = triton.testing.do_bench(..., quantiles=quantiles)
return ms, min_ms, max_ms # 올바른 순서
왜 이게 좋은가
- 정확한 시각화: error bar가 올바른 방향으로 표시되어, 벤치마크 결과 해석이 정확해진다.
- 다른 튜토리얼과 일관성: throughput(gbps) 기준인 다른 튜토리얼은
min_ms가 상한이지만, 절대 시간 기준인grouped_gemm에서는min_ms가 하한이어야 한다. - 2줄 수정: 최소한의 변경으로 명확한 버그를 수정한다.
정리
벤치마크의 y축 단위(throughput vs 절대 시간)에 따라 min/max의 의미가 달라진다는 점을 놓치기 쉽다. 이 PR은 단순하지만, 벤치마크 결과의 정확성을 보장하는 중요한 수정이다.
참고 자료
이 글은 AI 도구의 도움을 받아 작성되었습니다.
관련 포스트
PR Analysis 의 다른글
- 이전글 [Ray Data] 리소스 매니저 스케줄링에 논리적 메모리 포함
- 현재글 : [Triton] grouped_gemm 벤치마크 min/max ms 반환 순서 수정
- 다음글 [Grafana Loki] cmp.Diff 대신 cmp.Equal로 상태 비교를 단순화
댓글