메인 콘텐츠로 건너뛰기
W&B Reports 및 Workspace API는 Public Preview 단계입니다.
App UI를 통해 인터랙티브하게 또는 W&B SDK를 사용하여 프로그래밍 방식으로 Reports를 편집하세요. Reports는 _blocks_로 구성됩니다. 블록은 리포트의 본문을 형성합니다. 이러한 블록 내에 텍스트, 이미지, 임베디드 시각화, 실험 및 run의 플롯, 패널 그리드를 추가할 수 있습니다. _Panel grids_는 패널과 _run sets_를 담는 특정 유형의 블록입니다. Run sets는 W&B의 프로젝트에 로그된 run의 컬렉션입니다. 패널은 run set 데이터의 시각화입니다.
저장된 Workspace 뷰를 생성하고 커스터마이징하는 방법에 대한 단계별 예제는 Programmatic workspaces tutorial을 확인하세요.
프로그래밍 방식으로 리포트를 편집하려면 W&B Python SDK 외에 W&B Reports 및 Workspace API인 wandb-workspaces가 설치되어 있는지 확인하세요:
pip install wandb wandb-workspaces

플롯 추가하기

각 패널 그리드에는 run sets 세트와 패널 세트가 있습니다. 섹션 하단의 run sets는 그리드의 패널에 표시되는 데이터를 제어합니다. 다른 run 세트에서 데이터를 가져오는 차트를 추가하려면 새 패널 그리드를 생성하세요.
리포트에서 슬래시 (/)를 입력하여 드롭다운 메뉴를 표시합니다. Add panel을 선택하여 패널을 추가합니다. 라인 플롯, 산점도 또는 평행 좌표 차트를 포함하여 W&B에서 지원하는 모든 패널을 추가할 수 있습니다.
리포트에 차트 추가

Run sets 추가하기

App UI 또는 W&B SDK를 사용하여 프로젝트의 run sets를 인터랙티브하게 추가하세요.
리포트에서 슬래시 (/)를 입력하여 드롭다운 메뉴를 표시합니다. 드롭다운에서 Panel Grid를 선택합니다. 그러면 리포트가 생성된 프로젝트의 run set를 자동으로 가져옵니다.패널을 리포트로 가져오면 run 이름은 프로젝트에서 상속됩니다. 리포트 내에서 독자에게 더 많은 컨텍스트를 제공하기 위해 선택적으로 run의 이름을 변경할 수 있습니다. run의 이름은 해당 개별 패널에서만 변경됩니다. 동일한 리포트 내에서 패널을 복제하면 복제된 패널에서도 run의 이름이 변경됩니다.
  1. 리포트에서 연필 아이콘을 클릭하여 리포트 편집기를 엽니다.
  2. run set에서 이름을 바꿀 run을 찾습니다. 리포트 이름 위에 마우스를 올리고 세 개의 수직 점을 클릭합니다. 다음 선택지 중 하나를 선택한 다음 양식을 제출합니다.
    • Rename run for project: 전체 프로젝트에 걸쳐 run의 이름을 바꿉니다. 새 임의의 이름을 생성하려면 필드를 비워 둡니다.
    • Rename run for panel grid: 다른 컨텍스트의 기존 이름은 유지한 채, 해당 리포트에서만 run의 이름을 바꿉니다. 새 임의 이름 생성은 지원되지 않습니다.
  3. Publish report를 클릭합니다.

Run set 고정하기 (Freeze)

리포트는 프로젝트의 최신 데이터를 표시하기 위해 run sets를 자동으로 업데이트합니다. run set를 *고정(freezing)*하여 리포트 내의 run set를 보존할 수 있습니다. run set를 고정하면 특정 시점의 리포트 내 run set 상태가 보존됩니다. 리포트를 볼 때 run set를 고정하려면 해당 패널 그리드의 Filter 버튼 근처에 있는 눈송이 아이콘을 클릭하세요.
Runset 고정 버튼

프로그래밍 방식으로 run set 그룹화하기

Workspace and Reports API를 사용하여 프로그래밍 방식으로 run set의 run들을 그룹화하세요. 설정(config) 값, run 메타데이터 또는 요약 메트릭(summary metrics)별로 run을 그룹화할 수 있습니다. 다음 표는 사용 가능한 그룹화 메소드와 해당 메소드에서 사용할 수 있는 키를 나열합니다.
그룹화 메소드설명사용 가능한 키
설정(Config) 값설정 값별로 run 그룹화wandb.init(config=)의 config 파라미터에 지정된 값
Run 메타데이터run 메타데이터별로 run 그룹화State, Name, JobType
요약 메트릭(Summary metrics)요약 메트릭별로 run 그룹화wandb.Run.log()를 통해 run에 기록한 값

