DVC & git lfs?
- git lfs (large file storage)
- 100MB 이상 파일은 Git LFS를 이용해 GitHub Repository에 저장할 수 있음
- 중소형 데이터는 Git LFS를 이용하는 것을 추천
- 2GB가 넘어가는 대용량 데이터의 경우 data quota 넘어감..
- 깃헙에서 제공하는 lfs 서버는 데이터 사이즈 제약이 심해서 자체 lfs 서버 운영 필요
- dvc (data version control)
- 모델과 데이터 등의 버전 관리를 위한 오픈 소스
- DVC는 데이터를 추적하는 데에 사용할 메타 데이터와 설정 파일을 생성하고, DVC에 의해 생성된 파일을 git이 추적하여 버전 관리를 진행
- dvc 의 경우 data 를 저장할 storage 만 설정해주면 됨, remote storage 내 위치를 메타파일에 저장
마침 사용 가능한 aws s3 서버도 있고, 관리할 파일 사이즈가 커서 dvc를 사용해보았습니다
DVC 사용해보기
brew install dvc
# pip install dvc
dvc 설치
dvc init
dvc 초기 환경 설정
dvc remote add -d storage s3://gaze-3d/
git add .dvc/config
git commit -m "add: dvc initial setting"
dvc 원격 저장소 연결
dvc add ./models
dvc add ./yolox
# and more?
관리할 폴더 및 파일 추적
git rm -r --cached 'sync/CAM1'
git commit -m "stop tracking sync/CAM1"
dvc add sync/CAM1
만약 git에 의해 이미 tracking되고 있는 폴더/파일이라면 remove it from git and add to dvc
이러면 잘 add 됩니다. 각각의 폴더에 대한 .dvc 파일이 생성될겁니다
dvc push
dvc 데이터를 s3 원격 저장소로 푸시
git add ./models.dvc ./yolox.dvc ./sync/CAM*.dvc
git commit -m "add: dvc tracking files"
각 폴더에 생성된 .dvc 파일 (특정 파일/디렉터리 추적하는 메타데이터 정보)을 git commit 하여 추적
연결된 원격 저장소에 files/md5/ 폴더 아래 파일들이 저장됨
dvc는 파일 추적 시 해시값(md5 hash) 사용해 파일 고유하게 식별하고 관리
생성된 폴더 이름들(01/, 02/ ~ )은 파일 해시 값의 앞부분을 기준으로 생성된 폴더 (빠른 file traverse를 위해)
그럼 dvc로 관리되는 대용량 파일들을 레포에 가져오고 싶으면?
dvc pull
project root 에서 위 커맨드 실행하면
이렇게 쫙 가져와집니다.
만약 dvc로 관리되는 폴더에 내용을 추가하고 싶다! 이러면
dvc add sync/CAM1
dvc push
git add sync/CAM1.dvc
git commit -m "add: CAM1 dataset"
'etc' 카테고리의 다른 글
pre-commit 이란? (0) | 2024.08.29 |
---|---|
git commit 관련 조작하기 (feat. lazygit) (0) | 2024.08.29 |
rsync로 원격 서버에 파일 빨리 올리기 (0) | 2024.08.29 |
과거 실수들을 묻어버리자 - bfg repo cleaner (0) | 2024.08.29 |
PyTorch와 PyTorch Lightning (0) | 2024.08.29 |