Metaflow 데이터와 아티팩트
Metaflow 데이터와 아티팩트
Metaflow에서 각 스텝이 만든 값은 데이터 아티팩트(data artifact) 가 되어 자동으로 저장돼요. 인스턴스 변수에 값을 할당하기만 하면 그게 아티팩트로 취급되기 때문에, 데이터를 직접 저장·불러오는 코드를 신경 쓰지 않아도 돼요. 이 아티팩트 체계가 Metaflow 사용 경험을 크게 좌우해요.
출처: Metaflow Data
아티팩트가 중요한 이유
아티팩트가 자동 관리되면 여러 이득이 생겨요.
- 데이터 흐름 관리 — 스텝 사이 데이터를 직접 로드·저장하지 않아도 흐름이 유지돼요.
- 영속성 — 모든 아티팩트가 저장돼서 나중에 Client API로 분석하거나 Cards로 시각화할 수 있어요.
- 환경 일관성 — 스텝을 로컬에서 돌리든 클라우드에서 돌리든 데이터를 명시적으로 옮길 필요가 없어요.
- 디버깅 도움 — 과거 아티팩트에 접근해 실패 전 데이터를 확인하거나,
resume으로 실패 지점부터 이어 실행할 수 있어요.
스텝 사이의 데이터 흐름
아티팩트는 생성된 뒤 모든 스텝에서 일반 인스턴스 변수처럼 접근할 수 있어요. 다만 브랜치(branch) 안에서는 예외가 있어요. 병렬 브랜치에서 각각 다른 값을 만들면 그 값은 join 스텝까지 확정되지 않으므로, inputs를 통해 브랜치별 값을 참조해야 해요.
브랜치·포이치와 데이터
병렬 실행과 데이터는 밀접하게 연결돼요. foreach 루프에서는 각 태스크가 input이라는 인스턴스 변수로 리스트의 자기 항목을 받아요. 또 merge_artifacts 유틸리티를 쓰면 join 이후 모호하지 않은 값을 자동으로 합쳐 전달할 수 있어요. 예를 들어 두 브랜치에서 같은 값으로 설정된 아티팩트는 그대로 전파되고, 값이 다른 아티팩트는 exclude나 include로 골라내 관리할 수 있어요.
아티팩트 스토리지
Metaflow는 아티팩트를 저장할 때 콘텐츠 기반 중복 제거(content based deduplication) 를 사용해요. 값이 같은 아티팩트는 중복 저장하지 않기 때문에, 아티팩트 값이 서로 같은지 판단할 수 있고 저장 공간도 아낄 수 있어요.
더 알아보기
- 지난 실행 데이터 조회: Client API
- 결과 시각화: Visualizing Results