설정(Config) 값으로 run 그룹화하기

유사한 설정을 가진 run들을 비교하기 위해 설정 값별로 run을 그룹화합니다. 설정 값은 run 설정 (wandb.init(config=))에서 지정하는 파라미터입니다. 설정 값으로 run을 그룹화하려면 config.<key> 구문을 사용합니다. 여기서 <key>는 그룹화하려는 설정 값의 이름입니다. 예를 들어, 다음 코드 조각은 먼저 group에 대한 설정 값으로 run을 초기화한 다음, group 설정 값을 기반으로 리포트의 run들을 그룹화합니다. <entity><project> 값을 실제 W&B 엔티티 및 프로젝트 이름으로 바꿉니다.
import wandb
import wandb_workspaces.reports.v2 as wr

entity = "<entity>"
project = "<project>"

for group in ["control", "experiment_a", "experiment_b"]:
    for i in range(3):
        # run 초기화 및 config 설정
        with wandb.init(entity=entity, project=project, group=group, config={"group": group, "run": i}, name=f"{group}_run_{i}") as run:
            # 트레이닝 시뮬레이션
            for step in range(100):
                run.log({
                    "acc": 0.5 + (step / 100) * 0.3 + (i * 0.05),
                    "loss": 1.0 - (step / 100) * 0.5
                })
Python 스크립트나 노트북 내에서 config.group 값으로 run을 그룹화할 수 있습니다.
runset = wr.Runset(
  project=project,
  entity=entity,
  groupby=["config.group"]  # "group" 설정 값으로 그룹화
)
이전 예제에 이어 그룹화된 run set가 포함된 리포트를 생성할 수 있습니다.
report = wr.Report(
  entity=entity,
  project=project,
  title="Grouped Runs Example",
)

report.blocks = [
  wr.PanelGrid(
      runsets=[runset],
          )
      ]

report.save()

Run 메타데이터로 run 그룹화하기

run의 이름(Name), 상태(State) 또는 job 유형(JobType)별로 run을 그룹화합니다. 이전 예제에 이어 다음 코드 조각을 사용하여 이름을 기준으로 run을 그룹화할 수 있습니다.
runset = wr.Runset(
  project=project,
  entity=entity,
  groupby=["Name"]  # run 이름으로 그룹화
)
run의 이름은 wandb.init(name=) 파라미터에 지정한 이름입니다. 이름을 지정하지 않으면 W&B가 임의의 이름을 생성합니다.run의 이름은 W&B App의 run Overview 페이지에서 확인하거나 프로그래밍 방식으로 Api.runs().run.name을 통해 찾을 수 있습니다.

요약 메트릭(Summary metrics)으로 run 그룹화하기

다음 예제는 요약 메트릭으로 run을 그룹화하는 방법을 보여줍니다. 요약 메트릭은 wandb.Run.log()를 사용하여 run에 기록하는 값입니다. run을 로그한 후 W&B App의 run Overview 페이지 하단 Summary 섹션에서 요약 메트릭 이름을 찾을 수 있습니다. 요약 메트릭으로 run을 그룹화하는 구문은 summary.<key>이며, 여기서 <key>는 그룹화하려는 요약 메트릭의 이름입니다. 예를 들어, acc라는 요약 메트릭을 로그한다고 가정해 보겠습니다.
import wandb
import wandb_workspaces.reports.v2 as wr

entity = "<entity>"
project = "<project>"

for group in ["control", "experiment_a", "experiment_b"]:
    for i in range(3):
        with wandb.init(entity=entity, project=project, group=group, config={"group": group, "run": i}, name=f"{group}_run_{i}") as run:
            # 트레이닝 시뮬레이션
            for step in range(100):
                run.log({
                    "acc": 0.5 + (step / 100) * 0.3 + (i * 0.05),
                    "loss": 1.0 - (step / 100) * 0.5
                })

그런 다음 summary.acc 요약 메트릭별로 run을 그룹화할 수 있습니다.
runset = wr.Runset(
  project=project,
  entity=entity,
  groupby=["summary.acc"]  # 요약 값으로 그룹화
)

프로그래밍 방식으로 run set 필터링하기

