DVC는 data version 관리 하는 open-source version control system이다.
DVC는 터머닐에서 명령어로 동작하며 git 과 유사
1. install
sudo apt install git
https://www.anaconda.com/download/success
여기에서 linux버전으로 설치후 shell 실행
이후 가상환경 만드는 과정은 생략
❗️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 add data/
git add .gitignore data.dvc
cat data.dvc
git commit -m "add data.dvc"
여기서 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 ****
cat .dvc/config
git add .dvc/config
git commit -m "add remote storage config"
dvc push
데이터를 원격저장소에 업로드
전송이 완료된 원격저장소에 알수없는 이름의 폴더 생성
# dvc 캐시를 삭제합니다.
rm -rf .dvc/cache/
# dvc push 했던 데이터를 삭제합니다.
rm -rf data
dvc pull
#새로운 이미지 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 할때 신중하게 작성해야 한다.
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