학습용 모델 가중치 파일(.pt, 한 180MB)을 실수로 커밋했다가 push 하니 원격(github)에서 거부됩니다. GH001 exceeds file size limit 어쩌고 하면서요.
이미 커밋은 로컬에만 있고 push는 안 된 상태입니다. git lfs 를 설치하고 track 하면 될 것 같아서 git lfs install 하고 git lfs track "*.pt" 한 다음 다시 커밋했는데 여전히 같은 에러로 push가 막힙니다.
remote: error: File model/last.pt is 183.20 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected.
error: failed to push some refs to 'github.com:me/proj.git'track은 분명히 했는데 왜 아직도 일반 파일로 인식되는 걸까요? .gitattributes 에도 *.pt filter=lfs 라고 들어가 있는 걸 확인했습니다.
댓글 3
아직 push를 안 했으니 제일 깔끔한 건 히스토리의 그 blob 자체를 LFS로 마이그레이션 하는 겁니다. git lfs migrate import --include="*.pt" --everything 하면 기존 커밋들의 .pt를 전부 LFS 포인터로 다시 씁니다(히스토리 재작성). 그 다음 push 하면 통과해요.
하기 전에 git lfs migrate info --everything 로 어떤 파일이 얼마나 잡히는지 먼저 확인하시고요. import는 커밋 해시를 바꾸니 혼자 쓰는 브랜치일 때 편하게 하세요. 아니면 애초에 모델 가중치를 git에 안 넣고 릴리스 아티팩트나 별도 스토리지에 두는 게 나은 경우가 많습니다.
쿼터는 실제로 신경 써야 합니다. github 기본 무료 LFS는 스토리지랑 월 대역폭이 각각 1GB로 꽤 빡빡해요. 모델 가중치를 여러 버전 커밋하면 스토리지가 금방 차고, 대역폭은 clone/pull 할 때마다 깎여서 CI가 매번 checkout 하면 순식간에 소진됩니다. 다 쓰면 그 달엔 pull 자체가 막혀요.
그래서 솔직히 수백 MB 모델 여러 버전엔 LFS가 잘 안 맞습니다. LFS는 수십 MB급 에셋(이미지, 폰트 같은)에 어울리고, 큰 가중치는 릴리스 에셋이나 S3 같은 외부 스토리지에 두고 스크립트로 받아오는 구조를 권합니다. 지금은 급한 대로 넘어가되 구조는 다시 고민해보세요.