Workspace and Reports API를 사용하여 프로그래밍 방식으로 run sets를 필터링하고 리포트에 추가하세요. 필터 표현식의 일반적인 구문은 다음과 같습니다.
Filter('key') operation <value>
여기서 key는 필터의 이름, operation은 비교 연산자(예: >, <, ==, in, not in, or, and), <value>는 비교할 값입니다. Filter는 적용하려는 필터 유형의 자리표시자입니다. 다음 표는 사용 가능한 필터와 설명을 나열합니다.
필터설명사용 가능한 키
Config('key')설정 값으로 필터링wandb.init(config=)config 파라미터에 지정된 값
SummaryMetric('key')요약 메트릭으로 필터링wandb.Run.log()를 통해 run에 기록한 값
Tags('key')태그로 필터링run에 추가한 태그 값 (프로그래밍 방식 또는 W&B App 사용)
Metric('key')run 속성으로 필터링tags, state, displayName, jobType
필터를 정의한 후 리포트를 생성하고 필터링된 run sets를 wr.PanelGrid(runsets=)에 전달할 수 있습니다. 프로그래밍 방식으로 리포트에 다양한 요소를 추가하는 방법에 대한 자세한 내용은 이 페이지의 Report and Workspace API 탭을 참조하세요. 다음 예제는 리포트에서 run sets를 필터링하는 방법을 보여줍니다. <>로 묶인 값을 실제 값으로 바꾸세요.

Config 필터

하나 이상의 설정 값으로 runset을 필터링합니다. 설정 값은 run 설정(wandb.init(config=))에서 지정하는 파라미터입니다. 예를 들어, 다음 코드 조각은 먼저 learning_ratebatch_size에 대한 설정 값으로 run을 초기화한 다음, learning_rate 설정 값을 기반으로 리포트의 run들을 필터링합니다.
import wandb

config = {
    "learning_rate": 0.01,
    "batch_size": 32,
}

with wandb.init(project="<project>", entity="<entity>", config=config) as run:
    # 트레이닝 코드
    pass
Python 스크립트나 노트북 내에서 learning rate가 0.01보다 큰 run들을 프로그래밍 방식으로 필터링할 수 있습니다.
import wandb_workspaces.reports.v2 as wr

runset = wr.Runset(
  entity="<entity>",
  project="<project>",
  filters="Config('learning_rate') > 0.01"
)
and 연산자를 사용하여 여러 설정 값으로 필터링할 수도 있습니다.
runset = wr.Runset(
  entity="<entity>",
  project="<project>",
  filters="Config('learning_rate') > 0.01 and Config('batch_size') == 32"
)
이전 예제에 이어 필터링된 runset으로 다음과 같이 리포트를 생성할 수 있습니다.
report = wr.Report(
  entity="<entity>",
  project="<project>",
  title="My Report"
)

report.blocks = [
  wr.PanelGrid(
      runsets=[runset],
      panels=[
          wr.LinePlot(
              x="Step",
              y=["accuracy"],
          )
      ]
  )
]

report.save()

Metric 필터

run의 태그(tags), run 상태(state), run 이름(displayName) 또는 job 유형(jobType)을 기반으로 run sets를 필터링합니다.
Metric 필터는 다른 구문을 가집니다. 값 리스트를 리스트 형식으로 전달하세요.
Metric('key') operation [<value>]
예를 들어, 세 개의 run을 생성하고 각각에 이름을 할당하는 다음 Python 조각을 고려해 보세요.
import wandb

with wandb.init(project="<project>", entity="<entity>") as run:
    for i in range(3):
        run.name = f"run{i+1}"
        # 트레이닝 코드
        pass
리포트를 생성할 때 표시 이름(display name)으로 run을 필터링할 수 있습니다. 예를 들어 이름이 run1, run2, run3인 run들을 필터링하려면 다음 코드를 사용할 수 있습니다.
runset = wr.Runset(
  entity="<entity>",
  project="<project>",
  filters="Metric('displayName') in ['run1', 'run2', 'run3']"
)
run의 이름은 W&B App의 run Overview 페이지에서 확인하거나 프로그래밍 방식으로 Api.runs().run.name을 통해 찾을 수 있습니다.
다음 예제는 run의 상태(finished, crashed 또는 running)별로 runset을 필터링하는 방법을 보여줍니다.
runset = wr.Runset(
  entity="<entity>",
  project="<project>",
  filters="Metric('state') in ['finished']"
)
runset = wr.Runset(
  entity="<entity>",
  project="<project>",
  filters="Metric('state') not in ['crashed']"
)

SummaryMetric 필터

다음 예제는 요약 메트릭으로 run set를 필터링하는 방법을 보여줍니다. 요약 메트릭은 wandb.Run.log()를 사용하여 run에 기록하는 값입니다. run을 로그한 후 W&B App의 run Overview 페이지 하단 Summary 섹션에서 요약 메트릭 이름을 찾을 수 있습니다.
runset = wr.Runset(
  entity="<entity>",
  project="<project>",
  filters="SummaryMetric('accuracy') > 0.9"
)
runset = wr.Runset(
  entity="<entity>",
  project="<project>",
  filters="Metric('state') in ['finished'] and SummaryMetric('train/train_loss') < 0.5"
)

