Data Provenance
데이터 출처 이력은 데이터의 출처, 취급한 사람, 적용된 권리, 모델 학습 전 변경 내역을 기록합니다. PROV, 활용 사례, 도구를 다룹니다.
데이터 계보는 데이터의 출처, 생성 또는 수집한 주체, 적용된 라이선스나 동의 조건, 모델에 전달되기 전까지 적용된 모든 변환 과정을 기록한 데이터의 이력입니다. 머신러닝에서 데이터 계보는 원시 이미지나 텍스트, 이에 적용된 데이터 라벨링, 정제 및 데이터 전처리 단계, 데이터셋 분할 및 버전, 그리고 해당 데이터를 사용한 학습 실행을 포함합니다. 따라서 배포된 모델을 해당 모델의 학습 데이터까지 정확히 추적할 수 있습니다. 데이터 계보(data lineage)는 흔히 동의어로 사용됩니다. 두 용어를 구별할 때는 데이터 계보가 파이프라인과 시스템을 거치는 데이터의 흐름과 변환을 설명하고, 출처, 소유권, 사용 권한은 데이터 출처 이력(provenance)에 추가됩니다.
W3C PROV 모델#
W3C는 출처 이력을 표현하기 위한 표준군인 PROV를 2013년에 발표했습니다. PROV는 모든 이력을 세 가지 유형으로 설명합니다. 파일과 데이터셋 같은 개체, 어노테이션이나 학습처럼 개체를 사용하고 생성하는 활동, 활동을 수행하는 사람, 조직, 소프트웨어 같은 행위자입니다. 비전 데이터셋에 적용하면 기록은 다음과 같은 그래프를 이룹니다.
데이터 출처 이력이 중요한 이유#
출처 이력은 먼저 디버깅과 재현성을 지원합니다. 프로덕션에서 정확도가 떨어지거나 데이터 드리프트가 나타나면 엔지니어는 어떤 라벨링 배치, 소스 카메라, 정제 단계에서 문제가 발생했는지 찾아 정확히 동일한 데이터로 학습을 다시 실행할 수 있습니다. 같은 기록을 통해 낮에만 또는 한 국가에서만 촬영된 보행자 데이터셋 같은 데이터셋 편향을 파악하고 데이터 포이즈닝에도 대응할 수 있습니다. 각 샘플의 출처를 알고 있으면 손상된 출처에서 나온 샘플을 모두 제거할 수 있습니다.
두 번째 관심사는 사용 권리입니다. Data Provenance Initiative는 2023년에 텍스트 데이터셋 1,800개 이상을 감사한 결과, 널리 사용되는 호스팅 사이트에 게시된 데이터셋의 70% 이상에서 라이선스가 누락되고 50% 이상에서는 라이선스가 잘못 분류된 사실을 발견했습니다. 의료 영상 분석에서는 각 스캔을 제공한 병원, 사용에 대한 동의나 법적 근거, 식별 정보 제거 여부를 출처 이력에 기록합니다. 이는 데이터 개인정보 보호 법률에 따라 조직이 입증해야 하는 사항입니다. 생성 이미지와 텍스트가 온라인에 확산됨에 따라 어떤 샘플이 합성 데이터인지 추적하면 모델 붕괴를 방지하는 데에도 도움이 됩니다. Content Credentials는 이러한 출처 이력을 미디어 파일 자체에 포함합니다.
이제 규정에서도 이를 요구합니다. EU AI Act는 고위험 시스템 제공자에게 데이터 수집 절차와 데이터 출처를 기록하도록 요구하며, 범용 AI 모델 제공자에게는 유럽연합 집행위원회가 2025년 7월 발표한 템플릿을 사용해 학습 콘텐츠 요약을 공개하도록 요구합니다.
실무에서 출처 이력을 기록하는 방법#
출처 이력은 세 가지 수준에서 수집합니다. Timnit Gebru와 동료들이 2018년에 제안한 Datasheets for Datasets 같은 데이터셋 문서는 데이터셋의 목적, 구성, 수집 절차, 전처리, 용도에 관한 질문에 답하며, 해당 데이터셋으로 학습한 모델의 모델 카드와 함께 사용됩니다. 버전 관리 도구는 데이터셋의 스냅샷을 만들고 콘텐츠 해시로 파일을 식별하므로 모델에서 변경할 수 없는 데이터셋 버전을 지정할 수 있습니다. 파이프라인 도구는 작업이 실행될 때 데이터 계보 이벤트를 기록하며, OpenLineage 같은 개방형 사양을 따릅니다.
세 번째 수준은 아티팩트 자체에 저장되는 메타데이터입니다. 각 Ultralytics YOLO 학습 실행은 데이터셋 YAML 경로와 데이터 증강 설정을 포함한 전체 구성을 실행 디렉터리의 args.yaml에 기록합니다. 저장된 체크포인트에는 같은 학습 인수와 Ultralytics 버전 및 저장 날짜가 함께 포함됩니다.
from ultralytics import YOLO
# 체크포인트를 불러옵니다. Ultralytics 가중치 파일에는 해당 파일을 생성한 실행 기록이 저장됩니다.
model = YOLO("yolo26n.pt")
ckpt = model.ckpt
# 학습에 사용한 데이터와 설정, 패키지 버전 및 저장 날짜입니다.
print(ckpt["train_args"]["data"], ckpt["train_args"]["epochs"], ckpt["train_args"]["imgsz"])
print(ckpt["version"], ckpt["date"])이 기록은 모델 가중치를 가중치 생성에 사용된 데이터 참조 및 설정과 연결하며, AI 투명성 및 AI 거버넌스 검토에 필요한 근거를 제공합니다. 학습이 완료되면 Ultralytics는 파일 크기를 줄이기 위해 best.pt에서 옵티마이저 상태를 제거하지만 이 필드는 유지하므로, 배포되는 파일에도 기록이 함께 포함됩니다.










