Skip to main content

W&B Models 완전 활용 가이드 1: 실험 관리부터 리포트 자동화까지

This reports shows some advanced tips to use wandb
Created on May 8|Last edited on June 9
이 게시물에서는 단순한 실험관리를 넘어 편리하게 사용할 수 있는 W&B Models의 기능을 소개합니다. W&B Models를 아직 사용해보지 않으신 분이나, 사용하신지 얼마 안된 초심자분들은 "W&B 퀵스타트" 를 참고해주세요.



Experiment Tracking

팀내 공동 프로젝트 생성

wandb의 실험은 엔티티 → 프로젝트 → 실행(Run) 순으로 구성되어 관리됩니다. 엔티티는 팀 단위를 의미하며, 기본적으로는 개인 전용 엔티티가 생성되지만 팀용 엔티티를 만들어 여러 사람이 같은 프로젝트를 함께 관리할 수 있습니다. 개인 또는 학술 용도로 사용하는 경우에는 기본 개인 엔티티 외에 하나의 추가 엔티티에만 참여할 수 있습니다. 엔티티 아래에는 프로젝트가 있으며, 하나의 머신러닝 또는 딥러닝 프로젝트 단위로 활용하면 됩니다. 각 프로젝트 내에서는 여러 번의 실험을 수행하게 되는데, 이때 실행되는 각각의 실험이 Run으로 기록됩니다. 엔티티와 프로젝트는 사용자가 직접 생성해야 하며, Run은 코드를 실행할 때마다 자동으로 생성됩니다.


wandb.init() 호출과 관련한 편리한 arguments

wandb.init()으로 초기화할 때 다양한 인자를 설정하면, 대시보드에서 Run을 더 보기 쉽게 만들 수 있고, 실험을 필터링할 때도 유용하게 활용할 수 있습니다.
미리 설정해두면 좋은 주요 인자들
  • job_type: "training"이나 "evaluation"처럼 작업의 종류를 지정해두면, 나중에 Run 테이블을 볼 때 어떤 실험을 수행했는지 쉽게 파악할 수 있습니다.
wandb에 기록된 정보는 대부분 실험의 재현성을 위해 수정이 불가능하지만, 아래 항목들은 나중에 변경할 수 있습니다. 처음부터 입력해두면 이후에 더 유연하게 관리할 수 있습니다.
  • tags: 베이스라인 실험이나 중요한 Run에 태그를 달아두면, 나중에 필터링이나 검색 시 유용하게 쓸 수 있습니다.
  • notes: 간단한 메모나 커밋 메시지를 남길 수 있는 항목으로, 이후 W&B 대시보드의 개요 섹션에서 수정할 수 있으며, 초기화 시점에 함께 입력하는 것이 좋습니다.
import wandb

config = dict (
learning_rate = 0.01,
momentum = 0.2,
architecture = "CNN",
dataset_id = "cats-0192"
)
with wandb.init(project="detect-cats",
notes="change learning late",
tags=["baseline","test"],
job_type="training",
config=config) as run:
config = wandb.config
...
run.log()
...


wandb.finish()대신 with문을 사용합시다.

wandb.init() 이후에 오류가 발생하면 wandb.finish()가 실행되지 않아, 실험 결과가 wandb에 기록되지 않거나 다음에 wandb.init()을 다시 호출할 때 오류가 발생할 수 있습니다. 이때 with문을 사용하면, 오류가 나더라도 wandb.finish()를 따로 호출하지 않아도 wandb의 로깅 프로세스가 정상적으로 종료되며 필요한 정보가 안전하게 기록됩니다.
with wandb.init(project="detect-cats",
notes="change learning late",
tags=["baseline","test"],
job_type="training",
config=config) as run:
config = wandb.config
...
run.log()
...

wandb.summary() 로 중요한 정보를 기록합니다.

