본문 바로가기
C.W.K.
Stream
Lesson 06 of 12 · published

대용량 파일 처리

~10 min · lfs, large-files, s3

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

모델 가중치는 Git에 넣지 마

4 GB짜리 모델 체크포인트를 Git에 두는 건 좋지 않아. 클론은 끝없이 걸리고, 100 MB가 넘는 단일 파일은 푸시 제한으로 거부당하지. 게다가 Git은 바이너리를 비효율적으로 저장해. 그러니 다른 대안을 써.

옵션

  • Git LFS — 파일은 별도의 LFS 저장소에 보관하고, 저장소에서는 포인터로 추적해. 첫 1 GB는 무료고 그다음부터는 저장 등급에 따라 비용이 들어.
  • Hugging Face Hub — 모델 가중치 전용이야. 퍼블릭은 무료고 대용량 프라이빗은 유료야. 대부분의 머신러닝 파이프라인에 기본으로 통합돼 있어.
  • 클라우드 오브젝트 스토리지 (S3, R2, GCS) — CI에서 직접 다운로드하는 단계를 만들면 돼. 규모가 커질 때 가장 저렴해.
  • DVC — 오브젝트 스토리지 위에서 Git처럼 쓸 수 있는 명령줄 도구야. 코드와 함께 데이터 버전을 추적할 수 있어.

CI에서 고려할 점

  1. 모델 가중치는 적극적으로 캐시해. 매번 실행할 때마다 4 GB 파일을 내려받는 건 낭비야.
  2. actions/cache를 쓸 때는 Git SHA가 아니라 모델 버전 기반 키를 사용해.
  3. 모델이 HF Hub에 있다면 huggingface_hub.snapshot_download를 써서 ~/.cache/huggingface 안의 로컬 캐시 경로로 내려받아. 그 경로가 바로 actions/cache의 대상이야.

Code

실행 간 HF 모델 가중치 캐시·yaml
      - name: Cache HF model
        uses: actions/cache@v4
        with:
          path: ~/.cache/huggingface
          # Key on the model name + revision, not the Git SHA
          key: hf-${{ vars.MODEL_NAME }}-${{ vars.MODEL_REVISION }}
          restore-keys: |
            hf-${{ vars.MODEL_NAME }}-

      - name: Pre-download model
        env:
          HF_TOKEN: ${{ secrets.HF_TOKEN }}
        run: |
          uv run python -c "
          from huggingface_hub import snapshot_download
          snapshot_download('${{ vars.MODEL_NAME }}', revision='${{ vars.MODEL_REVISION }}')
          "

External links

Exercise

저장소의 Git 히스토리에 대용량 파일이 있다면 어떻게 들어갔는지 감사해 봐. 사용 패턴에 따라 LFS, HF Hub, 오브젝트 스토리지로 옮기고, 새 다운로드 경로와 캐시, CI가 여전히 잘 동작하는지 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.