본문 바로가기

AI

DVC : Data Version Control



DVC의 사용 목적과 방법에 대해 정리해보고자 한다.

DVC란?

머신러닝 모델을 사용하는 과정에서, 담겨지는 데이터나 이용하는 모델이 지속적으로 바뀌는데, 

이에 대한 버전관리를 도와주는 도구로 "데이터를 위한 Git" 이라고 생각하면 이해하기 쉽다.

 

DVC의 작동 방식 

DVC의 작동 방식

 

Local Cache를 두어, 데이터 중복 방지 및 빠른 데이터 접근을 제공 (해시 기반 관리)

 

Local Workspace와 Local cache에 중복으로 데이터를 저장하는것을 방지하고자,

작업공간의 캐시된 데이터에 대해 파일 링크를 생성. reflink(Copy-on-Write),  hardlink, symlink 中 1

세 가지 모두 해당 파일 시스템에서 지원하지 않는다면 copy(직접 복사)의 방식을 사용하여 캐시에 저장



메타데이터를 .dvc 형식으로 저장
=> Git 추적을 목적으로 원본 데이터의
     플레이스 홀더 역할을 수행.

     해당 .dvc 파일들을 Git을 통해 버전 관리.

 

실제 data는 Remote Data Storage에 저장 및 다운로드  

 

*지원하는 원격 저장소 

  • Amazon S3
  • Google Drive, GCP(Google Cloud Storage)
  • Microsoft Azure Blob Storage
  • SSH, HDFS, HTTP... etc

 

VS Code Extension으로도 설치하여 사용할 수 있으며, (2024.8.12 기준) 실험 추적 및 데이터 관리 기능을 지원한다.

추후 데이터 파이프라인등 더 많은 기능을 지원할 예정이라고 한다.

 

사용방법

*설치 과정은 따로 다루지 않겠습니다. 공식 홈페이지를 참조하길 바랍니다.

 

전반적으로 git과 유사한 면이 많기에 이전에 git을 사용해본 사람들이라면 금방 적응할 수 있을 것이다.

 

# 프로젝트 디렉토리 생성 및 이동
mkdir my_project
cd my_project

git init # Git 초기화
dvc init # DVC 초기화

# DVC 설정 파일을 Git에 추가하고 커밋
git add .dvc .gitignore
git commit -m "Initialize DVC and Git"

# 데이터 파일을 프로젝트에 추가
mkdir data
echo "Sample data content" > data/data.txt

# DVC로 데이터 파일 추적
dvc add data/data.txt

# .dvc 파일과 .gitignore 파일을 Git에 추가하고 커밋
git add data/data.txt.dvc .gitignore
git commit -m "Add data.txt and track it with DVC"

# DVC 원격 저장소 설정 (예: AWS S3) - 인증 필요 
dvc remote add -d myremote s3://mybucket/my_project

# 원격 저장소에 데이터 푸시
dvc push

# 원격 저장소 설정 파일을 Git에 커밋
git add .dvc/config
git commit -m "Configure remote storage and push data"

# DVC 데이터 복원
dvc pull

# 변경 사항 확인
dvc status

저는 GCP를 원격 저장소로 사용하였습니다. 스토리지 버킷 생성 후 진행하시기 바랍니다.

(혹시 안된다면, API 및 OAuth, 권한 설정을 추가로 해보시기 바랍니다.)

 

*dvc  add시 경로명에 띄어쓰기가 있으면 인식이 안됩니다.


dvc push 실행 화면

 

 

 

dvc ls .

현재 추적중인 파일들에 대해
파란색으로 표시

 

dvc dag

파이프라인에 대한
종속성 그래프 시각화 지원

 

 

 

 

 

명령어 필요 인자 및 옵션 기능
dvc init --subdir : 서브디렉토리에서 초기화
--no-scm : Git 없이 초기화
현재 위치를 DVC프로젝트로 초기화,
.dvc/ 폴더를 생성
dvc add  <file or directory> : 추가할 파일 또는 경로 데이터를 DVC로 추적하기 시작
dvc remote add <name> <url> : 원격 저장소 추가
remove <name> : 원격 저장소 제거
modify <name> : 원격 저장소 설정 수정
원격 저장소 추가, 설정, 제거
dvc push -r <remote> : 특정 원격 저장소 지정 로컬 캐시에 있는 데이터를
원격 저장소로 업로드
dvc status -c, --cloud : 원격 저장소와 비교 DVC 데이터 상태를 확인하고,
변경 사항을 보여줌
dvc dag -o, --outs : 출력만 시각화
--ascii : ASCII 형식으로 출력
파이프라인을 DAG형식으로 시각화
dvc pull -r : 특정 원격 저장소에서 가져오기 원격 저장소에서 데이터를 가져와
로컬 캐시에 다운로드 및 복원
dvc diff --targets <path> : 특정 경로의 확인
--cached : 캐시된 것과 비교
데이터 변경 사항을 커밋 간 비교
dvc checkout -f, --force : 강제 체크아웃 파일을 최신 상태로 체크아웃하여 작업 디렉토리에 복원

 

dvc에 관한 명령어들만 정리해두었는데, git 명령어와 항상 함께 사용하며 버전관리 해야함을 유념해야합니다.

git log  를 통해서도 데이터의 변경 기록을 손쉽게 볼 수 있습니다.

 

 

VS Code환경에서 진행하였는데, 추후 local 환경에서의 dvc pipeline관리에 대해서도 다루어보겠습니다.


 

Data Version Control · DVC

Open-source version control system for Data Science and Machine Learning projects. Git-like experience to organize your data, models, and experiments.

dvc.org

 

'AI' 카테고리의 다른 글

Pytorch를 통한 주가 분석 (LSTM, GRU)  (0) 2024.08.20
Google Colab 단축키 모음  (0) 2024.08.14
RNN, LSTM, GRU, Transformer model  (0) 2024.08.14