rueki
dvc 사용법 본문
https://dvc.org/doc/start/data-and-model-versioning
data versioning 할 때 사용하는 툴로써, 코드나 모델에만 버전을 매기는 것이 아니라 학습에 사용하는 데이터에 대해 버전을 매기는 툴이다.
1. 설치
pip install dvc
설치는 위 명령어만 입력하면 간단하게 설치가 된다.
2. 예시 데이터 셋 다운로드
dvc get https://github.com/iterative/dataset-registry \
get-started/data.xml -o data/data.xml
dvc에서 제공해주는 예제 파일인데 다운받아서 사용한다.
이 데이터를 이제 versioning을 어떻게 하는지 설명해준다.
3. dvc에 data 파일 올리기
dvc add data/data.xml
4. git에 add하고 commit
git add data/data.xml.dvc data/.gitignore
git commit -m "Add raw data"
5. 클라우드 저장소에 데이터 올리기
여기서는 예시로 구글드라이브로 설정했는데, 데이터가 큰 경우 아마존에 올려서 사용을 보통 한다곤 한다.
dvc remote add -d storage gdrive://"구글드라이브 폴더 맨 뒤의 ID"
dvc remote add -d storage s3://mybucket/dvcstore
구글 드라이브에 올릴 때 위의 명령줄을 입력, Amazon S3할 때는 아래 명령어를 사용한다고 한다.
6. dvc에 push하기
dvc push
7. data 를 변경해서 올려보기
cp data/data.xml /tmp/data.xml
cat /tmp/data.xml >> data/data.xml
이렇게 하면 데이터가 2배로 늘려서 변경을 하게 되었다.
dvc add data/data.xml
git commit data/data.xml.dvc -m "Dataset updates"
dvc push
git log해서 commit 했던 기록들을 보면 처음 데이터 commit 했을 때, 데이터 수정했을 때까지 기록이 남아있다.
8. 이전 버전으로 변경하기
checkout을 사용해서 변경하는데 git에서 branch 변경할 때 사용한 것과 유사
git checkout HEAD~1 data/data.xml.dvc
dvc checkout
git commit data/data.xml.dvc -m "Revert dataset updates"
9. git repo에 올리기
git remote add origin ~
git push -u origin main
이렇게 관리를 git으로 할 수 있다고 한다.
이게 가능한 이유는 데이터에 대한 메타데이터를 dvc가 생성을 해주고 checkout을 통해서 버전 이동도 가능하기때문에
원하는 데이터의 상태에 다시 가서 학습을 할 수도 있고 여러모로 편한 것 같다.