데이터 버전 관리(Data versioning)는 시간에 따른 데이터셋의 변경 사항을 추적하고 관리하는 관행으로, 머신러닝 워크플로우에서 재현성과 추적 가능성을 보장합니다. 이는 소프트웨어 버전 관리의 원칙을 데이터 자산에 적용하여, 팀이 어떤 데이터가 사용되었는지, 언제 수정되었는지, 누가 수정했는지를 기록할 수 있게 하며, 이는 모델 동작을 감사하고 예기치 않은 결과를 디버깅하는 데 중요합니다.
머신러닝에서 모델은 학습된 데이터만큼만 신뢰할 수 있습니다. 코드가 개별 커밋을 통해 변경되는 것과 달리, 데이터셋은 추가, 삭제, 수정, 변환을 통해 진화합니다. 체계적인 버전 관리 없이는 한 데이터 스냅샷으로 학습된 모델을 이후 버전으로 학습된 모델과 안정적으로 비교할 수 없으며, 이는 재현 불가능한 실험과 성능 회귀 진단의 어려움으로 이어집니다.
핵심 원칙
데이터 버전 관리 시스템은 일반적으로 세 가지 요소를 포착합니다: 데이터셋의 내용, 메타데이터(스키마, 출처, 전처리 단계 등), 그리고 각 버전을 이전 버전과 연결하는 계보(lineage)입니다. 버전은 종종 데이터 내용의 해시로 식별되며, 아무리 작은 변경이라도 고유한 식별자를 생성하도록 보장합니다. 이 해시 기반 접근 방식은 git이 코드 커밋을 처리하는 방식을 반영하지만, 대용량 바이너리 파일과 구조화된 데이터에 맞게 조정되었습니다.
주요 작업에는 새 스냅샷 커밋, 대체 전처리 파이프라인 탐색을 위한 분기, 여러 기여자의 변경 사항 병합이 포함됩니다. 시스템은 또한 특정 버전을 중요한 것으로 표시하는 태깅을 지원하며, 예를 들어 프로덕션 모델 릴리스에 사용된 버전이 그렇습니다. 이는 최신 데이터셋에 오류가 도입된 경우 알려진 양호한 상태로 롤백할 수 있게 합니다.
재현성에서의 역할
인공지능 연구에서 재현성은 실험이 동일한 입력으로 다시 실행될 수 있어야 함을 요구합니다. 데이터 버전 관리는 게시된 결과에 사용된 정확한 학습 및 검증 세트를 재생성하는 메커니즘을 제공합니다. 예를 들어, 스탠포드 AI 연구소의 팀은 특정 데이터셋 버전에 대한 참조와 함께 모델을 게시할 수 있으며, 이를 통해 다른 사람들이 모호함 없이 결과를 검증할 수 있습니다.
실제로 이는 원시 데이터뿐만 아니라 변환 스크립트와 해당 매개변수도 저장하는 것을 포함합니다. 버전이 지정된 데이터셋에는 종종 모든 파일과 체크섬을 나열하는 매니페스트 파일과 처리된 환경이 포함됩니다. 이러한 세부 수준은 데이터 업데이트로 인한 변경과 코드 수정으로 인한 변경을 구별하는 데 도움이 됩니다.
도구 및 통합
데이터 버전 관리를 해결하기 위해 DVC(Data Version Control), Delta Lake, Pachyderm을 포함한 여러 오픈소스 도구가 등장했습니다. DVC는 git 저장소와 통합되어 메타데이터를 저장소에 저장하면서 대용량 데이터 파일을 아마존 웹 서비스 S3 또는 구글 클라우드 버킷과 같은 원격 저장소에 유지합니다. Apache Spark의 창시자들이 개발한 Delta Lake는 데이터 레이크에 ACID 트랜잭션과 타임 트래블을 추가하여 과거 버전에 대한 쿼리를 허용합니다.
이러한 도구는 종종 MLflow와 통합되어 실험 추적을 지원하고, CI/CD 파이프라인과 통합되어 새 데이터 버전의 검증을 자동화합니다. 엔터프라이즈 환경에서 버전 관리는 접근 제어와 결합되어 승인된 사용자만 데이터셋을 수정할 수 있도록 하며, 이는 GDPR과 같은 규정 준수에 중요합니다.
과제 및 모범 사례
주요 과제는 저장 공간 오버헤드로, 각 버전이 상당한 디스크 공간을 소비할 수 있습니다. 중복 제거와 델타 인코딩(전체 복사본 대신 변경 사항만 저장)과 같은 기술이 이를 완화합니다. 또 다른 문제는 이미지나 오디오와 같은 비정형 데이터를 처리하는 것으로, 바이너리 diff가 덜 의미 있는 경우 파일 수준 해싱에 의존하는 경우가 많습니다.
모범 사례에는 모든 학습 실행 전에 데이터 버전을 커밋하고, 변경 이유를 문서화하며, 의미론적 버전 관리(예: 1.2.0)를 사용하여 업데이트의 영향을 전달하는 것이 포함됩니다. 팀은 또한 실험 로그에서 데이터셋 버전 포착을 자동화하여 각 모델 체크포인트를 정확한 데이터 소스에 연결해야 합니다. 이러한 규율은 감사 추적이 필수적인 의료 및 금융과 같은 규제 산업에서 특히 중요합니다.
향후 방향
딥러닝 모델의 규모가 커짐에 따라 데이터 버전 관리는 스트리밍 데이터와 지속적 학습 시나리오를 처리하도록 진화하고 있습니다. 도구는 정적 스냅샷뿐만 아니라 데이터 파이프라인 자체의 버전 관리를 지원하기 시작했습니다. 또한 손실 함수 성능의 변화를 초래한 데이터 변경을 식별하는 것과 같이 모델 디버깅에 버전화된 데이터를 사용하는 데 대한 관심도 증가하고 있습니다.
버클리 AI 연구 및 카네기 멜론 대학교와 같은 연구 그룹은 각 새 버전에서 실행되는 자동화된 데이터 품질 검사를 탐구하여 학습으로 전파되기 전에 이상 징후를 표시합니다. 이러한 발전은 데이터 버전 관리를 ML 수명 주기의 원활한 부분으로 만들어 현재 채택을 제한하는 수동 오버헤드를 줄이는 것을 목표로 합니다.