W&B는 _lineage graph_라고 불리는 방향 비순환 그래프(DAG)를 사용하여 run 입력과 출력을 추적합니다. 계보 그래프는 ML 실험에서 아티팩트와 run 간 관계를 시각적으로 표현한 것입니다. 이 그래프는 원시 데이터 수집부터 모델 트레이닝과 평가에 이르기까지, 데이터와 모델이 ML 라이프사이클의 여러 단계를 거치며 어떻게 흐르는지를 보여 줍니다.
아티팩트 계보를 추적하면 다음과 같은 주요 이점이 있습니다:
- 재현성: 디버깅, 실험, 검증을 위해 실험, 모델, 결과를 다시 생성할 수 있도록 해 줍니다.
- 버전 관리: 아티팩트의 시간에 따른 변경 사항을 추적하여, 필요할 때 이전 데이터나 모델 버전으로 되돌릴 수 있게 해 줍니다.
- 감사: 규정 준수 및 거버넌스를 지원하기 위해 아티팩트와 변환 내역을 상세하게 기록합니다.
- 협업: 실험 이력을 투명하게 만들어 중복 작업을 줄이고 개발 속도를 높여, 팀 간 협업과 팀워크 향상에 도움이 됩니다.
아티팩트의 lineage 그래프를 보려면:
- W&B App으로 이동합니다.
- 탐색하려는 run 또는 아티팩트가 포함된 프로젝트를 선택합니다.
- 프로젝트 사이드바에서 Artifacts 탭을 클릭합니다.
- Lineage 탭을 선택합니다.
라인리지 그래프 추적을 활성화하려면 W&B Python SDK를 사용해서 아티팩트를 run의 입력 또는
출력으로 지정해야 합니다.
wandb.Run.use_artifact()
메서드를 사용해서 아티팩트를 run의 입력(또는 의존성)으로 지정합니다. 아티팩트의 이름과, 해당 아티팩트의 특정 버전을 참조하기 위한 선택적 별칭(alias)을 지정합니다. 아티팩트 이름 형식은 <artifact_name>:<version> 또는 <artifact_name>:<alias>입니다.
꺾쇠 괄호(< >)로 둘러싸인 값을 사용자 값으로 바꾸세요:
import wandb
# run 초기화
with wandb.init(entity="<entity>", project="<project>") as run:
# 아티팩트 가져오기, 의존성으로 표시
artifact = run.use_artifact(artifact_or_name="<name>", aliases="<alias>")
wandb.Run.log_artifact()를 사용해 아티팩트를 run의 출력으로 지정합니다. 먼저
wandb.Artifact() 생성자를 사용해 아티팩트를 생성합니다. 그런 다음
wandb.Run.log_artifact()으로 해당 아티팩트를 run의 출력으로 로깅합니다.
꺾쇠 괄호(< >)로 둘러싸인 값을 사용자 값으로 바꾸세요:
import wandb
# run 초기화
with wandb.init(entity="<entity>", project="<project>") as run:
# 아티팩트 생성
artifact = wandb.Artifact(name = "<artifact_name>", type = "<artifact_type>")
artifact.add_file(local_path = "<local_filepath>", name="<optional-name>")
# 아티팩트를 run의 출력으로 로깅
run.log_artifact(artifact_or_path = artifact)
지정한 아티팩트 또는 job 유형이 이름 앞에 표시되며, 아티팩트는 파란 아이콘으로, run은 초록색 아이콘으로 표시됩니다. 그래프의 화살표는 run 또는 아티팩트의 입력과 출력을 나타냅니다.
왼쪽 사이드바와 Lineage 탭 모두에서 아티팩트의 유형과 이름을 확인할 수 있습니다.
더 자세히 보려면 개별 아티팩트나 run을 클릭해 해당 객체에 대한 추가 정보를 확인합니다.
그래프의 한 레벨에 run 또는 아티팩트가 다섯 개 이상 있으면 해당 레벨이 클러스터로 표시됩니다. 클러스터에는 특정 버전의 run 또는 아티팩트를 찾을 수 있는 검색 창이 있으며, 클러스터 안에서 관심 있는 노드를 개별 노드로 꺼내 해당 노드의 계보를 계속 추적할 수 있습니다.
노드를 클릭하면 해당 노드에 대한 개요를 보여주는 미리보기가 열립니다. 화살표를 클릭하면 run 또는 아티팩트를 클러스터에서 분리하여, 분리된 노드의 계보를 더 자세히 살펴볼 수 있습니다.
W&B Python SDK를 사용하여 그래프를 프로그래밍 방식으로 탐색합니다. 아티팩트 객체의 logged_by() 및 used_by() 메서드를 사용해 그래프를 순회하세요:
with wandb.init() as run:
artifact = run.use_artifact("artifact_name:latest")
# 아티팩트에서 그래프를 위아래로 탐색합니다:
producer_run = artifact.logged_by()
consumer_runs = artifact.used_by()