DVC

vernolog·2024년 6월 17일

DVC

목록 보기
1/1

DVC란

  • 데이터의 버전 관리 툴. DVC외에도 Pachyderm, Dalta Lake, Dolt 등이 있다.
  • 원본 데이터는 별도의 저장소를 통해 관리하고
  • 해당 버전의 데이터 정보가 담긴 .dvc 파일을 관리하는 것이 dvc 기반 버전 관리의 핵심

Storing and Sharing

  • DVC를 통해 관리되는 데이터나 모델을 dvc push 명령을 통해 원격 저장소에 안전하게 저장 가능
  • 다양한 종류의 원격 저장소 (Amazon S3, Google Drive, Azure Blob Storage, HDFS 등) 지원

Get Started

dvc 설치

pip install dvc # dvc 기본 설치
pip install dvc[all] # s3, google Drive, ssh 등을 dvc의 리모트 스토리지로 사용할 수 있도록 관련 패키지들을 모두 설치하게 하는 옵션

dvc -V

dvc init

# 디렉터리 생성
mkdir data
cd data

# 저장소 세팅
git init
dvc init

# 참고사항
# git init 전, dvc init 실행시 아래와 같은 에러 발생
# failed to initiate DVC - src is not tracked by any supported SCM tool (e.g. Git). Use `--no-scm` if you don't want to use any SCM or `--subdir` if initializing inside a subdirectory of a parent SCM repository.
# SCM tool 을 사용하지 않을거라면 `--no-scm`을, sub directory의 경우 '--subdir'을 설정해주기

dvc add

vim data/file.txt -> "file ver1"
dvc add data # dvc에 data 레지토리가 연동될 수 있도록 추가. .gitiignore에 자동으로 추가됨
git add .gitignore data.dvc

cat data.dvc # 생성된 파일 확인
git commit -m "add file.dvc"

dvc remote storage 설정

  • 서버에 ssh 보안키로 접속할 수 있도록, 비공개/공개키를 생성하고 공개키는 서버에 복사
  • ssh로 로컬에서 서버로 접속할 수 있는지 확인
  • dvc가 서버에 접속할 수 있도록 설정. 여러 원격 저장소를 추가할 수도 있음
    # dvc remote storage 설정
    dvc remote add -d <저장소이름> <ssh://서버주소/서버에서 저장소로 사용할 폴더 경로>
    
    dvc remote modify <저장소이름> user <서버 유저 이름> # 예시 dvc remote modify server1 user ubuntu
    dvc remote modify <저장소이름> port <포트번호> # 22
    dvc remote modify <저장소이름> keyfile <로컬에 저장된 ssl 비공개키 파일 경로>
    dvc remote modify <저장소이름> password <서버 비밀번호> # 공개키/비공개키를 이용하는 것이 아닌, password를 이용할 수도 있음
    
    # 설정 파일 확인
    cat .dvc/config # 파일 확인
    
    # 저장
    git add .dvc/config
    git commit -m "add remote storage"
    
  • s3
    pip install dvc[s3]
    
    dvc remote add -d <저장소이름> -d S3://bucket_path/directory_path
    dvc remote modify <저장소이름> endpoinurl <url:port>
    dvc remote modify <저장소이름> access_key_id <access key id>
    dvc remote modify <저장소이름> secret_access_key <secret access key>

dvc push / pull

# uploading and downloading data to and from remote storage 
dvc push / pull

dvc checkout

이전 버전으로 데이터 변경

# 데이터 업데이트
vim data/file.txt => file ver2

dvc add data

git add data.dvc
git commit -m "update file.txt"

dvc push 

# 이전 버전으로 데이터 변경
git log --oneline

git checkout <커밋번호> data.dvc

dvc checkout # checkout으로 이전 버전의 데이터로 변경됨

dvc doctor

프로젝트 정보 및 환경, dvc 버전 조회 가능

dvc get / import

# 해당 데이터 다운로드
dvc get https://github.com/iterative/example-get-started model.pkl 
# 해당 데이터뿐만 아니라, .dvc 파일도 함께 다운로드
dvc import  https://github.com/iterative/example-get-started model.pkl

dvc commit

dvc가 추적하는 파일이나 디렉토리의 변경사항을 커밋

  1. 데이터 파일을 추가하고 DVC로 추적

    echo "sample data" > data.txt
    dvc add data.txt
  2. data.txt.dvc 파일이 생성 → 이를 Git에 추가

    git add data.txt.dvc
    git commit -m "Add data.txt to DVC"
  3. data.txt 다시 수정

    echo "new sample data" > data.txt
  4. 변경된 내용 커밋

    dvc commit data.txt.dvc

dvc cache

dvc 캐시 관리

dvc cache dir # 현재 캐시 directory 조회

dvc cache dir /path/to/new/cache # 새로운 캐시 directory 설정

dvc cache gc -f # 사용되지 않는 캐시 파일 정리 

참고자료

0개의 댓글