메인 콘텐츠로 건너뛰기
패널에 불러올 데이터와 그 시각화 방식을 제어하려면 사용자 지정 차트를 사용하세요.

1. W&B에 데이터 로깅하기

먼저 스크립트에서 데이터를 로깅합니다. 트레이닝 시작 시 한 번만 설정하는 하이퍼파라미터와 같은 단일 값에는 wandb.Run.config을(를) 사용하세요. 시간 경과에 따라 여러 시점의 값을 기록하려면 wandb.Run.log()를 사용하고, 커스텀 2D 배열은 wandb.Table()로 로깅하세요. 각 로그 키당 최대 10,000개의 데이터 포인트를 로깅할 것을 권장합니다.
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"])}
  )
간단한 예제 노트북을 실행해 데이터 테이블을 로깅해 보고, 다음 단계에서 커스텀 차트를 설정해 보겠습니다. 결과 차트가 어떻게 보이는지는 라이브 리포트에서 확인하세요.

2. 쿼리 생성하기

시각화할 데이터를 로그로 기록했다면, 프로젝트 페이지로 이동한 다음 + 버튼을 클릭해 새 패널을 추가하고 Custom Chart를 선택하세요. custom charts 데모 Workspace에서 따라 해볼 수 있습니다.
빈 커스텀 차트

쿼리 추가

  1. summary를 클릭한 다음 historyTable을 선택하여 run 히스토리에서 데이터를 가져오는 새 쿼리를 구성합니다.
  2. wandb.Table()을 로깅했던 키를 입력합니다. 위 코드 스니펫에서는 my_custom_table이었습니다. 예시 노트북에서는 키가 pr_curveroc_curve입니다.

Vega 필드 설정

이제 쿼리에서 이 열들을 불러왔으므로, Vega 필드 드롭다운 메뉴에서 옵션으로 선택할 수 있습니다:
쿼리 결과에서 열을 가져와 Vega 필드를 설정하는 모습
  • x-axis: runSets_historyTable_r (recall)
  • y-axis: runSets_historyTable_p (precision)
  • color: runSets_historyTable_c (class label)

3. 차트 사용자 지정하기

이제 꽤 괜찮아 보이지만, 산점도를 선 그래프로 바꾸고 싶습니다. Edit을 클릭해서 이 기본 제공 차트의 Vega 스펙을 변경하세요. custom charts demo workspace에서 함께 따라 해보세요.
사용자 지정 차트 선택
시각화를 사용자 지정하기 위해 Vega 스펙을 다음과 같이 수정했습니다:
  • 플롯, 범례, x축, y축에 제목 추가하기(각 필드에 “title” 설정)
  • “mark” 값을 “point”에서 “line”으로 변경하기
  • 사용하지 않는 “size” 필드 제거하기
PR 곡선 Vega 스펙
이 설정을 이 프로젝트의 다른 곳에서도 사용할 수 있는 프리셋으로 저장하려면 페이지 상단에서 Save as를 클릭하세요. 다음은 ROC 곡선과 함께 나타나는 결과 예시입니다:
PR 곡선 차트

보너스: 합성 히스토그램

히스토그램은 수치 분포를 시각화해 더 큰 데이터셋을 이해하는 데 도움을 줍니다. 합성 히스토그램은 같은 빈(bin) 구간 위에 여러 분포를 함께 보여 주어, 서로 다른 모델 간이나 하나의 모델 안의 서로 다른 클래스 간에 둘 이상의 메트릭을 비교할 수 있게 해 줍니다. 예를 들어, 주행 장면에서 객체를 탐지하는 시맨틱 세그멘테이션 모델의 경우, 정확도(accuracy)에 대한 최적화와 교집합 대비 합집합(IOU)에 대한 최적화 중 어떤 것이 더 효과적인지 비교해 볼 수 있고, 혹은 서로 다른 모델이 자동차(데이터에서 크고 흔한 영역)와 교통 표지판(훨씬 작고 덜 흔한 영역)을 얼마나 잘 탐지하는지도 확인하고 싶을 수 있습니다. 데모 Colab에서는 생물 10개 클래스 중 두 클래스에 대한 신뢰도 점수(confidence score)를 비교해 볼 수 있습니다.
합성 히스토그램
사용자 정의 합성 히스토그램 패널을 직접 만들려면:
  1. Workspace 또는 리포트에서 새 Custom Chart 패널을 만듭니다(“Custom Chart” 시각화를 추가). 오른쪽 상단의 “Edit” 버튼을 눌러, 기본으로 제공되는 패널 타입 중 하나에서 시작해 Vega 스펙을 수정합니다.
  2. 해당 기본 Vega 스펙을 Vega로 작성한 합성 히스토그램 MVP 코드로 교체합니다. 이 Vega 스펙 안에서 바로 메인 제목, 축 제목, 입력 도메인 및 기타 세부 설정을 Vega 문법을 사용해 수정할 수 있습니다(색을 바꾸거나 세 번째 히스토그램을 추가하는 것도 가능합니다 :)
  3. 오른쪽의 쿼리를 수정해 wandb 로그에서 올바른 데이터를 불러옵니다. summaryTable 필드를 추가하고, 해당하는 tableKeyclass_scores로 설정해 run에서 로깅한 wandb.Table을 가져오세요. 그러면 드롭다운 메뉴에서 class_scores로 로깅된 wandb.Table의 컬럼들을 선택해 두 개의 히스토그램 빈 집합(red_binsblue_bins)을 채울 수 있습니다. 이 예시에서는 빨간 빈에는 animal 클래스 예측 점수를, 파란 빈에는 plant를 선택했습니다.
  4. 미리보기 렌더링에서 보이는 플롯이 만족스러울 때까지 Vega 스펙과 쿼리를 계속 수정할 수 있습니다. 완료되면 상단에서 Save as를 클릭하고, 나중에 재사용할 수 있도록 사용자 정의 플롯에 이름을 지정하세요. 그런 다음 Apply from panel library를 클릭해 플롯을 마무리합니다.
아주 짧게 진행한 실험의 결과는 다음과 같습니다. 1000개의 예제만 사용해 1 에포크 동안 트레이닝한 모델은 대부분의 이미지는 식물이 아니라고 매우 확신하지만, 어떤 이미지가 동물일 수 있는지에 대해서는 매우 불확실한 모습을 보입니다.
차트 설정
차트 결과