스칼라 형태의 메트릭은 wandb.log에 딕셔너리 형태로 넘겨주면 자동으로 기록됩니다.
wandb.log({"my_metric": some_scalar_value})
wandb.log를 호출할 때마다 W&B에서는 내부적으로 step이라는 변수를 하나씩 증가시키며, 이는 모든 시계열 차트에서 X축으로 사용됩니다. 예를 들어 에포크마다 wandb.log를 호출하면 step은 에포크 수를 의미하지만, 검증이나 테스트 루프에서 따로 호출할 경우에는 이 값이 혼란스러울 수 있습니다. 이럴 땐 step=my_int_variable을 직접 명시해주면 원하는 기준으로 차트를 만들 수 있어 유용합니다.
이제 핵심입니다. 실행 중 스칼라 메트릭을 여러 번 기록하면, wandb는 이를 X축이 step인 선 그래프로 시각화하며, 마지막에 기록된 값이 기본적으로 Runs Table의 요약 메트릭으로 표시됩니다. 하지만 꼭 마지막 값만 보여주고 싶지 않다면, run.summary["my_metric_name"] = some_value처럼 명시적으로 설정할 수 있습니다. 이렇게 하면 원하는 특정 값을 요약 정보로 저장할 수 있어 더 유연하게 활용할 수 있습니다.
wandb.init()

for i in range(5):
wandb.log({"my_metric": i})

wandb.summary["my_metric"] = 2 # 2 instead of the default 4

wandb.finish()

환경변수의 설정

환경변수를 설정하면 매번 로그인이나 엔티티를 지정할 필요가 없습니다.
WANDB_API_KEY=$YOUR_API_KEY
WANDB_ENTITY=$entity_name
WANDB_PROJECT=$project_name
WANDB_MODE=offline
이외에도 다양한 환경변수가 있습니다. 이곳을 참고해주세요.

Run table의 filter

Run을 tag나 Status등을 통해 filter하는 것이 가능합니다 (참고). 원하는 run들만 볼 수 있기 때문에 굉장히 편리합니다!


Workspace의 view저장

workspace의 view를 저장할 수 있습니다. 매번 view를 ��경할 필요가 없어 매우 편리합니다! (참고)


이메일이나 slack을 이용한 alert 설정

W&B Alerts를 활용하면 Run이 중단되었을 때, 손실 값이 NaN이 되었을 때, 혹은 ML 파이프라인의 특정 단계가 완료되었을 때 등 사용자 정의 조건에 따라 이메일이나 Slack으로 알림을 받을 수 있습니다. 이 기능은 개인 프로젝트와 팀 프로젝트를 포함해 Run이 실행되는 모든 프로젝트에 적용됩니다.
코드에서 이메일이나 Slack으로 알림을 보내기 위해서는 아래 두 가지 단계를 먼저 설정해야 합니다.
1단계: W&B 사용자 설정에서 알림 기능 활성화
사용자 설정 페이지로 이동해 알림(Alert) 섹션을 찾아주세요. wandb.alert()를 통해 스크립트에서 알림을 받을 수 있도록, 실행 가능한 알림 기능을 활성화해야 합니다. W&B 알림 기능을 처음 사용하는 경우이거나, 알림 수신 방법을 변경하고 싶을 때 이 설정이 필요합니다.

Step2: wandb.alert()을 코드에 추가
text = f"Accuracy {acc} is below acceptable threshold {thresh}"
wandb.alert(title="Low accuracy", text=text)
이것으로 alert 설정이 완료되었습니다.
<2025/4/21시점>Multi-tanent SaaS에서는 UI로부터 alert을 설정할 수 있습니다.
💡

Team / Project 를 이용하여 run을 분류하는 방법이 있을까요?

Team과 Project의 활용 방식은 상황에 따라 달라질 수 있지만, 대표적인 예시는 다음과 같습니다.
  • 같은 워크스페이스 내에서 여러 실험 결과를 비교하고 싶다면, 같은 Project에 Run을 모아두는 것이 좋습니다. 서로 다른 Project에 저장하면 직접 비교가 어려워지고, 비교를 위해 W&B Report 기능을 따로 사용해야 할 수도 있습니다. 만약 학습을 자주 반복하는 워크플로우라면 학습마다 별도의 Project를 만들고, 평가용 실험은 XX-eval 같은 이름의 전용 Project를 따로 두는 방식이 효과적입니다. 이렇게 하면 다양한 실험의 평가 결과를 하나의 Project에서 모아보고 비교하기가 쉬워집니다.

Team의 탑페이지

Team마다 자주 사용하는 Project나 Report를 탑페이지에 고정할 수 있습니다.

Run의 Group화

