JD의 블로그

[오픈소스] DVC - (1) Data Management 본문

머신러닝-딥러닝

[오픈소스] DVC - (1) Data Management

GDong 2019. 11. 14. 10:21

DVC의 메인 기능은 데이터 파일과 디렉터리를 추적하고 이것들의 버전을 관리하는 것입니다. 

 

데이터 사이언스 / 머신러닝에서 주된 데이터 파일은 Git이 추적하기 힘든 이진 혹은 대용량 데이터입니다. 

그렇기 때문에 DVC가 나오게 되었고, 이런 문제를 해결해주었습니다. 

 

DVC와 Git은 서로 배타적이지 않습니다. DVC는 일반적으로 Git과 통합되므로 Git은 코드 및 구성 파일을 추적하고 DVC는 데이터를 추적합니다. 그러나 DVC는 Git과 독립적으로 작동 할 수도 있습니다

 

(linux기준)  $ pip3 install dvc 명령어를 통해 dvc를 사용 가능합니다. 

 

$ dvc init 명령어를 통해 DVC를 intialize하면 .dvc 디렉터리가 생깁니다.

 

$ dvc add [ 파일 명 ]  명령어를 통해 dvc가 그 파일을 tracking 하라고 지정할 수 있다.  tracking하면 [ 파일 명 ].dvc 파일이 생성됨을 확인할 수 있습니다. [파일 명].dvc 파일은 [파일 명] 파일의 위치와 MD5 hash값을 가집니다. 

.dvc 파일이 생겼다.
.dvc 폴더의 cache에 파일의 md5 hash값의 이름으로 tracking하는 파일을 저장한다.

$ dvc destroy 명령어로 파이프라인, 데이터 및 .dvc/cache 안의 모든 파일을 삭제할 수 있습니다. 

 

.dvc 파일이 있으면 원본 파일을 삭제해도 $ dvc checkout [파일 명].dvc 명령어를 통해 복원 가능하며 $ dvc status 명령어를 통해 변경 사항을 확인할 수 있습니다. 

dvc checkout 명령어를 통해 복원하기

 

원본 파일을 수정하게 되면, 새로운 파일의 md5sum 값과 .dvc 파일에 있는 md5sum 값이 차이가 남을 알 수 있고, status를 체크하면 modified로 표시됨을 알 수 있습니다.

수정 상태도 확인 가능

$ rm [파일 명].dvc 명령어를 통해 tracking 파일을 삭제할 수 있으나 캐쉬된 버전의 파일을 여전히 남아 있어 $ dvc gc 명령어를 통해 캐쉬 폴더 내 데이터도 삭제해야한다. ("여기서 gc 는 'garbage cleaner'을 의미한다")

.dvc 파일을 삭제해도 여전히 cache 폴더에 남아있다.
dvc gc 명령어를 통해 cache도 비워줘야한다.