DVC

데이터 버전 관리(Data Version Control, DVC)는 기계 학습(Machine Learning, ML) 프로젝트에 특화된 오픈 소스 버전 관리 시스템이다. 소프트웨어 공학의 표준 도구인 Git의철학과 구조를 차용하여, 코드뿐만 아니라 대용량 데이터셋, 기계 학습 모델, 실험 파이프라인의 이력을 체계적으로 추적하고 관리한다.

  1. 핵심 개념 및 작동 원리 Git은 텍스트 기반의 소스 코드를 관리하는 데 최적화되어 있으나, 기계 학습에 필수적인 수백 기가바이트(GB) 규모의 이미지, 오디오 파일, 혹은 신경망 모델 가중치(Weights) 파일 등 대용량 바이너리 파일을 직접 관리하는 데 구조적 한계와 성능 저하를 노출한다. DVC는 이 문제를 해결하기 위해 데이터 층과 코드 층을 분리한다. 실제 대용량 데이터와 모델 파일은 Amazon S3, Google Cloud Storage, Azure Blob Storage 또는 로컬 NAS와 같은 외부 스토리지(Remote Storage)에 저장한다. DVC는 이 원본 파일의 해시(Hash) 값과 경로 정보만을 담은 가벼운 메타데이터 텍스트 파일( .dvc 파일)을 생성하며, 개발자는 이 .dvc 파일만을 Git 리포지토리에 커밋(Commit)하여 코드와 데이터의 버전을 동기화한다.

  2. 데이터 및 코드 버전 관리 시스템 비교 기존 소프트웨어 개발 영역과 기계 학습 영역에서 사용되는 주요 버전 관리 도구 간의 기술적 특성을 비교한 데이터는 다음과 같다.

비교 항목GitGit LFS (Large File Storage)DVC (Data Version Control)
주요 목적소스 코드 이력 추적 및 관리Git의 대용량 바이너리 파일 처리 성능 보완ML 데이터셋, 기계 학습 모델, 파이프라인 버전 통합 관리
스토리지 의존성호스트 Git 리포지토리 종속별도의 전용 LFS 스토리지 서버 요구AWS S3, GCS, SSH, HDFS 등 범용 클라우드 및 온프레미스 스토리지 연동 가능
구조적 작동 방식파일의 전체 스냅샷 및 델타 압축 저장특정 확장자를 텍스트 포인터로 대체하고 원본은 LFS 서버에 저장원본 데이터를 분리 저장하고 모델링 정보를 담은 .dvc 메타데이터 파일을 Git으로 관리
ML/엔지니어링 기능파이프라인, 데이터 종속성 기능 없음단순 대용량 데이터 저장 및 가져오기에 국한됨DAG(방향성 비순환 그래프) 기반 파이프라인 설정 및 조건부 실행 지원
재현성 (Reproducibility)코드 환경 및 버전에 국한특정 시점의 대용량 파일 복원에 한정코드, 파라미터(Parameters), 데이터의 정확한 결합 상태 추적 및 재현 보장
  1. 주요 기능 및 실무적 효용
  • 완벽한 재현성(Reproducibility) 확보: MLOps(기계 학습 운영) 환경에서 DVC는 코드베이스와 특정 시점의 데이터 셋을 정확히 일치시킨다. 팀 내 다른 데이터 과학자가 과거 실험 상태로 체크아웃(Checkout)하면, 당시 사용된 코드와 데이터가 오차 없이 복원된다.
  • 파이프라인 추적 및 최적화: DVC는 데이터 전처리, 특징 추출(Feature extraction), 모델 학습, 평가로 이어지는 단계를 dvc.yaml 파일에 통제된 DAG 형태로 정의한다. 코드나 데이터의 일부가 변경되어 파이프라인을 재실행할 때, DVC는 변경사항의 영향을 받는 단계만 계산하여 선택적으로 처리하므로 컴퓨팅 자원과 시간 낭비를 최소화한다.

출처 및 참고문헌(Sources)

  • Iterative. “Data Version Control - Documentation.” Retrieved from https://dvc.org/doc
  • Treveil, M., et al. (2020). Introducing MLOps: How to Scale Machine Learning in the Enterprise. O’Reilly Media.
  • Gift, N., & Deza, A. (2021). Practical MLOps. O’Reilly Media.

Entities

추가 기록 (2026-06-25T15:09:08Z)

MLOps 파일 관리 및 버전 제어 도구 비교 (MLflow 포함)

머신러닝 라이프사이클에서 대용량 에셋 관리에 자주 사용되는 유사한 목적의 도구들과 DVC의 아키텍처 및 역할 비교는 다음과 같다.

