ZenML 스택과 컴포넌트

ZenML 스택과 컴포넌트

ZenML 스택(stack)은 파이프라인을 실행할 MLOps 인프라를 구성하는 컴포넌트들의 묶음이에요. 파이프라인 코드가 「무엇을」 하는지 정한다면, 스택은 그 코드가 어디서·어떻게 실행될지를 결정해요. 같은 파이프라인 코드를 개발 중에는 로컬 스택으로, 프로덕션에서는 클라우드 스택으로 돌릴 수 있는 건 이 구조 덕분이에요.

출처: ZenML Stack & Components

스택의 핵심 컴포넌트

모든 ZenML 스택은 반드시 두 가지 핵심 컴포넌트를 포함해야 해요.

  • 오케스트레이터(Orchestrator) — 파이프라인 스텝을 어떤 순서로, 어떻게 실행할지를 제어해요.
  • 아티팩트 스토어(Artifact Store) — 파이프라인 아티팩트를 어디에 저장할지를 관리해요.

이 둘만 있으면 스택은 성립해요. 나머지 컴포넌트는 파이프라인이 성숙해감에 따라 필요할 때 추가하는 선택 항목이에요.

선택 컴포넌트들

상황에 따라 스택에 더할 수 있는 컴포넌트는 다양해요.

  • 컨테이너 레지스트리(Container Registry) — 파이프라인 스텝의 Docker 이미지를 저장하는 곳이에요.
  • 디플로이어(Deployer) — 파이프라인을 장기 실행 HTTP 서비스로 배포해요. 온라인 모드 실행을 할 때 쓰죠.
  • 스텝 오퍼레이터(Step Operator) — 특정 스텝을 전용 하드웨어(예: GPU)에서 실행하게 해줘요.
  • 모델 디플로이어(Model Deployer) — 훈련된 모델을 예측 서비스로 배포해요.
  • 실험 추적기(Experiment Tracker) — 메트릭과 파라미터를 기록해요. MLflow 같은 도구를 연결할 수 있어요.
  • 피처 스토어(Feature Store) — ML 피처를 관리해요.
  • 알러터(Alerter) — 파이프라인 이벤트에 대해 알림을 보내요.
  • 애노테이터(Annotator) — 데이터 라벨링 워크플로를 관리해요.

대부분의 컴포넌트는 스택에 최대 한 번만 들어가요. 예외로 스텝 오퍼레이터·실험 추적기·알러터는 여러 개를 달 수 있고, 여러 개일 때 첫 번째가 기본(default)이 돼요. 기본이 아닌 컴포넌트는 스텝·파이프라인 설정에서 이름으로 직접 선택할 수 있어요.

스택의 장점

이렇게 스택으로 실행 환경을 분리하면 이런 이점이 생겨요.

  • 환경 유연성 — 개발 중에는 로컬, 프로덕션에서는 클라우드에서 같은 코드 실행
  • 인프라 분리 — 파이프라인 코드를 고치지 않고 인프라만 교체
  • 전문 자원 활용 — 워크플로의 각 측면에 맞는 도구 사용
  • 팀 협업 — 스택 설정을 팀원끼리 공유
  • 재현성 — 환경에 관계없이 일관된 실행

로컬 스택과 클라우드 스택

ZenML을 시작하면 기본으로 로컬 스택을 쓰게 돼요. 추가 설정 없이 로컬 머신으로 오케스트레이션과 저장을 해요. 프로젝트가 커지면 클라우드 스택을 배포해서 더 큰 워크로드와 팀 협업을 처리할 수 있어요. 스택은 CLI로 등록·관리할 수 있는데, 예를 들어 zenml stack register로 새 스택을 등록하고 zenml stack set-default로 기본 스택을 바꿀 수 있어요.

더 알아보기