데이터 전처리: 도구 및 방법 – DVC
ㅁ 도구 및 방법
ㅇ 정의:
데이터 버전 관리(Data Version Control, DVC)는 머신러닝 프로젝트에서 데이터셋, 모델, 파이프라인 등의 버전을 효율적으로 추적하고 관리하는 오픈소스 도구이다. Git과 연동하여 대용량 데이터 파일을 외부 스토리지에 저장하고, 메타데이터만 Git에 기록한다.
ㅇ 특징:
– Git과 유사한 CLI(Command Line Interface) 사용
– 대용량 파일은 원격 스토리지(AWS S3, Google Drive, Azure Blob 등)에 저장
– 데이터, 모델, 실험 재현성을 보장
– 파이프라인 정의 및 캐싱 기능 제공
ㅇ 적합한 경우:
– 머신러닝/딥러닝 프로젝트에서 데이터셋 버전 관리가 필요한 경우
– 팀 단위로 데이터와 모델을 공유하고 협업해야 하는 경우
– 실험 재현성과 데이터 추적이 중요한 경우
ㅇ 시험 함정:
– DVC 자체가 데이터를 Git에 직접 저장하는 것은 아님 (메타데이터만 Git에 저장)
– DVC는 Git을 대체하는 것이 아니라 보완하는 도구임
– DVC는 데이터베이스 버전 관리 도구가 아님
ㅇ 시험 대비 “패턴 보기” 예시:
– O: “DVC는 머신러닝 프로젝트에서 데이터와 모델의 버전을 관리하며, 대용량 데이터는 원격 스토리지에 저장한다.”
– X: “DVC는 모든 데이터를 Git 저장소에 직접 저장한다.”
ㅁ 추가 학습 내용
DVC 주요 명령어와 개념 정리
1. 주요 명령어
– dvc init : 현재 프로젝트에 DVC 초기화, .dvc 디렉토리 생성
– dvc add : 데이터 파일이나 디렉토리를 DVC로 추적, .dvc 파일 생성
– dvc push : 로컬 캐시의 데이터를 원격 스토리지로 업로드
– dvc pull : 원격 스토리지에서 필요한 데이터를 로컬로 가져옴
– dvc repro : dvc.yaml에 정의된 파이프라인을 재실행, 변경된 단계만 실행
2. 주요 파일 역할
– .dvc 파일 : 개별 데이터 파일 추적 정보 저장 (파일 경로, 해시값 등)
– dvc.yaml : 파이프라인 정의 파일, 단계별 명령어, 입력/출력, 의존성 관리
3. 캐싱 메커니즘
– 데이터 파일은 해시 기반으로 로컬 캐시에 저장
– 동일한 파일은 중복 저장하지 않고 해시값으로 관리
– Git에는 실제 데이터가 아닌 메타데이터(.dvc, dvc.yaml)만 저장
4. 원격 스토리지 설정
– dvc remote add 명령으로 원격 스토리지 추가
– s3, gcs, azure, ssh 등 다양한 스토리지 지원
– dvc push, dvc pull로 원격과 로컬 간 데이터 동기화
5. Git과의 연계
– DVC는 데이터 버전 관리, Git은 코드와 메타데이터 버전 관리
– 실제 데이터 파일은 Git에 저장하지 않고 DVC가 관리
– DVC는 Git과 함께 사용하는 것이 일반적이며, Git 없이도 동작 가능하지만 버전 관리 기능은 제한됨
6. 유사 도구와 비교
– MLflow : 주로 실험 관리, 모델 추적에 집중, 데이터 버전 관리는 부가 기능
– Pachyderm : 데이터 파이프라인과 버전 관리 통합, 컨테이너 기반 실행 환경
– DVC : Git 기반 데이터 버전 관리와 파이프라인 관리에 최적화