[pydantic-ai] CI에서 uv cache prune 비활성화 및 HuggingFace 캐시 키 개선
PR 링크: pydantic/pydantic-ai#3271 상태: Merged | 변경: +6 / -3
들어가며
uv의 prune-cache 옵션은 CI 실행 후 사용하지 않는 캐시 항목을 정리합니다. 그러나 여러 test matrix가 동일한 캐시를 공유하는 환경에서는, 한 작업이 prune한 패키지를 다른 작업이 필요로 하여 캐시 미스가 발생할 수 있습니다. 이 PR은 prune을 비활성화하고, HuggingFace 모델 캐시의 키를 pyproject.toml 대신 uv.lock 기반으로 변경합니다.
핵심 코드 분석
prune-cache 비활성화
Before (ci.yml):
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
After:
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
prune-cache: false
test, lowest-versions, all-extras 세 가지 테스트 matrix에 prune-cache: false를 추가했습니다.
HuggingFace 캐시 키 변경
Before:
key: hf-${{ runner.os }}-${{ hashFiles('**/pyproject.toml') }}
After:
key: hf-${{ runner.os }}-${{ hashFiles('**/uv.lock') }}
pyproject.toml은 패키지 메타데이터가 변경되어도 HuggingFace 모델 의존성과 무관할 수 있지만, uv.lock은 실제 설치된 버전을 정확히 반영합니다.
왜 이게 좋은가
- prune 비활성화로 matrix 간 캐시 간섭이 없어지고, 캐시 적중률이 개선됩니다.
uv.lock기반 캐시 키로 의존성 변경 시에만 HuggingFace 모델이 재다운로드됩니다.
정리
- matrix CI에서는 cache prune을 주의하라: 한 작업의 prune이 다른 작업의 캐시를 무효화할 수 있습니다.
- 캐시 키는 실제 의존성 잠금 파일 기반으로 하라:
pyproject.toml보다uv.lock(또는package-lock.json)이 더 정확한 캐시 무효화를 제공합니다.
참고 자료
- pydantic/pydantic-ai#3271 — PR 전체 diff
⚠️ 알림: 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.
관련 포스트
PR Analysis 의 다른글
- 이전글 [triton] memdesc_index에서 alloc_shape 리셋으로 메모리 디스크립터 정합성 개선
- 현재글 : [pydantic-ai] CI에서 uv cache prune 비활성화 및 HuggingFace 캐시 키 개선
- 다음글 [Triton] Aggregate cache key 변경 일시 Revert
댓글