Data Repository / Versioning

ML 파이프라인에 사용되는 데이터와 모델의 레지스트리를 관리하는 방법에 대한 탐색

 

Data Management

모델을 학습하면서 어떤 특정 데이터셋에는 학습이 잘됐었고, 특정 데이터셋에는 학습이 잘안될때가있고. 또한 데이터들의 설명이 존재하지않아 정확하게 어떤 데이터를 써야할지 모를때가 있습니다.

이를 기억해놓기위해 Data Management가 필요합니다.

버전관리하면 당연하게 Github, Gitlab이 생각나겠지만, 대용량 파일을 저장하기에는 유료 서비스가 요구되며, 추가적인 툴을 활용하여 데이터를 관리하기 위한 시도가 계속 되고 있습니다.

Data Version Control 필요성

Computer Science적 가치를 갖기 위해서는 reproducibility(재현성)이 보장되어야한다.

: reproducibility : 측정한 결과가 다시 나타나는 성질

ex) 같은 데이터로 ML 모델을 Train하고 Validation하면 같은 결과값이 나옴

그러나 현실 데이터는 계속해서 변화한다.

  • 데이터 추가, 삭제, 기준 변경 등

그러므로 reproducibility를 위해 data versioning이 필요

 

ML 프로젝트에서도 소프트웨어 개발 프로세스를 적용하여 SW versioning 처럼 관리하기 시작

소스코드에 해당하는 데이터를 고유한 버전 번호를 오름차순으로 할당하여 관리

 

Data management 다양한 툴

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

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

 

*  데이터에 대한 immutability(불변성)을 보장하지 않음 

*  데이터를 버저닝하여 저장할 때 전체 데이터가 중복으로 저장 됨

ex) git을 사용하여 소스코드를 관리하면 변경된 부분만 관리

 

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

 

우수한 데이터 버전 제어 솔루션은 아래와 같은 기능을 제공.

* 데이터가 저장되는 별도의 스토리지 

* 필요할 때마다 모든 기록 버전을 재현할 수 있도록 데이터 세트에 대한 변경 기록

* 다른 사람과 쉽게 데이터 세트를 공유하고 협업을 가능하게 하는 기능

* 데이터 사이언티스트의 작업을 지원하는 직관적인 워크플로우

 

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

Best 8 data version control tools for 2023 (Source: DagsHub)



  • DVC(Data Version Control)

Git 위에서 작동하는 가벼운 도구이며 이미 Git을 사용하여 코드를 관리하고 있는 경우 특히 사용하기 쉽습니다.

모든 종류의 데이터와 함께 작동하며 해당 데이터를 저장하기 위해 DVC는 많은 유연성을 제공합니다. AWS, Google Cloud 및 Azure를 지원하여 클라우드에 데이터 파일을 저장할 수 있습니다.

DVC는 데이터 및 모델의 버전 관리, 실험 추적 및 모든 데이터, 코드, 매개변수 모델 및 그래픽 성능 플롯 비교에 사용할 수 있습니다.

출처: Iterative 웹사이트

 

장점:

* 설치 및 사용이 간편합니다.

* 직관적인 Git 통합

* 모든 데이터 형식, 프레임워크 및 데이터 스토리지와 함께 작동합니다.

 

단점:

* 빅 데이터에 적합하지 않습니다.(상당한 시간이 걸리는 해시 계산으로 인해 매우 큰 데이터 세트를 처리할 때 실패)

* 다른 사람들과의 협업에는 원격 스토리지 설정, 역할 정의, 각 사용자에 대한 액세스 제공과 같은 여러 구성이 필요

 

  • Lake FS

Lake File System( 줄여서 LakeFS )은 2020년에 출시된 오픈 소스 버전 제어 도구로, 버전 제어와 빅데이터 솔루션(데이터 레이크) 간의 데이터 워크플로우에 대한 기능적 차이격차를 해소합니다.

출처: 공식 문서

장점

* 사용자 측에서 변경할 필요 없이 모든 데이터 형식에서 작동합니다.

* 머신 러닝 파이프라인의 모든 복잡성 수준에 대한 데이터 수집 및 실험을 위한 안전한 환경을 갖춘 다중 사용자 데이터 관리 시스템입니다.

* UI 및 CLI 인터페이스를 모두 제공하며 모든 주요 클라우드 플랫폼 및 스토리지 유형과도 호환됩니다.

 

단점

* LakeFS는 객체 스토리지 사용에 크게 의존하며 다른 사용 사례에 많은 가치를 제공하지 않습니다. 

