본문으로 건너뛰기

[Triton] AMD CI에 pip 캐시 디렉토리 도입 — 네트워크 장애 대응

PR 링크: triton-lang/triton#8768 상태: Merged | 변경: +5 / -0

들어가며

CI/CD 파이프라인에서 패키지 다운로드는 네트워크 상태에 의존적이다. Triton의 AMD GPU 통합 테스트는 OSSCI(Open Source CI) 인프라에서 실행되는데, 간헐적인 네트워크 지연으로 pip install이 타임아웃되는 문제가 있었다. 이 PR은 로컬 캐시 디렉토리를 활용하여 이 문제를 해결한다.

핵심 코드 분석

Before: 캐시 없이 매번 네트워크 다운로드

# .github/workflows/integration-tests-amd.yml
# 매 CI 실행마다 pip install이 네트워크에서 직접 다운로드
- name: Install dependencies
  run: |
    pip uninstall -y triton pytorch-triton-rocm
    ccache --zero-stats
    make dev-install

After: 볼륨 마운트 + 조건부 캐시 사용

# Docker 컨테이너에 캐시 볼륨 마운트
options: >-
  --volume /triton-data:/triton-data

# gfx950 러너에서만 캐시 디렉토리 사용
- name: Install dependencies
  run: |
    pip uninstall -y triton pytorch-triton-rocm
    ccache --zero-stats
    if [ "${{ matrix.runner[0] }}" = "amd-gfx950" ]; then
      pip install --cache-dir /triton-data/pip-cache \
          -r python/requirements.txt
      pip install --cache-dir /triton-data/pip-cache \
          -r python/test-requirements.txt
    fi
    make dev-install

핵심은 두 가지다:

  1. 볼륨 마운트: /triton-data를 호스트에서 컨테이너로 마운트하여 CI 실행 간 캐시가 유지된다.
  2. 조건부 적용: 캐시가 준비된 gfx950 러너에서만 적용하여 점진적 롤아웃한다.

왜 이게 좋은가

  1. CI 안정성: 네트워크 지연에 의한 빌드 실패가 크게 줄어든다. 캐시에 패키지가 있으면 네트워크가 불안정해도 설치가 성공한다.
  2. 빌드 속도: 캐시 히트 시 다운로드 시간이 거의 0이 되어 CI 사이클이 빨라진다.
  3. 점진적 도입: gfx950에서 먼저 검증한 뒤 다른 러너로 확장할 수 있는 안전한 롤아웃 전략이다.

정리

이 PR은 AMD CI 워크플로우에 pip 캐시 볼륨을 추가하여 네트워크 의존성을 줄인다. Docker 볼륨 마운트와 조건부 캐시 적용으로 CI 안정성을 높이는 간단하고 효과적인 변경이다.

참고 자료


이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 핵심 코드와 explaination은 실제 PR diff를 기반으로 합니다.

댓글

관련 포스트

PR Analysis 의 다른글