메인 콘텐츠로 건너뛰기
W&B 프로젝트에서 맞춤형 차트를 만드세요. 임의의 데이터 테이블을 로깅하고 원하는 형태로 정확하게 시각화하세요. Vega의 강력한 기능을 활용해 글꼴, 색상, 툴팁의 세부 사항까지 제어할 수 있습니다.
vega.github.io/vega의 지원 차트

작동 방식

  1. 데이터 로깅: 스크립트에서 설정 및 summary 데이터를 로깅합니다.
  2. 차트 사용자 지정: GraphQL 쿼리로 로깅된 데이터를 가져옵니다. 강력한 시각화 문법인 Vega를 사용해 쿼리 결과를 시각화합니다.
  3. 차트 로깅: 스크립트에서 wandb.plot_table()을 사용해 자체 프리셋을 호출합니다.
PR 및 ROC 곡선
예상한 데이터가 보이지 않으면, 찾는 열이 선택한 run에 로깅되지 않았을 수 있습니다. 차트를 저장한 다음 Runs table로 돌아가 eye 아이콘을 사용해 선택한 run을 확인하세요.

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

기본 제공 프리셋

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()을 사용해 데이터를 2차원 배열로 로깅합니다. 일반적으로 이 테이블의 각 행은 하나의 데이터 포인트를 나타내며, 각 열은 시각화하려는 각 데이터 포인트의 관련 필드/차원을 나타냅니다. 맞춤형 패널을 설정하면 전체 테이블은 wandb.Run.log()에 전달한 키 이름(아래의 custom_data_table)으로 접근할 수 있고, 개별 필드는 열 이름(x, y, z)으로 접근할 수 있습니다. 실험 전반에 걸쳐 여러 time step에서 테이블을 로깅할 수 있습니다. 각 테이블의 최대 크기는 10,000행입니다. Google Colab에서 예제를 사용해 보세요.
with wandb.init() as run:
  # 맞춤형 데이터 테이블 logging
  my_custom_data = [[x1, y1, z1], [x2, y2, z2]]
  run.log(
      {"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])}
  )

차트 사용자 지정

시작하려면 새 맞춤형 차트를 추가한 다음, 표시 중인 run에서 데이터를 선택하도록 쿼리를 편집합니다. 이 쿼리는 GraphQL을 사용해 run의 설정, summary, 이력 필드에서 데이터를 가져옵니다.
맞춤형 차트 생성

맞춤형 시각화

우측 상단에서 Chart를 선택해 기본 프리셋으로 시작합니다. 다음으로 Chart fields를 선택하여 쿼리에서 가져온 데이터를 차트의 해당 필드에 매핑합니다. 다음 이미지는 메트릭을 선택한 다음 이를 아래의 막대 차트 필드에 매핑하는 예를 보여줍니다.
맞춤형 막대 차트 만들기

Vega 편집 방법

패널 상단의 Edit를 클릭해 Vega 편집 모드로 들어갑니다. 여기에서 UI에서 대화형 차트를 만드는 Vega specification을 정의할 수 있습니다. 차트의 모든 요소를 변경할 수 있습니다. 예를 들어 제목을 바꾸거나, 다른 색상 구성표를 선택하거나, 곡선을 연결된 선 대신 일련의 점으로 표시할 수 있습니다. 또한 Vega transform을 사용해 값 배열을 히스토그램으로 binning하는 것처럼 데이터 자체를 변경할 수도 있습니다. 패널 미리보기는 대화형으로 업데이트되므로 Vega 사양이나 쿼리를 편집하면서 변경 사항이 어떻게 반영되는지 확인할 수 있습니다. Vega documentation and tutorials 을 참고하세요. 필드 참조 W&B의 데이터를 차트에 가져오려면 Vega 사양의 아무 위치에나 "${field:<field-name>}" 형식의 템플릿 문자열을 추가하세요. 그러면 오른쪽의 Chart Fields 영역에 드롭다운이 생성되고, 사용자는 이를 사용해 Vega에 매핑할 쿼리 결과 열을 선택할 수 있습니다. 필드의 기본값을 설정하려면 다음 구문을 사용하세요: "${field:<field-name>:<placeholder text>}"

차트 프리셋 저장

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

아티클 및 가이드

  1. W&B 머신 러닝 시각화 IDE
  2. 맞춤형 차트를 사용해 NLP 어텐션 기반 모델 시각화하기
  3. 맞춤형 차트를 사용해 어텐션이 그라디언트 흐름에 미치는 영향 시각화하기
  4. 임의의 곡선 로깅하기

일반적인 사용 사례

  • 오차 막대가 포함된 막대 플롯 사용자 지정
  • 사용자 지정 x-y 좌표가 필요한 모델 검증 메트릭 표시(예: 정밀도-재현율 곡선)
  • 서로 다른 두 모델/실험의 데이터 분포를 히스토그램으로 겹쳐 표시
  • 트레이닝 중 여러 시점의 스냅샷을 통해 메트릭 변화를 표시
  • 아직 W&B에서 제공하지 않는 고유한 시각화를 만들기(그리고 이를 세상과 공유하기)