도구명핵심 설계 목적파일 저장 및 종속성모델 및 데이터 출처(Lineage) / 파이프라인 관리
Git LFS (Large File Storage)범용 소프트웨어 개발 시 발생하는 대용량 바이너리 파일 트래킹 고도화중앙 Git 서버(GitHub, GitLab 등)의 LFS 전용 스토리지에 강하게 종속됨지원하지 않음. 단순 파일 버전 관리만 수행
DVC (Data Version Control)머신러닝 데이터셋 및 훈련 모델 버전 관리, 분산된 팀 간의 실험 인프라 공유AWS, GCP, Azure 등 벤더 중립적 클라우드 객체 스토리지나 로컬 서버에 유연하게 저장 가능DAG 기반 파이프라인 구성 및 입력-출력 데이터 간 상관관계 완벽 추적
MLflow (Model Registry)모델 학습 파라미터 로깅, 메트릭 추적 시각화 및 최종 훈련 모델 팩키징 관리데이터베이스(메타데이터) 및 외부 아티팩트 스토리지(S3 등)를 구성하여 사용훈련된 산출물과 파라미터 기록에 집중하며, 수 GB 단위의 원시(Raw) 데이터셋 자체를 Git과 연동하는 기능은 없음

Entities

DVC and Amazon S3 Integration

DVC와 Amazon S3를 결합하여 운용하는 것은 완벽히 가능하며, 실제 데이터 과학 및 MLOps 프로덕션 환경에서 가장 권장되고 널리 사용되는 표준 아키텍처다.

S3는 DVC의 ‘원격 스토리지(Remote Storage)’ 파트로 기능한다. 대형 데이터셋이나 학습 모델 가중치 파일 등은 S3 버킷에 물리적으로 저장되고, 해당 파일들의 해시값(MD5)이 기록된 경량 메타데이터 파일(.dvc)만이 로컬 개발 환경의 Git 리포지토리에 커밋되어 관리된다.

결합 운용 시 구성 요소 역할 비교 DVC, Git, S3가 결합된 워크플로우에서 각 시스템이 담당하는 역할과 저장 대상은 다음과 같이 분리된다.

시스템주 저장 대상핵심 역할 및 기능시스템 간의 관계
Git파이썬 스크립트 등 소스 코드 시스템 설정 파일, DVC 메타데이터(.dvc, dvc.lock)프로젝트의 전반적인 히스토리 기록 및 브랜치 기반 버전 제어DVC가 생성한 메타데이터를 추적하여 특정 시점의 데이터 상태를 코드로 매핑함
S3수 GB 이상의 원시 데이터, 이미지/텍스트 코퍼스, 사전 학습된 모델, 체크포인트 파일 등무제한에 가까운 용량을 제공하는 클라우드 객체 스토리지, 분산된 팀원 간의 파일 공유 백엔드DVC 클라이언트로부터 데이터를 수신하고 보관하는 원격 저장 공간
DVC(데이터를 직접 보관하지 않는 중개자 프레임워크)데이터 종속성 그래프 생성, S3 리소스와 로컬 파일 시스템 간의 캐시(Cache) 업로드 및 다운로드 연산 수행Git의 버전 정보와 S3의 물리적 파일을 연결하고 동기화(Push/Pull) 명령을 수행함

기본 설정 및 운용 흐름 해당 아키텍처를 운용하기 위해 요구되는 기본적인 CLI 명령 프로토콜은 다음과 같다.

  1. DVC 원격 저장소 추가: DVC 환경 설정 파일에 S3 버킷 경로를 원격 저장소명(예: myremote)으로 등록하고 기본값으로 설정한다. (AWS 자격 증명 환경 변수나 AWS CLI 프로필이 사전에 구성되어야 한다.) dvc remote add -d myremote s3://my-bucket/dvcstore
  2. 데이터 추적: 모델 훈련에 필요한 대용량 디렉토리나 파일을 DVC에 추가한다. 이 과정에서 로컬 캐시가 생성되고 메타데이터가 만들어진다. dvc add data/
  3. 데이터 동기화 (S3 업로드): 추적된 데이터를 등록한 S3 버킷으로 전송한다. dvc push
  4. 메타데이터 버전 제어: 생성된 메타데이터를 Git으로 관리하여 소스코드와 데이터의 버전을 결속시킨다. git add data/.dvc git commit -m "Add raw dataset and sync with S3"

이러한 구조를 통해 개발자는 git pulldvc pull 명령을 연속으로 실행하는 것만으로, 다른 팀원이 S3에 업로드한 특정 버전의 대규모 데이터셋을 정확하게 본인의 로컬 환경으로 복제할 수 있다.

출처

  1. Iterative. “Amazon S3 - DVC Documentation”. dvc.org. (원격 스토리지 설정에 관한 문서).
  2. AWS Machine Learning Blog. “Building an MLOps pipeline using Amazon SageMaker, DVC, and Amazon S3”. aws.amazon.com/blogs/machine-learning. (AWS 인프라와 DVC를 결합한 참조 아키텍처).

Entities