W&B에서는 여러 개의 개별 Run을 하나의 실험으로 묶어서 관리할 수 있는 그룹 기능을 제공합니다.
활용 예시:
  • 분산 학습: 학습과 평가를 다른 스크립트로 실행하더라도, 동일한 그룹명을 지정하면 하나의 실험으로 묶어서 확인할 수 있습니다.
  • 여러 프로세스 실행: 작은 프로세스를 여러 개 실행하더라도, 동일한 그룹으로 묶어 하나의 실험처럼 관리할 수 있습니다.
  • K-Fold 교차 검증: 랜덤 시드를 바꿔 여러 번 실험을 수행할 경우, 각 Run에 동일한 그룹명을 부여하면 전체를 하나의 교차 검증 실험으로 파악할 수 있습니다.
자세한 사용법은 공식 문서를 참고해 주세요.



Artifacts

wandb를 사용한 데이터관리의 기본

W&B Artifacts를 사용하면 데이터의 버전 관리를 체계적으로 할 수 있으며, “이 모델은 어떤 버전의 데이터셋으로 학습된 것인가?“와 같은 질문에 언제든지 정확히 답할 수 있습니다.
아래 다이어그램은 이러한 Artifacts의 전반적인 흐름을 시각적으로 나타낸 것입니다. Artifacts의 기본적인 사용 방식부터 살펴보면, 구조는 매우 단순합니다. 데이터를 저장할 때는 run.log_artifact()를 사용하고, 저장된 데이터를 불러와 사용할 때는 run.use_artifact()를 사용합니다.

아래 스크립트는 기본적인 Artifacts의 사용법입니다. 구체적으로는 공식 도큐멘트를 참조해주세요.
with wandb.init(project="artifacts-example", job_type="add-dataset") as run:
# Create an artifact object with the wandb.Artifact API.
artifact = wandb.Artifact(name="my_data", type="dataset")
# Add one or more files, such as a model file or dataset, to your artifact object.
artifact.add_dir(local_path="./dataset.h5") # Add dataset directory to artifact
# log your artifact to W&B.
run.log_artifact(artifact) # Logs the artifact version "my_data:v0"
Artifacts를 사용하여 자동으로 계보(lineage)를 작성할 수 있습니다. 계보를 통해 어느 모델이 어떤 데이터셋을 이용해 만들어졌는지 등의 정보를 일목요연하게 이해할 수 있습니다.

이어서 몇가지 고급 사용법을 소개합니다.

매번 대용량 데이터를 W&B 서버에 업로드하지 않고도 Reference Artifacts로 데이터를 효율적으로 관리할 수 있습니다!

대용량 데이터를 업로드/다운로드 하지 않고 각 Run에서 어떤 버전의 데이터셋이 사용되었는지, 해당 데이터셋에 어떤 메타데이터가 연결되어 있는지 추적하고 싶을 수 있습니다. 이런 상황에서 유용한 것이 Reference Artifacts입니다. Reference Artifacts는 실제 데이터 전체를 W&B에 업로드하지 않고, 외부 위치(예: S3 경로)에 대한 참조만을 저장하며, 메타데이터만 추적합니다. 덕분에 데이터 복사 없이 가볍고 효율적인 버전 관리가 가능합니다.
이미 S3와 같은 클라우드 오브젝트 스토리지에 대규모 데이터셋이 저장되어 있는 경우와 POSIX 호환 로컬파일시스템을 사용하는 경우, 즉 대부분의 경우 사용할 수 있습니다.
예를 들어, 다음과 같은 구조를 가진 S3 버킷이 있다고 가정해 봅시다:
s3://my-bucket
+-- datasets/
| +-- mnist/
+-- models/
+-- cnn/
MNIST의 하위에는 이미지의 모음으로 구성된 데이터셋이 존재합니다. 이제 이 데이터셋을 Artifacts를 통해 추적해보겠습니다.
import wandb

run = wandb.init()
artifact = wandb.Artifact("mnist", type="dataset")
artifact.add_reference("s3://my-bucket/datasets/mnist")
run.log_artifact(artifact)
이하의 코드를 사용하여 Artifacts를 이용할 수 있습니다.
import wandb

