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.