본문으로 건너뛰기

[pytorch] CI: Inductor 벤치마크 CI 작업을 CUDA 12.8에서 13.0으로 통합 전환

PR 링크: pytorch/pytorch#175955 상태: Merged | 변경: +34 / -321

들어가며

대규모 오픈소스 프로젝트의 CI 파이프라인은 버전 전환 시 과도기적으로 이중 빌드를 유지하게 됩니다. PyTorch는 CUDA 12.8에서 13.0으로 전환하면서 Inductor 벤치마크를 두 버전 모두에서 실행하고 있었습니다. 이 PR은 CUDA 13.0이 충분히 안정화되었다고 판단하여, 12.8 빌드를 완전히 제거하고 13.0으로 단일화한 작업입니다. 결과적으로 321줄을 삭제하고 CI 실행 시간과 비용을 절반으로 줄였습니다.

핵심 코드 분석

1. Docker 빌드 설정에서 CUDA 12.8 제거

Before:

docker-image-name: [
  pytorch-linux-jammy-cuda12.8-cudnn9-py3-gcc11-inductor-benchmarks,
  pytorch-linux-jammy-cuda13.0-cudnn9-py3-gcc11-inductor-benchmarks,
]

After:

docker-image-name: [
  pytorch-linux-jammy-cuda13.0-cudnn9-py3-gcc11-inductor-benchmarks,
]

2. 이중 빌드/테스트 작업을 단일로 통합

inductor-micro-benchmark.yml에서 기존에 build + test(CUDA 12.8)와 build-cuda13 + test-cuda13(CUDA 13.0)로 분리되어 있던 4개의 job이 build + test 2개로 통합되었습니다.

Before:

build:
  name: cuda12.8-py3.10-gcc11-sm80
  # ...
test:
  name: cuda12.8-py3.10-gcc11-sm80
  # ...
build-cuda13:
  name: cuda13.0-py3.10-gcc11-sm80
  # ...
test-cuda13:
  name: cuda13.0-py3.10-gcc11-sm80
  # ...

After:

build:
  name: cuda13.0-py3.10-gcc11-sm80
  # ...
test:
  name: cuda13.0-py3.10-gcc11-sm80
  # ...

동일한 패턴이 inductor-perf-compare.ymlinductor-perf-test-b200.yml에서도 적용되었습니다.

왜 이게 좋은가

PyTorch의 CI는 수백 대의 GPU 인스턴스(주로 A100)에서 실행됩니다. CUDA 12.8 벤치마크 제거는 단순히 YAML 파일 정리가 아니라, A100 GPU 시간의 실질적인 절감을 의미합니다. 각 벤치마크 작업이 720분 타임아웃으로 설정되어 있으므로, 이중 빌드 제거로 인한 비용 절감 효과가 상당합니다. 또한 단일 CUDA 버전으로 통합하면 벤치마크 결과의 비교 기준이 명확해져, 성능 회귀 탐지의 신뢰도도 높아집니다.

정리

  • CUDA 12.8 Inductor 벤치마크 Docker 이미지 정의 제거
  • 3개 워크플로우에서 이중 빌드/테스트를 CUDA 13.0 단일로 통합
  • 321줄 삭제, CI 리소스 사용량 약 50% 절감

참고 자료

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

댓글

관련 포스트

PR Analysis 의 다른글