Metaflow
4 minute read
개요
Metaflow는 ML 워크플로우를 생성하고 실행하기 위해 Netflix에서 만든 프레임워크입니다.
이 인테그레이션을 통해 사용자는 Metaflow 단계 및 흐름에 데코레이터를 적용하여 파라미터와 Artifacts를 W&B에 자동으로 기록할 수 있습니다.
- 단계를 데코레이팅하면 해당 단계 내의 특정 유형에 대한 로깅이 켜지거나 꺼집니다.
- 흐름을 데코레이팅하면 흐름의 모든 단계에 대한 로깅이 켜지거나 꺼집니다.
퀵스타트
가입 및 API 키 생성
API 키는 사용자의 장치를 W&B에 인증합니다. 사용자 프로필에서 API 키를 생성할 수 있습니다.
- 오른쪽 상단 모서리에 있는 사용자 프로필 아이콘을 클릭합니다.
- User Settings를 선택한 다음 API Keys 섹션으로 스크롤합니다.
- Reveal을 클릭합니다. 표시된 API 키를 복사합니다. API 키를 숨기려면 페이지를 새로 고칩니다.
wandb 라이브러리 설치 및 로그인
wandb 라이브러리를 로컬에 설치하고 로그인하려면:
- 
WANDB_API_KEY환경 변수를 API 키로 설정합니다.export WANDB_API_KEY=<your_api_key>
- 
wandb라이브러리를 설치하고 로그인합니다.pip install -Uqqq metaflow fastcore wandb wandb login
pip install -Uqqq metaflow fastcore wandb
import wandb
wandb.login()
!pip install -Uqqq metaflow fastcore wandb
import wandb
wandb.login()
흐름 및 단계 데코레이팅
단계를 데코레이팅하면 해당 단계 내의 특정 유형에 대한 로깅이 켜지거나 꺼집니다.
이 예에서는 start의 모든 데이터셋과 Models가 기록됩니다.
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 -> upload as dataset
        self.model_file = torch.load(...)  # nn.Module    -> upload as model
        self.next(self.transform)
흐름을 데코레이팅하는 것은 구성 단계를 모두 기본값으로 데코레이팅하는 것과 같습니다.
이 경우 WandbExampleFlow의 모든 단계는 기본적으로 데이터셋과 Models를 기록하도록 기본 설정되어 있습니다. 이는 각 단계를 @wandb_log(datasets=True, models=True)로 데코레이팅하는 것과 같습니다.
from wandb.integration.metaflow import wandb_log
@wandb_log(datasets=True, models=True)  # decorate all @step 
class WandbExampleFlow(FlowSpec):
    @step
    def start(self):
        self.raw_df = pd.read_csv(...).    # pd.DataFrame -> upload as dataset
        self.model_file = torch.load(...)  # nn.Module    -> upload as model
        self.next(self.transform)
흐름을 데코레이팅하는 것은 모든 단계를 기본값으로 데코레이팅하는 것과 같습니다. 즉, 나중에 다른 @wandb_log로 단계를 데코레이팅하면 흐름 수준 데코레이션이 재정의됩니다.
이 예에서:
- start및- mid는 데이터셋과 Models를 모두 기록합니다.
- end는 데이터셋과 Models를 모두 기록하지 않습니다.
from wandb.integration.metaflow import wandb_log
@wandb_log(datasets=True, models=True)  # same as decorating start and mid
class WandbExampleFlow(FlowSpec):
  # this step will log datasets and models
  @step
  def start(self):
    self.raw_df = pd.read_csv(...).    # pd.DataFrame -> upload as dataset
    self.model_file = torch.load(...)  # nn.Module    -> upload as model
    self.next(self.mid)
  # this step will also log datasets and models
  @step
  def mid(self):
    self.raw_df = pd.read_csv(...).    # pd.DataFrame -> upload as dataset
    self.model_file = torch.load(...)  # nn.Module    -> upload as model
    self.next(self.end)
  # this step is overwritten and will NOT log datasets OR models
  @wandb_log(datasets=False, models=False)
  @step
  def end(self):
    self.raw_df = pd.read_csv(...).    
    self.model_file = torch.load(...)
프로그램 방식으로 데이터에 액세스
wandb 클라이언트 라이브러리를 사용하여 기록 중인 원래 Python 프로세스 내부, 웹 앱 UI 또는 Public API를 사용하여 프로그램 방식으로 캡처한 정보에 액세스할 수 있습니다. Parameter는 W&B의 config에 저장되며 Overview 탭에서 찾을 수 있습니다. datasets, models 및 others는 W&B Artifacts에 저장되며 Artifacts 탭에서 찾을 수 있습니다. 기본 Python 유형은 W&B의 summary 사전에 저장되며 Overview 탭에서 찾을 수 있습니다. API를 사용하여 외부에서 이 정보를 프로그램 방식으로 가져오는 방법에 대한 자세한 내용은 Public API 가이드를 참조하십시오.
빠른 참조
| 데이터 | 클라이언트 라이브러리 | UI | 
|---|---|---|
| Parameter(...) | wandb.config | Overview 탭, Config | 
| datasets,models,others | wandb.use_artifact("{var_name}:latest") | Artifacts 탭 | 
| 기본 Python 유형 ( dict,list,str, etc.) | wandb.summary | Overview 탭, Summary | 
wandb_log kwargs
| kwarg | 옵션 | 
|---|---|
| datasets | 
 | 
| models | 
 | 
| others | 
 | 
| settings | 
 기본적으로: 
 | 
자주 묻는 질문
정확히 무엇을 기록합니까? 모든 인스턴스 및 로컬 변수를 기록합니까?
wandb_log는 인스턴스 변수만 기록합니다. 로컬 변수는 절대 기록되지 않습니다. 이는 불필요한 데이터 로깅을 피하는 데 유용합니다.
어떤 데이터 유형이 기록됩니까?
현재 다음과 같은 유형을 지원합니다.
| 로깅 설정 | 유형 | 
|---|---|
| 기본값 (항상 켜짐) | 
 | 
| datasets | 
 | 
| models | 
 | 
| others | 
 | 
로깅 행동을 어떻게 구성할 수 있습니까?
| 변수 종류 | 행동 | 예 | 데이터 유형 | 
|---|---|---|---|
| 인스턴스 | 자동 기록 | self.accuracy | float | 
| 인스턴스 | datasets=True인 경우 기록 | self.df | pd.DataFrame | 
| 인스턴스 | datasets=False인 경우 기록 안 함 | self.df | pd.DataFrame | 
| 로컬 | 절대 기록 안 함 | accuracy | float | 
| 로컬 | 절대 기록 안 함 | df | pd.DataFrame | 
Artifact 계보가 추적됩니까?
예. Artifact가 A 단계의 출력이고 B 단계의 입력인 경우 계보 DAG가 자동으로 구성됩니다.
이 행동의 예는 이 노트북과 해당 W&B Artifacts 페이지를 참조하십시오.
[i18n] feedback_title
[i18n] feedback_question
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.