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