본문으로 건너뛰기

[SGLang] Diffusion JIT 커널 테스트 레이아웃 리팩터링 및 CI 트리거 정밀화

PR 링크: sgl-project/sglang#21385 상태: Merged | 변경: +22 / -12

들어가며

SGLang의 JIT 커널 테스트와 벤치마크는 python/sglang/jit_kernel/tests/benchmark/에 flat하게 배치되어 있었다. Diffusion 관련 커널이 늘어나면서 파일이 뒤섞이고, CI에서 모든 JIT 커널 변경이 multimodal_gen 테스트를 트리거하는 문제가 있었다.

이 PR은 diffusion 전용 테스트/벤치마크를 diffusion/ 서브폴더로 이동하고, CI 워크플로우의 path filter를 정밀하게 조정한다.

핵심 코드 분석

파일 이동

# Before
python/sglang/jit_kernel/tests/test_fused_norm_scale_shift.py
python/sglang/jit_kernel/benchmark/bench_fused_norm_scale_shift.py

# After
python/sglang/jit_kernel/tests/diffusion/test_fused_norm_scale_shift.py
python/sglang/jit_kernel/benchmark/diffusion/bench_fused_norm_scale_shift.py

CI 트리거 정밀화

Before:

# pr-test.yml - multimodal_gen 변경 감지
jit_kernel:
  - "python/sglang/jit_kernel/**"  # 모든 JIT 커널 변경이 트리거

After:

# diffusion 경로만 multimodal_gen 트리거
multimodal_gen:
  - "python/sglang/jit_kernel/diffusion/**"
  - "python/sglang/jit_kernel/tests/diffusion/**"
  - "python/sglang/jit_kernel/benchmark/diffusion/**"

test suite runner의 재귀 glob 지원

Before:

files += glob.glob(os.path.join(jit_kernel_dir, "tests", "test_*.py"))

After:

files += glob.glob(
    os.path.join(jit_kernel_dir, "tests", "**", "test_*.py"), recursive=True
)

왜 이게 좋은가

  1. CI 효율성: LLM 관련 JIT 커널 변경이 더 이상 불필요한 diffusion 테스트를 트리거하지 않는다.
  2. 확장 가능한 구조: 향후 attention/, quantization/ 등 다른 도메인의 JIT 커널 테스트도 서브폴더로 분리할 수 있는 패턴을 확립했다.
  3. 기존 호환성 유지: run_suite.py의 recursive glob으로 서브폴더 내 테스트가 자동 발견된다.

정리

테스트 파일 이동과 CI 트리거 조정이라는 단순한 작업이지만, 대규모 모노레포에서 CI 비용과 개발자 경험에 직접적인 영향을 미치는 중요한 인프라 개선이다.

참고 자료


이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 코드 분석과 해석에서 오류가 있을 수 있으니, 정확한 내용은 원본 PR을 참고해주세요.

댓글

관련 포스트

PR Analysis 의 다른글