MLOps

MLOps - Data Management(DVC)

2022. 2. 15. 18:35
728x90

목차

  1. Data Versioning
  1. Data Versioning Tool
  1. DVC
    1. DVC란?
    1. DVC를 사용하는 이유

 

Data Versioning

  • (Computer) Science적 가치를 갖기위해서는 reproducibility(재현성)이 보장되어야한다.
    • reproducibility : 측정한 결과가 다시 나타나는 성질
    • ex) 같은 데이터로 ML 모델을 Train하고 Validation하면 같은 결과값이 나옴(Seed가 같을 때)
  • 그러나 현실 데이터는 계속해서 변화한다.
    • 데이터 추가, 삭제, 기준 변경 등
  • 그러므로 reproducibility를 위해 data versioning이 필요

 

  • ML 프로젝트에서도 소프트웨어 개발 프로세스를 적용하여 SW versioning 처럼 관리하기 시작
    • 소스코드에 해당하는 데이터를 고유한 버전 번호를 오름차순으로 할당하여 관리

 

Data Versioning Tool

따로 Tool을 사용하여 Data Versioning을 하지 않더라도, 단순하게 변경되는 데이터를 저장하여 날짜별로 파티셔닝하여 저장하고 사용할 수 있다.

 

그러나 이러한 방법은 문제점이 존재한다.

  • 데이터에 대한 immutability(불변성)을 보장하지 않음
  • 데이터를 버저닝하여 저장할 때 전체 데이터가 중복으로 저장 됨
    • ex) git을 사용하여 소스코드를 관리하면 변경된 부분만 관리

 

 

Data Versioning Tool은 이러한 문제점을 보완하고 편의성을 제공한다.

대표적으로 DVC(Data Version Control), Neptune, Pachyderm, Git LFS, Modelstore, Hub, DAGsHub 등이 있다.

 

DVC (Data Version Control)

 

DVC란?

머신러닝 프로젝트를 위한 Open Source Version Control System

 

핵심 기능은 데이터 파일과 디렉토리를 추적하고 버전을 관리

 

DVC를 사용하는 이유

  1. ML 모델이나 데이터 셋을 관리할 수 있음 - 재현성 증대
    • 데이터 사이언스 / 머신러닝 분야에서 주된 데이터 파일은 Git이 추적하기 힘든 이진 혹은 대용량 데이터
    • 전처리/학습 코드와 configuration 뿐 아니라(Git으로도 가능), 대용량 데이터를 metafile(.dvc 파일)로 대체하여 versioning 가능
    • 대용량 데이터는 원격 저장소(S3, GDrive)에 저장되고 storage 설정, push/pull 등을 DVC가 관리
  1. Data를 마치 Git 처럼 관리 - Versioning 용이
    • Git 인터페이스를 이용 (Git과 함께 실행)
    • 많은 사람들이 익숙하게 Git 인터페이스를 사용하므로, 처음 사용해도 쉽게 적응 가능
    • Git은 metafile(.dvc 파일)을 관리, DVC는 .dvc 파일을 사용하여 원격 저장소와 대용량 파일 관리
  1. 설정의 간편함
    • 그럼 익숙한 Git 기반의 Git LFS를 사용하면 안되나? 라고 생각하겠지만,
    • Git LFS는 파일 사이즈 제약이 크다
    • 그러나 DVC 의 경우 데이터를 저장하는 Storage 설정만 하면 쉽게 사용 가능

DVC 동작 방식

 

 

원격 저장소 설정이 완료되었다고 가정하고

models/best-checkpoint.ckpt가 존재할때,dvcfiles/trained_model.dvc 파일을 만듭니다.

 

dvc add ../models/best-checkpoint.ckpt --file trained_model.dvc dvc push trained_model.dvc

 

dvc 파일을 생성하고 push 헀으므로, 원본 데이터는 삭제가 가능합니다. dvc파일은 git으로 관리합니다.

rm models/best-checkpoint.ckpt   git add dvcfiles/trained_model.dvc ../models/.gitignore  git commit -m "Added trained model to google drive using dvc"  git push

 

데이터를 로컬로 가져오려면 다음 커맨드를 실행합니다.

cd ../dvcfiles dvc pull trained_model.dvc
 

728x90

'MLOps' 카테고리의 다른 글

MLOps - Feature Store 기초 실습 (using Feast)  (0) 2022.03.15