run = wandb.init()
artifact = run.use_artifact("mnist:latest", type="dataset")
artifact_dir = artifact.download()
W&B Artifacts는 MinIO를 포함해 Amazon S3와 호환되는 다양한 오브젝트 스토리지 인터페이스를 지원합니다. AWS_S3_ENDPOINT_URL환경변수를 MinIO서버로 지정하면 해당 스토리지를 정상적으로 참조할 수 있습니다.
💡
Reference artifacts에 대해서 배우고 싶으신 분들은 공식 도큐멘트나 아래 레포트를 참조해주십시오.


중복없이 새로운 버전의 데이터를 추가하는 효율적인 관리 방법

같은 이름의 아티팩트를 사용하면 W&B는 자동으로 v1, v2, ... 와 같은 버전 넘버를 붙여가며 아티팩트의 버전을 관리해 줍니다.

가장 기본적인 방식부터 살펴보면, 전체 파일을 포함한 새로운 아티팩트 버전을 아래처럼 간단하게 등록할 수 있습니다.
# run 중에 사용하는 방법
with wandb.init() as run:
artifact = wandb.Artifact("artifact_name", "artifact_type")

# Add Files and Assets to the artifact using
# `.add`, `.add_file`, `.add_dir`, and `.add_reference`
artifact.add_file("image1.png")
run.log_artifact(artifact)


# run 밖에서 사용하는 방
artifact = wandb.Artifact("artifact_name", "artifact_type")
# Add Files and Assets to the artifact using
# `.add`, `.add_file`, `.add_dir`, and `.add_reference`
artifact.add_file("image1.png")
artifact.save()
사실, 모든 파일을 업로드하지 않고 이전 버전과 비교해 차이가 나는 부분만 등록하는 방법도 있습니다. 이전 아티팩트 버전에서 일부 파일을 추가, 변경 또는 삭제할 때, 변경되지 않은 파일을 다시 인덱싱할 필요도 없습니다. W&B는 자동으로 이전 버전과의 차이를 감지해, 필요한 변경사항만 반영된 새로운 아티팩트 (incremental artifact) 버전을 만들어줍니다.

이하는 incremental artifact의 실행 플로우입니다. 자세한 내용은 공식 도큐멘트를 확인해주세요.
# WandB Public API를 사용하여 incremental 변경을 실행할 아티팩트 버전을 가져옵니다.
client = wandb.Api()
saved_artifact = client.artifact("my_artifact:latest")

# 이하와 같이 드래프트를 작성합니다.
draft_artifact = saved_artifact.new_draft()

# 새 버전에서 보고 싶은 임의의 incremental 변경을 실행합니다. 기존의 데이터를 추가, 삭제, 또는 변경하는 것이 가능합니다.
## add
draft_artifact.add_file("file_to_add.txt")
## remove
draft_artifact.remove("file_to_remove.txt")
## modify
draft_artifact.remove("modified_file.txt")
draft_artifact.add_file("modified_file.txt")

# 마지막으로, 변경을 기록 또는 저장합니다.이하의 두 줄은 W&B run의 안팎으로 변경을 보존하는 방법을 의미합니다.
## run 안에 실행
run.log_artifact(draft_artifact)

## run 밖에 실행
draft_artifact.save()


분산 학습에서의 Artifacts 관리

분산처리 등으로 여러 개의 run들이 동시에 실행될 때, 이들 run들이 협력하여 하나의 아티팩트 버전을 공동으로 생성할 수 있습니다. 이때는 "협업모드"를 사용하여 아래 두가지 핵심 사항을 이해하고 있어야 합니다.
  • 모든 Run은 동일한 버전을 함께 작업하고 있다는 것을 인식해야 하며, 이를 위해 동일한 고유 ID 인 distributed_id를 공유해야 합니다. 기본적으로 W&B는 wandb.init(group=GROUP)에서 지정한 run이 group을 idstributed_id로 사용합니다(지정된 경우에 한해).
  • 최종적으로 아티팩트를 "커밋"하여 상태를 고정하는 Run이 하나 필요합니다.
    • 예를 들어 Run1, Run2, Run3가 있다면, 각각이 공동으로 아티팩트를 업데이트하며 작업하고, 마지막 Run3이 이전의 Run들의 작업을 종합해 아티팩트를 커밋하게 됩니다. 이 흐름에서는 log_artifact 대신 upsert_artifact를 사용해 중간 데이터를 반영하고, 마지막에 finish_artifact를 호출해 최종 아티팩트를 커밋합니다. 커밋을 담당하는 Run에서는 아티팩트에 파일을 추가할 수도 있지만, 꼭 추가할 필요는 없습니다.
