DVC 데이터 버전 관리

DVC 데이터 버전 관리 (Data Versioning)

큰 데이터셋을 Git에 그냥 넣으면 저장소가 금방 비대해지고, 파일 하나 바뀔 때마다 전체 사본이 커밋돼요. DVC의 데이터 버전 관리는 이걸 우아하게 해결해요. 실제 데이터는 Git 대신 .dvc/cache와 원격 스토리지에 두고, Git에는 변경 사실만 담은 작은 메타데이터 파일만 남겨서 데이터·모델 버전을 코드와 함께 추적할 수 있게 해 주죠.

출처: Get Started: Data Versioning

데이터 추가와 .dvc 파일

dvc add로 데이터 파일을 추적하면 DVC가 해당 파일에 대한 정보를 .dvc 파일(data/data.xml.dvc)에 저장해요. 이 작고 사람이 읽을 수 있는 메타데이터 파일이 Git 추적을 위한 원본 데이터의 자리표시자가 돼요.

$ dvc add data/data.xml
$ git add data/data.xml.dvc
$ git commit -m "add data"

저장소를 데이터 레지스트리처럼

dvc get은 Git 저장소를 "데이터 레지스트리"로 바꿔 줘요. DVC 저장소에 추적된 파일·디렉터리는 어디서든 내려받을 수 있죠.

$ dvc get https://github.com/treeverse/dataset-registry \
          get-started/data.xml -o data/data.xml

버전 전환

데이터의 새 버전을 만들고 Git에 커밋한 뒤, 예전 상태로 되돌아가고 싶을 때는 Git 태그나 커밋의 워크스페이스로 체크아웃하면 돼요.

$ git checkout v1.0 && dvc checkout
$ git checkout v2.0 && dvc checkout

dvc checkout.dvc 파일에 기록된 캐시 내용을 워크스페이스로 복원해요. 이렇게 하면 100GB급 파일도 1초도 안 되는 시간에 다른 버전으로 바꿀 수 있어요. git checkout과 함께 쓰면 코드·데이터·모델을 하나의 커밋으로 묶어 재현 가능하게 관리할 수 있죠.

변경 업데이트

데이터가 바뀌었을 때는 dvc add를 다시 실행해 .dvc 파일의 체크섬을 갱신하고, 그 변경을 Git으로 커밋하면 새로운 버전이 기록돼요.

더 알아보기