DVC (Data Version Control) 데이터셋 관리

여도·2024년 11월 12일

DVC는 data version 관리 하는 open-source version control system이다.
DVC는 터머닐에서 명령어로 동작하며 git 과 유사

1. install

  • 먼저 git 설치
sudo apt install git

  • dvc를 설치하기 전에 가상환경인 conda 설치
https://www.anaconda.com/download/success

여기에서 linux버전으로 설치후 shell 실행

이후 가상환경 만드는 과정은 생략

  • dvc 설치

❗️python3.8버전 이상

💡로컬 환경 캡슐화를 위한 가상환경 권장

-dvc 3.56.0 버전 다운로드 - dvc[all]: dvc 의 remote storage 로 s3, gs, azure, oss, ssh 모두를 사용할 수 있도록 관련 패키지를 함께 설치하는 옵션

pip install 'dvc[all]'==3.56.0

dvc --version
# 3.56.0

2. DVC 폴더 설정

  • 새로운 폴더 생성
mkdir dvc_test1
cd dvc_test1

  • 초기화
git init 
dvc init 

3. DVC 명령어

  • dvc로 tracking할 데이터 생성
    data라는 폴더를 만들고 미리 생성되어있는 csv 및 이미지 데이터를 넣었다.

  • 생성된 데이터를 dvc로 tracking
dvc add data/

  • 터미널에서 출력에서 알려준대로 원격저장소와 연결
git add .gitignore data.dvc

  • dvc add에 의해 생성된 파일 확인
cat data.dvc

  • git commit
git commit -m "add data.dvc"

  • 데이터가 실제로 저장된 remote storage를 세팅

    여기서 s3, gs, azure, oss, ssh, google drive 등 자신이 원하는 원격저장소를 선택할 수 있다
    여기서 필자는 엣지 서버의 공간(192.168.1.16)을 원격저장소로 지정
    💡ssh원격저장소 연동은 ssh key로 하기를 추천

dvc remote add -d {storagename} ssh://{your/ip/path}/{your/dir/path}
dvc remote modify {storagename} user {user name}
dvc remote modify {storagename} port {port number}

dvc remote modify {storagename} keyfile {private key}
# private key: 원격 저장소 연결을 위한 ssh private key 파일 경로 작성
or 
dvc remote modify --local  test1_data password ****

example

dvc remote add -d test1_data ssh://192.168.1.16/home/gractor/mlops/data1
dvc remote modify test1_data user gractor
dvc remote modify test1_data port 22
dvc remote modify --local  test1_data password ****

  • remote add로 자동생성된 config 파일 확인
cat .dvc/config

  • dvc config를 git commit
git add .dvc/config
git commit -m "add remote storage config"

  • dvc push
dvc push

데이터를 원격저장소에 업로드
전송이 완료된 원격저장소에 알수없는 이름의 폴더 생성

  • dvc 데이터 가져오기
# dvc 캐시를 삭제합니다.
rm -rf .dvc/cache/
# dvc push 했던 데이터를 삭제합니다.
rm -rf data

dvc pull

  • dvc 데이터 이전버전으로 돌리기
#새로운 이미지 artifact.png 추가
dvc status
#추가된 새로운 이미지 추가 및 push
dvc add data
git add data.dvc
git commit -m 'update data'
dvc push
# git의 commit 정보 확인
git log --oneline

# data.dvc 파일을 이전 commit 버전으로 되돌림
git checkout <COMMIT_HASH> data.dvc

# data.dvc 의 내용을 보고 data 폴더를 이전 commit 버전으로 변경
dvc checkout

# 데이터가 변경되었는지 확인
ls data

❗️주의할 점은 데이터 버전 변경을 git commit의 COMMIT_HASH 값으로 변경하기 때문에 data.dvc 파일을 commit 할때 신중하게 작성해야 한다.


  • github
    github에 코드와 dvc config를 올려놓으면 git clone만으로 데이터를 쉽게 가져 올수 있다.
git remote add origin https://github.com/Yeodohoon/dvc_test.git
git branch -M main
git push -u origin main

❗️주의할점 git clone 으로 하여도 dvc remote modify --local한 파일은 없기 때문에 ssh 비밀번호 혹은 ssh keyfile path를 따로 설정해줘야한다

참고자료
https://dvc.org/
https://visionhong.github.io/tools/DVC-with-Docker/
https://discuss.dvc.org/t/how-do-i-use-dvc-with-ssh-remote/279/2
https://velog.io/@jkseo50/DVC-%EA%B0%9C%EB%85%90-%EB%B0%8F-%ED%99%9C%EC%9A%A9-%EB%B0%A9%EB%B2%95

profile
안녕하세요

0개의 댓글