[faster-qwen3-tts] 모드 간 성능 동등성 검증 및 벤치마크 비교 문서화
PR 링크: andimarafioti/faster-qwen3-tts#18 상태: Merged | 변경: +146 / -0
들어가며
faster-qwen3-tts는 VoiceClone(xvec), VoiceClone(ICL), CustomVoice 세 가지 모드를 지원한다. 각 모드는 prefill 단계에서 다른 입력을 구성하지만, CUDA graph으로 캡처된 decode 단계는 동일하다. 이 PR은 모드 간 성능 동등성을 정량적으로 검증하는 벤치마크를 추가하고 결과를 문서화한다.
핵심 코드 분석
compare_modes.py 벤치마크
def bench_stream(fn, label):
# TTFA 측정 (streaming)
ttfas = []
for _ in range(TTFA_RUNS):
t0 = time.perf_counter()
gen = fn(max_new_tokens=512, chunk_size=CHUNK_SIZE, streaming=True)
_chunk, _sr, _timing = next(gen)
ttfas.append((time.perf_counter() - t0) * 1000)
# RTF 측정 (non-streaming)
rtfs = []
for _ in range(RTF_RUNS):
t0 = time.perf_counter()
audio_list, sr = fn(max_new_tokens=512, streaming=False)
total = time.perf_counter() - t0
rtfs.append(len(audio_list[0]) / sr / total)
print(f"{label:>18} | TTFA={np.mean(ttfas):.0f}ms | RTF={np.mean(rtfs):.3f}")
측정 결과 (README에 추가)
| Mode | TTFA (ms) | RTF | ms/step |
|---|---|---|---|
| VoiceClone xvec | 152 +/- 11 | 5.470 +/- 0.032 | 15.2 +/- 0.1 |
| VoiceClone full ICL | 149 +/- 1 | 5.497 +/- 0.026 | 15.2 +/- 0.1 |
| CustomVoice | 148 +/- 1 | 5.537 +/- 0.020 | 15.0 +/- 0.1 |
세 모드 모두 ms/step이 15ms 대로 사실상 동일하다.
왜 이게 좋은가
- 아키텍처 검증: "decode 단계는 모드와 무관하게 동일하다"는 설계 가정을 실측 데이터로 증명한다.
- 사용자 의사결정 지원: 모드 선택 시 성능 차이를 걱정할 필요 없다는 것을 수치로 보여준다.
- 재현 가능:
benchmarks/compare_modes.py로 누구나 자신의 하드웨어에서 검증할 수 있다.
정리
벤치마크와 문서화가 함께 이루어진 모범적인 PR이다. CUDA graph 기반 추론에서 prefill과 decode의 성능 분리를 이해하는 데 도움이 되는 좋은 참고 자료다.
참고 자료
이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 코드 분석과 해석에서 오류가 있을 수 있으니, 정확한 내용은 원본 PR을 참고해주세요.
관련 포스트
PR Analysis 의 다른글
- 이전글 [triton] AMD gfx1250 MXFP Flash Attention 예제 커널 업데이트
- 현재글 : [faster-qwen3-tts] 모드 간 성능 동등성 검증 및 벤치마크 비교 문서화
- 다음글 [Open WebUI] 메시지 전송마다 발생하는 불필요한 채팅 JSON 역직렬화 2회 제거
댓글