###### Run1 ######
with wandb.init() as run:
artifact = wandb.Artifact("artifact_name", "artifact_type")
# 아티팩트에 파일이나 어셋을 추가하는 방법은
# `.add`, `.add_file`, `.add_dir`, 그리고 `.add_reference` 를 사용합니다.
artifact.add_file("image1.png")
run.upsert_artifact(artifact, distributed_id="my_dist_artifact")



###### Run2 ######
with wandb.init() as run:
artifact = wandb.Artifact("artifact_name", "artifact_type")
# 아티팩트에 파일이나 어셋을 추가하는 방법은
# `.add`, `.add_file`, `.add_dir`, 그리고 `.add_reference` 를 사용합니다.
artifact.add_file("image2.png")
run.upsert_artifact(artifact, distributed_id="my_dist_artifact")



###### Run3 ######
with wandb.init() as run:
artifact = wandb.Artifact("artifact_name", "artifact_type")
# 아티팩트에 파일이나 어셋을 추가하는 방법은
# `.add`, `.add_file`, `.add_dir`, 그리고 `.add_reference` 를 사용합니다.
artifact.add_file("image3.png")
run.finish_artifact(artifact, distributed_id="my_dist_artifact")
위의 WandB의 아티팩트를 최대한 효과적으로 활용하여 머신러닝 프로젝트에서 개인에게 의존하지 않는 체계적인 데이터 관리를 구현할 수 있습니다!

Table

wandb를 사용한 가시화의 기본

W&B Table을 사용하면 표 형태의 데이터를 시각적으로 확인하고, 다양한 쿼리를 실행할 수 있습니다. 아래 예시는 세만틱 세그멘테이션 결과와 커스텀 메트릭이 포함된 테이블의 예시입니다. 이 테이블은 W&B의 머신러닝 교육 과정에 포함된 샘플 프로젝트에서 생성된 것으로, 자세한 내용이 궁금하다면 해당 코스를 참고해 보시는 것도 좋습니다. 아래 이미지를 클릭하면, 인터랙티브하게 데이터를 탐색해볼 수 있습니다.

Run set
25

기본적인 사용방법은 아래와 같습니다.
W&B Table은 2차원 그리드 형태로 구성된 데이터 구조이며, 각 열에는 하나의 데이터 타입만 포함됩니다. 단순한 숫자나 문자열뿐만 아니라, 중첩된 리스트나 딕셔너리 같은 구조화된 데이터와 이미지, 오디오 등 다양한 리치 미디어 타입도 함께 지원합니다.
# Pattern1
with wandb.init(project="table-test") as run:
# wandb.Table(): Create a new table object.
my_table = wandb.Table(columns=["a", "b"], data=[["a1", "b1"], ["a2", "b2"]])
# run.log(): Log the table to save it to W&B.
run.log({"Table Name": my_table})

# Pattern2
with wandb.init(project="table-test") as run:
my_table = wandb.Table(columns=["Image", "A", "B"])
my_table.add_data(wandb.Image(image), <value>, <value>)

# Pattern3
with wandb.init(project="table-test") as run:
df = pd.read_csv("my_data.csv")
my_table = wandb.Table(dataframe=df)
wandb.log({"Table Name": my_table})


멀티 미디어의 가시화와 샘플 코드

W&B Table은 일반적인 정적 이미지뿐 아니라, 마스크나 바운딩 박스 같은 정보를 함께 저장하고, 각 클래스별로 표시 여부를 전환할 수 있는 이미지 오버레이 기능도 제공합니다. 이 외에도 3D 포인트 클라우드, 분자 구조, 단백질의 3차원 구조, Matplotlib이나 Plotly로 만든 그래프, 비디오, 오디오 등 다양한 포맷을 폭넓게 지원합니다. 아래 레포트는 음성 및 이미지 생성 프로젝트에서 Tables를 어떻게 활용할 수 있는지를 보여주는 예시입니다. 특히 오디오는 Table 내에서 직접 재생해볼 수 있으니 꼭 확인해보세요.

위와 같은 유용한 시각화를 어떻게 구현해야 할지 잘 감이 오지 않는 분들도 계실 수 있습니다. 아래에 대표적인 활용 사례와 함께, 관련 코드 예제가 포함된 링크들을 정리해두었으니 참고해 주세요.

