2023년 최고의 데이터 버전 제어 도구 8가지를 소개합니다
이번 기사는 ML/DL 업무의 필수요소라 할 수 있는 데이터 버전 제어(DVC, Data Version Control) 도구를 소개합니다. 각 DVC 도구의 장단점 요약합니다. 다양한 버전의 데이터를 추적하는 것은 한 번에 여러 개의 공을 저글링하는 것처럼 어려울 수 있습니다. 적절한 조정, 균형 및 정확성이 없으면 모든 것이 빠르게 무너질 수 있습니다. 데이터 버전 관리가 데이터 사이언스 및 ML 프로젝트의 성공에 중요한 이유입니다. ❗️저장 공간 데이터 버전을 관리하는 이유 중 하나는 분명히 저장해야 하는 동일한 데이터의 여러 버전을 추적할 수 있기 때문입니다. 저장 공간이 부족하면 보관이 어려워 결국 실패로 이어집니다. ❗️데이터 감사 및 규정 준수 거의 모든 회사는 GDPR과 같은 데이터 보호 규정에 직면해 있으며 규정 준수 및 데이터 소스 기록을 입증하기 위해 특정 정보를 저장해야 합니다. 이 시나리오에서 데이터 버전 관리는 회사의 내부 및 외부 감사 프로세스 모두에 도움이 될 수 있습니다. ❗️실험의 저장 및 재현성 ML 모델 개발은 코드 실행을 넘어 교육 데이터 및 올바른 파라미터에 관한 것입니다. 모델 업데이트는 반복적인 프로세스이며 이전에 수행한 모든 변경 사항을 추적(tracking)해야 합니다. 이 추적은 여러 사용자가 참여하는 보다 복잡한 환경에서도 중요합니다. 데이터 버전 관리를 사용하면 교육 데이터 및 실험 결과의 스냅샷을 확보하여 각 반복에서 구현을 더 쉽게 할 수 있습니다. 위 문제를 쉽게 해결할 수 있는 8가지 데이터 버전 제어 도구를 소개합니다. 1️⃣ DagsHub DagsHub는 중앙 집중식 Github 기반 플랫폼으로, 버전 관리 코드 외에도 데이터, 모델, 실험(experiment) 등을 버전 관리할 수 있습니다. 2022년에 출시된 DagsHub의 DDA(Direct Data Access)를 사용하면 로컬 환경에 미리 다운로드할 필요 없이 DagsHub 리포지토리에서 파일을 스트리밍할 수 있습니다. 이렇게 하면 모드 교육을 시작하기 전에 로컬 디스크에 대한 긴 데이터 다운로드를 방지할 수 있습니다. [장점] - DDA를 사용하면 모든 교육 데이터를 로컬 디스크로 가져올 필요가 없으므로 시간과 메모리 - 저장 공간을 절약할 수 있습니다. - 프로젝트를 변경할 필요 없이 데이터 API의 사용 용이성과 유연성을 통해 DVC에서 제공하는 것과 동일한 구성 및 재현성을 제공합니다. - DDA를 사용하면 모든 데이터를 가져올 필요 없이 DVC를 사용하여 데이터를 업로드하고 버전을 지정할 수 있습니다. DagsHub는 새 해시를 계산하고 사용자를 대신하여 새 DVC 추적 및 수정된 Git 추적 파일을 커밋합니다. [약점] - DagsHub에 연결된 GitHub 리포지토리에서는 작동하지 않습니다. - 데이터 파이프라인을 재현하는 'dvc repro' 명령을 지원하지 않습니다. 2️⃣ DVC 2017년에 출시된 Data Version Control(DVC)은 iterative에서 만든 오픈 소스 도구입니다. DVC는 데이터 및 모델 버전 관리, 실험 추적, 모든 데이터, 코드, 매개 변수 모델 및 그래픽 성능 플롯 비교에 사용할 수 있습니다. [장점] - 오픈 소스이며 모든 주요 클라우드 플랫폼 및 스토리지 유형과 호환됩니다. - DVC는 대용량 파일과 기계 학습 모델을 효율적으로 처리할 수 있습니다. - 소스 코드 버전 관리를 위해 많은 개발자가 사용하는 표준 도구인 Git의 확장으로 빌드되었습니다. [단점] - 상당한 시간이 걸리는 해시 계산으로 인해 매우 큰 데이터 세트를 처리할 때 실패합니다. - 다른 사람들과의 협업에는 원격 스토리지 설정, 역할 정의, 각 기여자에 대한 액세스 제공과 같은 여러 구성이 필요하며 이는 실망스럽고 시간이 많이 소요될 수 있습니다. - 저장소에 새 데이터를 추가하려면 기존 데이터를 가져온 다음 전체 데이터를 푸시백하기 전에 새 해시를 계산해야 합니다. - DVC에는 중요한 RDBMS 기능이 없기 때문에 RDBMS에 익숙한 사용자에게는 적합하지 않습니다. 3️⃣ Dolt 2019년에 생성된 Dolt는 Git과 유사한 버전 제어를 사용하는 SQL 데이터베이스 관리용 오픈 소스 도구입니다. 파일 대신 테이블에 버전을 지정하고 해당 테이블에 대한 SQL 쿼리 인터페이스가 있습니다. 버전 제어를 통해 데이터와 구조 모두를 동시에 변경할 수 있으므로 사용자 경험이 향상됩니다. [장점] - 다른 SQL 데이터베이스와 마찬가지로 사용자의 기존 인프라에 통합될 수 있으며 ACID 속성을 보장합니다. - 대부분의 개발자는 소스 코드 버전 관리를 위해 Git에 익숙합니다. 따라서 Dolt와 Git의 통합으로 배우기가 더 쉬워졌습니다. [단점] - Dolt는 RDBMS를 다룰 때만 유용하다는 의미인 ACID 속성에 전적으로 의존합니다. - 매우 많은 양의 데이터(페타바이트 규모 데이터)를 계산하는 데는 고성능을 제공하지 않습니다. - RDBMS 전용으로 설계되었기 때문에 이미지, 오디오, 자유 형식 텍스트와 같은 비정형 데이터는 지원하지 않습니다. 4️⃣ Git LFS Git LFS(Git Large File Storage)는 Git의 가벼운 디자인과 효율성을 유지하면서 오디오 샘플, 영화, 대용량 데이터 세트와 같은 대용량 바이너리 파일을 관리하는 Git의 기능을 확장하기 위해 Atlassian에서 개발한 오픈 소스 프로젝트입니다. Git LFS를 사용하면 대용량 파일이 클라우드에 저장되고 원격 서버의 로컬 복사본에 있는 포인터를 통해 참조됩니다. [장점] - 포맷에 관계없이 모든 유형의 파일을 저장하므로 Git에서 대용량 파일을 유연하고 다양하게 버전 관리할 수 있습니다. - 개발자는 기존 워크플로우를 변경하지 않고도 대용량 파일을 Git LFS로 쉽게 이동할 수 있습니다. [단점] - 복잡성으로 인해 신규 사용자에게는 직관적이지 않습니다. - Git LFS가 작동하려면 LFS 서버가 필요합니다. 이러한 서버는 모든 Git 호스팅 서비스에서 제공되지 않으며 경우에 따라 설정하거나 다른 Git 프로바이더로 전환해야 합니다. 5️⃣ LakeFS Azure, Google 클라우드 스토리지 및 Amazon S3와 같은 대부분의 빅 데이터 스토리지 솔루션은 성능이 우수하고 비용 효율적이며 다른 도구와의 연결성이 우수합니다. 그러나 이러한 도구에는 고급 데이터 워크플로우에 대한 기능적 차이가 있습니다. Lake File System(줄여서 LakeFS)은 2020년에 출시된 오픈 소스 버전 제어 도구로, 버전 제어와 이러한 빅 데이터 솔루션(데이터 레이크) 사이의 격차를 해소합니다. [장점] - 사용자 측에서 변경할 필요 없이 모든 데이터 포맷에서 작동합니다. - ML 파이프라인의 모든 복잡성 수준에 대한 데이터 수집 및 실험을 위한 안전한 환경을 갖춘 다중 사용자 데이터 관리 시스템입니다. - UI 및 CLI 인터페이스를 모두 제공하며 모든 주요 클라우드 플랫폼 및 스토리지 유형과도 호환됩니다. [단점] - LakeFS는 오브젝트 스토리지 사용을 기반으로 하며 다른 사용 사례에 많은 가치를 제공하지 않습니다. - LakeFS는 전체 데이터 과학 수명 주기의 많은 부분 중 하나인 데이터 버전 관리에만 사용됩니다. 즉, 데이터 과학 또는 기계 학습 파이프라인의 다른 단계를 처리할 때 외부 도구의 통합이 필요합니다. 6️⃣ Neptune Neptune은 ML 실험 및 모델을 추적하고 등록하기 위한 플랫폼입니다. MLOps 프로세스의 모델 아티팩트, 지표, 하이퍼 매개변수 및 모든 메타데이터를 단일 위치에 저장하는 ML 엔지니어를 위한 통합 도구로 간주할 수 있습니다. [장점] - 실험 추적, 비교 및 구성 기능을 포함한 직관적인 협업 인터페이스를 제공합니다. - 25개 이상의 MLOps 라이브러리와 통합됩니다. - 사용자에게 온프레미스 및 호스팅 버전을 모두 제공합니다. [단점] - 완전한 오픈 소스는 아닙니다. 또한 개인 용도로는 단일 구독으로 충분할 가능성이 높지만 월간 사용 제한이 적용됩니다. - 사용자는 오프라인 버전과 온라인 버전 간의 동기화를 수동으로 유지해야 합니다. 7️⃣ Pachyderm Pachyderm은 페타바이트 규모의 데이터 버전 관리 및 lineage 추적은 물론 완전 자동 확장 및 데이터 기반 파이프라인을 제공하여 ML 라이프사이클를 강화하는 데이터 계층으로 간주됩니다. [장점] - 전체는 정형 및 비정형 데이터와 복잡한 도메인별 데이터 유형을 모두 지원합니다. - 커뮤니티 및 엔터프라이즈 버전을 모두 제공합니다. - 컨테이너 기반이며 주요 클라우드 공급자 및 온프레미스 배포에 최적화되어 있습니다. - 데이터 버전을 추적하고 시간이 지남에 따라 데이터 무결성을 유지하기 위한 기본 제공 메커니즘이 있습니다. [단점] - 커뮤니티 에디션에는 16개의 파이프라인 수가 제한되어 있습니다. - Pachyderm을 기존 인프라에 통합하는 것은 여기에 포함된 많은 기술 구성 요소로 인해 어려울 수 있습니다. 이것은 또한 학습 과정을 어렵게 만들 수 있습니다. Delta Lake Databricks의 Delta Lake는 HDFS(Hadoop Distributed File System) 및 Amazon S3와 같은 기존 데이터 레이크 파일 시스템 위에서 실행되는 오픈 소스 데이터 레이크 스토리지 계층입니다. 데이터 레이크에 대한 ACID 트랜잭션, 확장 가능한 메타데이터 관리 및 스키마 시행을 제공합니다. Delta Lake는 배치 및 스트리밍 데이터 처리를 지원하고 여러 동시 reader 및 writer를 허용합니다. [장점] - Delta Lake는 데이터 작업이 ACID(원자성, 일관성, 격리 및 내구성)임을 보장하는 데이터 레이크 작업에 대한 트랜잭션 보장을 제공합니다. 이를 통해 Delta Lake는 데이터 레이크 애플리케이션, 특히 높은 데이터 무결성이 필요한 애플리케이션에 대해 더욱 안정적이고 견고해집니다. - 데이터 레이크의 모든 데이터가 잘 구성되고 미리 정의된 스키마를 따르도록 보장하는 스키마 적용을 제공합니다. 이렇게 하면 잘못된 형식의 데이터로 인해 발생하는 데이터 불일치, 오류 및 문제를 방지할 수 있습니다. - Apache Spark API와의 호환성은 기존 빅 데이터 처리 워크플로와의 통합을 용이하게 합니다. - 서로 다른 데이터 버전의 추적 및 관리를 자동화하면 시간이 지남에 따라 정보 손실 또는 데이터 불일치의 위험이 줄어듭니다. [단점] - Delta Lake는 많은 강력한 기능을 제공하지만 데이터 레이크 아키텍처에 추가 복잡성을 도입합니다. - 제한된 데이터 형식(Parquet)이 있어 CSV, Avro, JSON 등과 같은 다른 인기 있는 데이터 형식에 적합하지 않습니다. - Delta Lake를 배우는 것은 간단하지 않으며 대규모 데이터 세트를 효율적으로 관리하려면 분산 시스템 및 빅 데이터 아키텍처에 대한 더 나은 이해가 필요합니다. 8가지 도구들에 대한 요약 비교 테이블은 다음과 같습니다. (https://miro.medium.com/v2/resize:fit:4800/format:webp/0*8CUMg-nl184FydYD.png) 원본 기사 링크는 아래와 같습니다. 감사합니다.