본문으로 건너뛰기

Metaflow

개요

MetaflowNetflix에서 ML 워크플로우를 생성하고 실행하기 위해 만든 프레임워크입니다.

이 인테그레이션은 사용자가 Metaflow steps and flows에 데코레이터를 적용하여 파라미터와 아티팩트를 W&B에 자동으로 로그할 수 있게 해줍니다.

  • 스텝을 데코레이팅하면 해당 스텝 내 특정 유형에 대해 로깅을 활성화하거나 비활성화합니다.
  • 플로우를 데코레이팅하면 플로우의 모든 스텝에 대해 로깅을 활성화하거나 비활성화합니다.

퀵스타트

W&B 설치 및 로그인

!pip install -Uqqq metaflow fastcore wandb

import wandb
wandb.login()

플로우와 스텝 데코레이트하기

스텝을 데코레이팅하면 해당 스텝 내 특정 유형에 대해 로깅을 활성화하거나 비활성화합니다.

이 예시에서, start의 모든 데이터셋과 모델이 로그됩니다

from wandb.integration.metaflow import wandb_log

class WandbExampleFlow(FlowSpec):
@wandb_log(datasets=True, models=True, settings=wandb.Settings(...))
@step
def start(self):
self.raw_df = pd.read_csv(...). # pd.DataFrame -> 데이터셋으로 업로드
self.model_file = torch.load(...) # nn.Module -> 모델로 업로드
self.next(self.transform)

내 데이터는 어디에 있나요? 프로그래밍 방식으로 엑세스할 수 있나요?

로그된 정보는 세 가지 방법으로 엑세스할 수 있습니다: 로그되고 있는 원본 Python 프로세스 내에서 wandb 클라이언트 라이브러리를 사용하여, 웹 앱 UI를 통해, 또는 공개 API를 사용하여 프로그래밍 방식으로 엑세스할 수 있습니다. Parameters는 W&B의 config에 저장되며 Overview 탭에서 찾을 수 있습니다. datasets, models, othersW&B Artifacts에 저장되며 Artifacts 탭에서 찾을 수 있습니다. 기본 Python 타입은 W&B의 summary dict에 저장되며 Overview 탭에서 찾을 수 있습니다. API를 사용하여 외부에서 프로그래밍 방식으로 이 정보를 얻는 방법에 대한 자세한 내용은 공개 API 가이드를 참조하세요.

여기에 요약본이 있습니다:

데이터클라이언트 라이브러리UI
Parameter(...)wandb.configOverview 탭, 설정
datasets, models, otherswandb.use_artifact("{var_name}:latest")Artifacts 탭
기본 Python 타입 (dict, list, str, 등.)wandb.summaryOverview 탭, 요약

wandb_log kwargs

kwarg옵션
datasets
  • True: 데이터셋인 인스턴스 변수를 로그합니다
  • False
models
  • True: 모델인 인스턴스 변수를 로그합니다
  • False
others
  • True: 피클로 직렬화 가능하고 직렬화 가능한 다른 모든 것을 로그합니다
  • False
settings
  • wandb.Settings(...): 이 스텝이나 플로우에 대한 자신의 wandb 설정을 지정합니다
  • None: wandb.Settings()을 전달하는 것과 동일합니다

기본적으로, 만약:

  • settings.run_groupNone이면, {flow_name}/{run_id}로 설정됩니다
  • settings.run_job_typeNone이면, {run_job_type}/{step_name}로 설정됩니다

자주 묻는 질문

정확히 무엇을 로그하나요? 모든 인스턴스와 로컬 변수를 로그하나요?

wandb_log는 인스턴스 변수만 로그합니다. 로컬 변수는 절대 로그되지 않습니다. 이는 불필요한 데이터를 로깅하지 않기 위해 유용합니다.

어떤 데이터 타입이 로그되나요?

현재 이러한 타입을 지원합니다:

로깅 설정타입
기본 (항상 켜짐)
  • dict, list, set, str, int, float, bool
datasets
  • pd.DataFrame
  • pathlib.Path
models
  • nn.Module
  • sklearn.base.BaseEstimator
others

로깅 행동의 예시

변수 종류행동예시데이터 타입
인스턴스자동 로깅self.accuracyfloat
인스턴스datasets=True일 때 로깅self.dfpd.DataFrame
인스턴스datasets=False일 때 로깅 안 함self.dfpd.DataFrame
로컬절대 로그되지 않음accuracyfloat
로컬절대 로그되지 않음dfpd.DataFrame

이것은 아티팩트 계보를 추적하나요?

예! 단계 A의 출력이자 단계 B의 입력인 아티팩트가 있는 경우, 자동으로 계보 DAG를 구성해 줍니다.

이 행동의 예시는 이 노트북과 해당하는 W&B Artifacts 페이지에서 확인할 수 있습니다.

Was this page helpful?👍👎