[pytorch] CI: TIMM pretrained 모델을 공유 HF 캐시에 캐싱하여 CI 속도 개선
PR 링크: pytorch/pytorch#174581 상태: Merged | 변경: +11 / -0
들어가며
PyTorch의 Inductor 벤치마크에서 TIMM(Torch Image Models) 모델을 사용할 때, 매번 HuggingFace Hub에서 모델을 다운로드하면 CI 시간과 네트워크 비용이 증가합니다. 이 PR은 TIMM 모델이 공유 HF 캐시에 이미 존재하는지 확인하고, 없을 때만 온라인 모드를 활성화하는 간단한 로직을 추가합니다.
핵심 코드 분석
_linux-test.yml에 캐시 탐지 로직 추가
# If TIMM pretrained model weights haven't been cached yet, enable
# online mode so they can be downloaded and cached for future runs.
# TIMM uses huggingface_hub which stores models under hub/models--timm--*.
if [[ "${TEST_CONFIG}" == *timm* ]] && ! ls "${HF_CACHE}"/hub/models--timm--* &>/dev/null; then
export TRANSFORMERS_OFFLINE=0
export HF_DATASETS_OFFLINE=0
fi
PyTorch CI는 기본적으로 TRANSFORMERS_OFFLINE=1로 설정하여 HuggingFace 접근을 차단합니다. 이 코드는 TIMM 테스트 시 캐시 디렉토리에 models--timm--* 패턴의 디렉토리가 없으면 온라인 모드를 활성화하여 다운로드를 허용합니다. 한 번 캐싱되면 이후 CI 실행에서는 오프라인 모드로 동작합니다.
또한 .github/labeler.yml에 timm 관련 파일 변경 시 ci-refresh-hf-cache 라벨을 자동 부여하도록 추가되었습니다.
"ci-refresh-hf-cache":
- .github/ci_commit_pins/vllm.txt
+- .ci/docker/ci_commit_pins/huggingface-requirements.txt
+- .ci/docker/ci_commit_pins/timm.txt
왜 이게 좋은가
이 접근의 장점은 보수적인 캐시 전략입니다. 캐시가 있으면 오프라인 모드를 유지하고, 없을 때만 다운로드합니다. 이는 캐시 무효화나 동시성 문제를 최소화합니다. 또한 ls ... &>/dev/null로 캐시 존재를 확인하는 방식은 추가 의존성 없이 셸 스크립트만으로 구현 가능합니다.
참고: 이 PR은 이후 PR #175095에서 revert되었으며, 더 안정적인 캐싱 방식으로 재구현될 예정입니다.
정리
- TIMM 벤치마크 실행 시 HF 캐시 존재 여부에 따라 온라인/오프라인 모드 자동 전환
models--timm--*패턴으로 huggingface_hub 캐시 디렉토리 탐지- GitHub labeler에 timm pin 파일 변경 감지 추가
참고 자료
⚠️ 알림: 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.
관련 포스트
PR Analysis 의 다른글
- 이전글 [Ray Serve] ClusterNodeInfoCache 정렬 버그 수정 및 중복 GCS RPC 제거로 캐시 갱신 최적화
- 현재글 : [pytorch] CI: TIMM pretrained 모델을 공유 HF 캐시에 캐싱하여 CI 속도 개선
- 다음글 [triton] FPSan에서 Warp Specialization + TMem 사용 시 크래시 수정
댓글