* LakeFS는 전체 데이터 과학 수명 주기의 많은 부분 중 하나인 데이터 버전 관리에만 사용됩니다. 즉, 데이터 과학 또는 기계 학습 파이프라인의 다른 단계를 처리할 때 외부 도구의 통합이 필요합니다.

 

 

  •  델타 레이크(Delta Lake)

 이름에서 알 수 있듯이 Delta Lake는 데이터 레이크 작업을 위해 설계되었습니다. 기존 데이터 레이크에 데이터 버전 관리, ACID 트랜잭션 및 스키마 관리를 제공합니다. 따라서 많은 데이터로 작업하고 이미 데이터 레이크를 구현한 경우에 가장 적합합니다.

 데이터 스토리지의 경우 AWS, Google Cloud 및 Azure 클라우드 스토리지는 물론 Apache Hadoop에서 사용하는 HDFS와 함께 작동합니다. Apache Spark를 사용하여 모든 데이터 작업을 수행하고 기존 Spark 파이프라인이 있는 경우 쉽게 사용할 수 있습니다.

Delta Lake는 빅 데이터에서 머신 러닝을 가능하게 하도록 설계된 오픈 소스 데이터 관리 아키텍처인 Lakehouse Architecture라는 것을 중심으로 설계되었습니다.

 

장점:

* Delta Lake에 의해 구현된 Lakehouse 아키텍처는 빅 데이터 관리를 위한 잘 알려진 개방형 표준입니다.

* 다양한 데이터 레이크 기술과 호환됩니다.

 

단점:

* Delta Lake는 빅 데이터와 함께 작동하도록 설계되었습니다. 결과적으로 규모가 필요하지 않은 소규모 프로젝트에는 과잉입니다.

* 모든 종류의 데이터와 함께 작동할 수 있지만 Delta Lake는 다른 도구와 직접 호환되지 않는 자체 형식을 사용하여 해당 데이터를 유지합니다.

 

 

  • -Pachyderm

Pachyderm은 페타바이트 규모의 데이터 버전 관리 및 계보 추적은 물론 완전 자동 확장 및 데이터 기반 파이프라인을 제공하여 기계 학습 수명 주기를 강화하는 데이터 계층으로 간주됩니다.

출처: Pachyderm data centric ai

 

장점

* 전체는 정형 및 비정형 데이터와 복잡한 도메인별 데이터 유형을 모두 지원합니다.

* 커뮤니티 및 엔터프라이즈 버전을 모두 제공합니다. 컨테이너 기반이며 주요 클라우드 공급자 및 온프레미스 배포에 최적화되어 있습니다.

* 데이터 버전을 추적하고 시간이 지남에 따라 데이터 무결성을 유지하기 위한 기본 제공 메커니즘이 있습니다.

 

단점

* 커뮤니티 에디션에는 16개의 파이프라인 수가 제한되어 있습니다.

* Pachyderm을 기존 인프라에 통합하는 것은 여기에 포함된 많은 기술 구성 요소로 인해 어려울 수 있습니다.

* 이것은 또한 학습 과정을 어렵게 만들 수 있습니다.

 

데이터 분석가의 워크플로우 중 데이터 버저닝 사용

데이터 버저닝을 사용하면 데이터의 변경과 이력을 관리하여 분석 작업의 투명성과 신뢰성을 높일 수 있습니다.

다음은 데이터 버저닝을 사용하는 경우의 워크플로우 단계입니다:

1. 데이터 수집:

  • 데이터를 수집하고 원시 데이터를 초기 버전으로 설정합니다.
  • 버저닝 시스템에서는 이러한 초기 데이터 버전을 관리하고 추적합니다.

2. 데이터 전처리:

  • 데이터 전처리 단계에서 수행한 변환, 정제 및 가공 작업에 대한 변경 내역을 버저닝합니다.
  • 예를 들어, 데이터 필터링, 변수 변환, 이상치 처리 등의 작업을 수행한 경우 해당 작업과 결과를 버전으로 기록합니다.

3. 실험적 데이터 분석 (EDA):

  • 분석 과정에서 수행한 데이터 탐색 작업에 대한 변경 내역을 버저닝합니다.
  • 시각화, 통계 분석, 특성 엔지니어링 등의 작업과 결과를 버전으로 관리합니다.

4.모델링:

  • 모델 선택, 파라미터 튜닝, 교차 검증 등의 모델링 작업에 대한 변경 내역을 버저닝합니다.
  • 각 모델의 버전과 해당 버전에서 사용된 데이터 버전을 추적하여 모델과 데이터 간의 관계를 관리합니다.

5.결과 해석:

  • 분석 결과, 인사이트, 보고서 등에 대한 변경 내역을 버저닝합니다.
  • 결과의 시각화, 해석 방법, 결론 등을 버전으로 관리하여 추후 재현성과 비교 분석을 용이하게 합니다.

+ Recent posts