메인 콘텐츠로 건너뛰기
W&B 프로젝트에서 커스텀 차트를 만드세요. 임의의 데이터 테이블을 로그하고 원하는 방식 그대로 시각화할 수 있습니다. Vega의 강력한 기능을 활용하여 폰트, 색상, 툴팁의 세부 사항을 제어하세요.
vega.github.io/vega에서 지원하는 차트들

작동 방식

  1. 데이터 로그: 스크립트에서 config 및 요약 데이터를 로그합니다.
  2. 차트 커스터마이징: GraphQL 쿼리를 사용하여 로그된 데이터를 가져옵니다. 강력한 시각화 문법인 Vega를 사용하여 쿼리 결과를 시각화합니다.
  3. 차트 로그: 스크립트에서 wandb.plot_table()을 호출하여 자신만의 프리셋을 불러옵니다.
PR 및 ROC 곡선
예상한 데이터가 보이지 않는다면, 찾고 있는 컬럼이 선택된 Runs에 로그되지 않았을 수 있습니다. 차트를 저장하고 Runs 테이블로 돌아가 아이콘을 사용하여 선택된 Runs를 확인하세요.

스크립트에서 차트 로그하기

내장 프리셋

W&B에는 스크립트에서 직접 로그할 수 있는 여러 내장 차트 프리셋이 있습니다. 여기에는 라인 플롯, 산점도, 바 차트, 히스토그램, PR 곡선 및 ROC 곡선이 포함됩니다.
wandb.plot.line()커스텀 라인 플롯(임의의 x축과 y축 위에 연결된 순서 있는 점 (x,y) 리스트)을 로그합니다.
with wandb.init() as run:
  data = [[x, y] for (x, y) in zip(x_values, y_values)]
  table = wandb.Table(data=data, columns=["x", "y"])
  run.log(
      {
          "my_custom_plot_id": wandb.plot.line(
              table, "x", "y", title="Custom Y vs X Line Plot"
          )
      }
  )
라인 플롯은 임의의 두 차원에 대한 곡선을 로그합니다. 두 값의 리스트를 서로에 대해 플로팅하는 경우, 리스트의 값 개수가 정확히 일치해야 합니다(예: 각 점에는 반드시 x와 y가 있어야 함).
커스텀 라인 플롯
리포트 예시 보기 또는 Google Colab 노트북 예제 실행하기.

커스텀 프리셋

내장 프리셋을 수정하거나 새 프리셋을 만든 다음 차트를 저장하세요. 차트 ID를 사용하여 스크립트에서 해당 커스텀 프리셋으로 데이터를 직접 로그할 수 있습니다. Google Colab 노트북 예제 실행하기.
# 플로팅할 컬럼이 있는 테이블 생성
table = wandb.Table(data=data, columns=["step", "height"])

# 테이블의 컬럼에서 차트의 필드로 매핑
fields = {"x": "step", "value": "height"}

# 테이블을 사용하여 새 커스텀 차트 프리셋 채우기
# 직접 저장한 차트 프리셋을 사용하려면 vega_spec_name을 변경하세요
my_custom_chart = wandb.plot_table(
    vega_spec_name="carey/new_chart",
    data_table=table,
    fields=fields,
)
커스텀 차트 프리셋

데이터 로그

스크립트에서 다음과 같은 데이터 유형을 로그하고 커스텀 차트에서 사용할 수 있습니다:
  • Config: 실험의 초기 설정(독립 변수). 여기에는 트레이닝 시작 시 wandb.Run.config의 키로 로그한 모든 명명된 필드가 포함됩니다. 예: wandb.Run.config.learning_rate = 0.0001
  • Summary: 트레이닝 중에 로그된 단일 값(결과 또는 종속 변수). 예: wandb.Run.log({"val_acc" : 0.8}). 트레이닝 중에 wandb.Run.log()를 통해 이 키에 여러 번 기록하면 summary는 해당 키의 최종값으로 설정됩니다.
  • History: 로그된 스칼라의 전체 시계열은 history 필드를 통해 쿼리에 사용할 수 있습니다.
  • summaryTable: 여러 값의 리스트를 로그해야 하는 경우, wandb.Table()을 사용하여 데이터를 저장한 다음 커스텀 패널에서 쿼리하세요.
  • historyTable: 히스토리 데이터를 확인해야 하는 경우, 커스텀 차트 패널에서 historyTable을 쿼리하세요. wandb.Table()을 호출하거나 커스텀 차트를 로그할 때마다 해당 step의 히스토리에 새 테이블이 생성됩니다.

