데이터 버저닝(Data Versioning)은 ML 프로젝트에서 데이터셋과 모델의 변경 이력을 추적하는 방법이다. 코드의 Git처럼 데이터를 관리해 실험 재현성과 협업을 가능하게 한다. DVC(Data Version Control)가 사실상 표준 도구다.
DVC 핵심 개념
Git: 코드 버전 관리 (텍스트, 소스)
DVC: 데이터 버전 관리 (대용량 파일, 모델)
DVC는 Git에 데이터 포인터(.dvc 파일)를 저장하고
실제 데이터는 원격 스토리지(S3, GCS, Azure)에 저장
DVC 워크플로우
bash
# 초기 설정
git init && dvc init
# 원격 스토리지 설정
dvc remote add -d myremote s3://mybucket/dvcstore
# 데이터 추적 시작
dvc add data/train.csv
git add data/train.csv.dvc .gitignore
git commit -m "Add training data v1"
dvc push # 데이터를 S3에 업로드
# 데이터 업데이트 후
dvc add data/train.csv
git add data/train.csv.dvc
git commit -m "Update training data v2"
dvc push
# 이전 버전으로 롤백
git checkout v1-tag
dvc pull # 해당 버전 데이터 다운로드
DVC 파이프라인
yaml
# dvc.yaml
stages:
prepare:
cmd: python src/prepare.py
deps:
- data/raw.csv
- src/prepare.py
outs:
- data/prepared/
train:
cmd: python src/train.py
deps:
- data/prepared/
- src/train.py
params:
- params.yaml:
- model.n_estimators
outs:
- models/model.pkl
metrics:
- metrics/eval.json
bash
dvc repro # 변경된 단계만 재실행
dvc dag # 파이프라인 시각화
dvc metrics show # 실험 결과 비교
관련 개념