필터링, 그룹핑, 소팅등은 당연하고, 쿼리까지 작성할 수 있습니다!

W&B Table은 필터, 그룹, 정렬 같은 기능을 인터랙티브하게 사용할 수 있어 데이터를 자유롭게 탐색할 수 있습니다. 아래 예시는 서로 다른 타겟 값에 따라 변수의 분포가 어떻게 달라지는지를 분석한 사례입니다. 이런 기능을 활용하면 데이터셋 내의 특정 패턴이나 관계를 시각적으로 파악하고, 더 깊이 있는 인사이트를 얻을 수 있습니다. 예를 들어, 특정 타겟 값에 대해 어떤 변수가 어떻게 분포하는지를 확인함으로써, 모델 학습이나 피처 엔지니어링 단계에서 중요한 정보를 발견할 수 있습니다.
또한 W&B Table은 쿼리 문법을 이용한 조건 검색도 지원합니다. 사용 가능한 쿼리 목록은 이 레포트를 참고해 주세요.

Run set
40


Tables을 Artifacts로 저장하기

W&B의 아티팩트처럼, W&B Table 역시 pandas 데이터프레임으로 쉽게 변환하여 내보낼 수 있습니다. 이 기능을 사용하면 테이블에 저장된 데이터를 Python의 pandas 라이브러리로 불러와 분석하거나 후처리 작업을 손쉽게 진행할 수 있습니다.
# Create and log a new table.
with wandb.init() as r:
artifact = wandb.Artifact("my_dataset", type="dataset")
table = wandb.Table(
columns=["a", "b", "c"], data=[(i, i * 2, 2**i) for i in range(10)]
)
artifact.add(table, "my_table")
wandb.log_artifact(artifact)

# Retrieve the created table using the artifact you created.
with wandb.init() as r:
artifact = r.use_artifact("my_dataset:latest")
table = artifact.get("my_table")

# Convert artifact to Dataframe
# Then, convert the table into a dataframe:
# Following from the last code example:

df = table.get_dataframe()

Report

결과 공유를 위한 모범 사례

W&B의 Report 기능은 머신러닝 개발 과정에서 팀 간 협업을 크게 향상시켜주는 강력한 도구입니다. 많은 기업들이 이 기능을 적극적으로 활용하고 있으며, 협업과 커뮤니케이션의 모범 사례로 자리잡고 있습니다. 아래는 Cohere가 W&B Report를 활용해 비즈니스 핵심 LLM을 학습하는 방식에 대한 기사 (“How Cohere Trains Business-Critical LLMs with the Help of W&B”) 에서 발췌한 내용입니다.
레포트 기능은 팀 내 지식 공유를 용이하게 하고, 비기술적 이해관계자와의 소통에 도움이 될 뿐만 아니라 회사 내 암묵적 지식을 저장하여 향후 참조할 수 있도록 도와줍니다. "Report 기능은 우리 팀에게 정말 유용한 도구에요," 라고 Cohere의 Elie는 말합니다. "기술적인 내용을 비전문가팀에게도 매끄럽고 쉽게 전달할 수 있게 해주죠."

Report가 제공하는 가치

  • 실시간 데이터 공유: 생성한 그래프나 테이블을 그대로 Report에 포함시킬 수 있어 최신 결과를 바로 보여줄 수 있습니다.
  • 추적 가능성(Traceability): 실험 결과와 관련된 프로젝트, 스크립트 등을 함께 기록할 수 있어 커뮤니케이션 비용은 줄이고 재현성은 높일 수 있습니다.
  • 자동화 가능: Python 코드로 Report를 생성할 수 있어 결과 문서화에 드는 시간을 크게 줄일 수 있습니다.

사용법은 매우 간단합니다.


  1. W&B 앱에서 원하는 프로젝트 워크스페이스에 접속합니다.
  2. 오른쪽 상단의 “Create report” 버튼을 클릭합니다.
  3. 팝업창에서 Report에 포함할 차트나 패널을 선택합니다. (나중에 수정 가능)
  4. “Create report” 버튼을 눌러 Report를 생성합니다.
  5. 원하는 형태로 Report를 편집합니다.
  6. “Publish to project” 버튼을 눌러 프로젝트에 게시합니다.
  7. “Share” 버튼을 통해 팀원들과 공유합니다.