커스텀 테이블 로그 방법

wandb.Table()을 사용하여 데이터를 2D 배열로 로그합니다. 일반적으로 이 테이블의 각 행은 하나의 데이터 포인트를 나타내며, 각 컬럼은 플로팅하려는 각 데이터 포인트의 관련 필드/차원을 나타냅니다. 커스텀 패널을 설정할 때, wandb.Run.log()에 전달된 명명된 키(아래에서는 custom_data_table)를 통해 전체 테이블에 엑세스할 수 있으며, 컬럼 이름(x, y, z)을 통해 개별 필드에 엑세스할 수 있습니다. 실험 전반에 걸쳐 여러 타임 스텝에서 테이블을 로그할 수 있습니다. 각 테이블의 최대 크기는 10,000행입니다. Google Colab 예제 실행하기.
with wandb.init() as run:
  # 커스텀 데이터 테이블 로그
  my_custom_data = [[x1, y1, z1], [x2, y2, z2]]
  run.log(
      {"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])}
  )

차트 커스터마이징

시작하려면 새 커스텀 차트를 추가한 다음, 쿼리를 편집하여 표시된 Runs에서 데이터를 선택하세요. 쿼리는 GraphQL을 사용하여 Runs의 config, summary 및 history 필드에서 데이터를 가져옵니다.
커스텀 차트 생성

커스텀 시각화

기본 프리셋으로 시작하려면 오른쪽 상단에서 Chart를 선택하세요. 그런 다음 Chart fields를 선택하여 쿼리에서 가져온 데이터를 차트의 해당 필드에 매핑합니다. 다음 이미지는 메트릭을 선택한 다음 이를 아래의 바 차트 필드에 매핑하는 방법의 예시를 보여줍니다.
커스텀 바 차트 만들기

Vega 편집 방법

패널 상단의 Edit을 클릭하여 Vega 편집 모드로 들어갑니다. 여기서 UI에 대화형 차트를 생성하는 Vega 사양을 정의할 수 있습니다. 차트의 모든 측면을 변경할 수 있습니다. 예를 들어, 제목을 변경하거나, 다른 색상 체계를 선택하거나, 곡선을 연결된 선 대신 일련의 점으로 표시할 수 있습니다. 또한 Vega transform을 사용하여 값 배열을 히스토그램으로 binning하는 등 데이터 자체를 변경할 수도 있습니다. 패널 미리보기는 대화식으로 업데이트되므로 Vega 사양이나 쿼리를 편집할 때 변경 사항의 효과를 즉시 확인할 수 있습니다. Vega 문서 및 튜토리얼을 참조하세요. 필드 참조 W&B의 데이터를 차트로 가져오려면 Vega 사양의 어느 곳에나 "${field:<field-name>}" 형태의 템플릿 문자열을 추가하세요. 이렇게 하면 오른쪽에 있는 Chart Fields 영역에 드롭다운이 생성되며, 사용자는 이를 통해 Vega에 매핑할 쿼리 결과 컬럼을 선택할 수 있습니다. 필드의 기본값을 설정하려면 "${field:<field-name>:<placeholder text>}" 문법을 사용하세요.

차트 프리셋 저장

모달 하단의 버튼을 사용하여 특정 시각화 패널에 변경 사항을 적용합니다. 또는 Vega 사양을 저장하여 프로젝트의 다른 위치에서 사용할 수도 있습니다. 재사용 가능한 차트 정의를 저장하려면 Vega 에디터 상단의 Save as를 클릭하고 프리셋 이름을 지정하세요.

문서 및 가이드

  1. W&B 기계학습 시각화 IDE
  2. NLP 어텐션 기반 모델 시각화
  3. 어텐션이 그레이디언트 흐름에 미치는 영향 시각화
  4. 임의의 곡선 로그하기

일반적인 유스 케이스

  • 오차 막대가 있는 바 플롯 커스터마이징
  • 커스텀 x-y 좌표가 필요한 모델 검증 메트릭 표시 (예: PR 곡선)
  • 두 가지 다른 모델/실험의 데이터 분포를 히스토그램으로 오버레이
  • 트레이닝 중 여러 지점에서의 스냅샷을 통해 메트릭의 변화 표시
  • W&B에서 아직 제공하지 않는 고유한 시각화 생성 (및 전 세계와 공유)