[MLOps 기초] DVC(Data Version Control) - PART2. Data Access


PART1 데이터 버전관리에 이어서…

데이터 접근 (Data Access)

DVC는 프로젝트 밖에서 버전관리가 되고 있는 파일에 접근하는 방법을 제공한다.

지난 포스팅에서 DVC로 프로젝트에서 사용하는 데이터에 대한 ’저장소(remote storage) 설정’ 방법을 알아봤다.
여기서 데이터 접근이란 Git으로 저장한 DVC 추적 파일을 기반으로 실제 데이터가 저장되어 있는 저장소에 접근하는 것이다.

🦈 Git 레포지토리와 데이터 관리!

  • Git 레포지토리에는 DVC로 관리하는 파일 또는 폴더의 실체가 저장되지 않는다.
  • Git 레포지토리에 올라간 .dvc 파일에 적힌 내용을 토대로 remote storage 에서 파일 또는 파일을 다운로드할 수 있다.

생각해보니, 실제 프로젝트에 DVC를 적용하려면 저장소가 매우 중요할 것이다. 아마존 S3를 사용하는 게 Best Practice 인듯하다.


  • 파일 또는 폴더 탐색

    Git 으로 관리되는 DVC 저장소를 탐색한다

dvc list https://github.com/[레포지토리주소] [폴더주소]
# 해당 레포지토리의 [폴더주소] 아래에 있는 파일 및 폴더를 보여준다
# Git과 DVC로 추적되고 있는 모든 파일 및 폴더를 보여준다
# GitHub에서는 볼 수 없는 파일 DVC 추적 폴더도 보여준다

# 튜토리얼 예시
dvc list https://github.com/iterative/dataset-registry get-started
---[output]---
.gitignore
data.xml
data.xml.dvc
--------------

  • 다운로드

    작업 중인 DVC 프로젝트 외부에서 폴더 및 파일 다운로드

dvc get https://github.com/[레포지토리주소] [폴더주소]
# 그러나 이 방법은 다운로드한 파일/폴더가 어디에서 온건지, 
# 최신 버전인지에 대한 알 수 없다

  • 불러오기

    폴더 및 파일 다운로드을 다운로드 할 뿐만 아니라, 데이터 소스에 대한 정보를 가진 .dvc 파일을 생성한다 (나중에 update 를 할 수 있다.)

dvc import https://github.com/[레포지토리주소] [폴더주소] \
             [폴더주소]/[파일이름] -o data/data.xml
# 다운로드되는 파일은 명령어를 실행한 경로에 저장된다
# -o 옵션 : 다운로드 할 경로를 지정하는 옵션

# 튜토리얼 예시
dvc import https://github.com/iterative/dataset-registry \
             get-started/data.xml -o data/data.xml
------------------------------------------[output]------------------------------------------
Importing 'get-started/data.xml (https://github.com/iterative/dataset-registry)' -> 'data/data.xml'
                                                                                                                                                                                                        
To track the changes with git, run:                                                                                                                                                                     

    git add data/data.xml.dvc data/.gitignore
--------------------------------------------------------------------------------------------

tree
--------[output]-------
.
├── data
│   ├── data.xml
│   └── data.xml.dvc
-----------------------

다음으로 PART3 데이터 접근(Data Pipeline) 에 대해 알아보자.