Tags 필터

다음 코드 조각은 태그별로 run set를 필터링하는 방법을 보여줍니다. 태그는 (프로그래밍 방식 또는 W&B App을 통해) run에 추가하는 값입니다.
runset = wr.Runset(
  entity="<entity>",
  project="<project>",
  filters="Tags('training') == 'training'"
)

코드 블록 추가하기

App UI를 통해 인터랙티브하게 또는 W&B SDK를 사용하여 리포트에 코드 블록을 추가하세요.
리포트에서 슬래시 (/)를 입력하여 드롭다운 메뉴를 표시합니다. 드롭다운에서 Code를 선택합니다.코드 블록의 오른쪽에서 프로그래밍 언어의 이름을 선택합니다. 그러면 드롭다운이 확장됩니다. 드롭다운에서 프로그래밍 언어 구문을 선택합니다. Javascript, Python, CSS, JSON, HTML, Markdown, YAML 중에서 선택할 수 있습니다.

Markdown 추가하기

App UI를 통해 인터랙티브하게 또는 W&B SDK를 사용하여 리포트에 Markdown을 추가하세요.
리포트에서 슬래시 (/)를 입력하여 드롭다운 메뉴를 표시합니다. 드롭다운에서 Markdown을 선택합니다.

HTML 요소 추가하기

App UI를 통해 인터랙티브하게 또는 W&B SDK를 사용하여 리포트에 HTML 요소를 추가하세요.
리포트에서 슬래시 (/)를 입력하여 드롭다운 메뉴를 표시합니다. 드롭다운에서 텍스트 블록 유형을 선택합니다. 예를 들어, H2 제목 블록을 생성하려면 Heading 2 옵션을 선택합니다.

리치 미디어 링크 임베드하기

App UI 또는 W&B SDK를 사용하여 리포트 내에 리치 미디어를 임베드하세요.
리포트에 URL을 복사하여 붙여넣어 리포트 내에 리치 미디어를 임베드합니다. 다음 애니메이션은 Twitter, YouTube 및 SoundCloud의 URL을 복사하여 붙여넣는 방법을 보여줍니다.

Twitter

Twitter 링크 URL을 리포트에 복사하여 붙여넣어 리포트 내에서 트윗을 봅니다.
Twitter 콘텐츠 임베딩

Youtube

YouTube 비디오 URL 링크를 복사하여 붙여넣어 리포트에 비디오를 임베드합니다.
YouTube 비디오 임베딩

SoundCloud

SoundCloud 링크를 복사하여 붙여넣어 리포트에 오디오 파일을 임베드합니다.
SoundCloud 오디오 임베딩

패널 그리드 복제 및 삭제하기

재사용하고 싶은 레이아웃이 있는 경우, 패널 그리드를 선택하고 복사-붙여넣기하여 동일한 리포트 내에서 복제하거나 다른 리포트에 붙여넣을 수 있습니다. 오른쪽 상단 모서리에 있는 드래그 핸들을 선택하여 전체 패널 그리드 섹션을 강조 표시합니다. 클릭하고 드래그하여 패널 그리드, 텍스트, 제목과 같은 리포트 영역을 강조 표시하고 선택합니다.
패널 그리드 복사하기
패널 그리드를 선택하고 키보드의 delete를 눌러 패널 그리드를 삭제합니다.
패널 그리드 삭제하기

헤더를 접어 Reports 정리하기

텍스트 블록 내의 콘텐츠를 숨기기 위해 리포트의 헤더를 접을 수 있습니다. 리포트를 로드할 때 확장된 헤더만 콘텐츠를 표시합니다. 리포트에서 헤더를 접으면 콘텐츠를 정리하고 과도한 데이터 로딩을 방지하는 데 도움이 될 수 있습니다. 다음 gif는 그 과정을 보여줍니다.
리포트에서 헤더 접기

다차원 관계 시각화하기

여러 차원에 걸친 관계를 효과적으로 시각화하려면 그레이디언트 컬러를 사용하여 변수 중 하나를 표현하세요. 이는 명확성을 높이고 패턴을 더 쉽게 해석할 수 있게 해줍니다.
  1. 그레이디언트 컬러로 표현할 변수를 선택합니다(예: 페널티 점수, 학습률 등). 이를 통해 학습 시간(x축)에 따른 페널티(색상)와 보상/부작용(y축) 간의 상호작용을 더 명확하게 이해할 수 있습니다.
  2. 주요 트렌드를 강조합니다. 특정 run 그룹 위에 마우스를 올리면 시각화에서 해당 그룹이 강조 표시됩니다.