실제로 이 문서또한 wandb의 레포트를 이용하여 만들었습니다. 팀간 협업과 지식공유를 위해 레포트를 사용해보세요!

다른 프로젝트의 결과를 하나의 리포트에서 보여주는 방법

Method 1 : 대시보드에서 추가하기

각 테이블 또는 차트 우측 상단의 “More actions” 메뉴에서 “Add to report”를 클릭하면, 새로운 리포트를 생성하거나 기존 리포트에 해당 요소를 추가할 수 있습니다. 이 방법을 활용하면 서로 다른 프로젝트에 있는 결과들도 하나의 레포트에 모아서 시각화할 수 있습니다.

"Add to report"를 클릭한 후에는 결과를 저장할 리포트를 선택하면 됩니다.


Method 2 : Reports에서 추가하기

리포트 내부에서 각 패널의 “Run set” 설정을 통해 다른 프로젝트를 선택할 수 있습니다. 예를 들어, wandb-korea/basic-project와 같은 프로젝트 경로를 클릭하여 원하는 프로젝트의 실험 데이터를 지정하면 됩니다.
이 기능을 이용하면 서로 다른 프로젝트의 데이터를 하나의 리포트에서 나란히 비교하거나 분석할 수 있어 매우 유용합니다. 패널 단위로 필요한 프로젝트의 Run을 선택할 수 있기 때문에, 보다 세밀하고 포괄적인 시각화가 가능합니다.


결과 공유, 권한 관리, 댓글을 통한 협업

작성한 리포트는 적절한 권한 설정을 통해 팀 동료는 물론, 필요에 따라 외부 기술자나 클라이언트와도 공유할 수 있습니다. 예를 들어, 내부 공유의 경우 개발팀의 주간 리포트로 활용할 수 있고, 외부와의 협업 상황에서는 공동 연구의 진행 상황을 공유하거나 기술 튜토리얼 형태로 제공하는 것도 가능합니다. 또한, 외부 업체와 협업할 때 W&B를 활용하면, 자사에서 데이터를 보존하면서도 리포트를 통해 주기적인 결과 공유를 받을 수 있는 형태로 활용할 수 있습니다.
리포트에는 댓글 기능도 제공되어, 팀원 간 실험 결과에 대해 자유롭게 의견을 주고받으며 협업을 활성화할 수 있습니다. 이처럼 실험과 관련된 논의가 리포트에 함께 기록되면, 개발 진행 상황에 대한 비공식적인 히스토리까지 함께 추적할 수 있어 더욱 투명하고 체계적인 관리가 가능합니다.

Python API를 이용한 레포트의 자동생성

W&B Reports는 Python API도 지원하기 때문에, 예를 들어 실험이 종료된 후 자동으로 리포트를 생성하거나 업데이트하는 자동화도 가능합니다. 이 기능을 활용하면 정기적인 실험 결과 공유나, 대규모 실험 데이터를 기반으로 한 레포트 작성에 드는 수고를 크게 줄일 수 있습니다.
아래는 Panel Grid에 선 그래프와 산점도를 배치한 예시인데, 이처럼 각 블록을 리스트 형태로 나열하면서 직관적으로 구성할 수 있습니다. 빠르게 시작해볼 수 있는 Colab 예제도 준비되어 있으니, 직접 활용해 보시길 추천드립니다.
import wandb
import wandb.apis.reports as wr

report = wr.Report(
project="report-editing",
title="An amazing title",
description="A descriptive description.",
)

blocks = [
wr.PanelGrid(
panels=[
wr.LinePlot(x="time", y="velocity"),
wr.ScatterPlot(x="time", y="acceleration"),
]
)
]

report.blocks = blocks
report.save()

Report 내 Run set 필터링

예를 들어 Horangi LLM 리더보드 3와 같이, 리포트에 포함된 Run Set에서 특정 결과만 선택적으로 표시하거나 숨기는 방식으로 원하는 실험 결과를 인터랙티브하게 비교할 수 있습니다.


Other

Experiment Tracking 이외에도 Sweeps, Registry, Automation 등의 기능이 있습니다. 공식 도큐멘테이션을 확인해주세요!
Tags: Articles
Iterate on AI agents and models faster. Try Weights & Biases today.