Wandb

W&B 주요 기능과 활용 방안

Run Table 노출 데이터 조정

API목적Run Table 표시 방식

| — | — | — |

wandb.init고정 하이퍼파라미터 전달초기 설정값 자동 표시.
wandb.log실시간 메트릭 기록스텝/에포크 단위 실시간 반영.
wandb.summary최종 결과 기록요약 데이터만 표시.
wandb.log_artifact결과물 저장데이터 관련 아티팩트 링크 추가.

주요 API 비교

API목적단위/사용 시점시각화 여부예시

| — | — | — | — | — |

wandb.log실시간 메트릭 기록step, epoch 단위실시간 가능wandb.log({"loss": 0.1})
wandb.summary최종 결과 요약실행 종료 후대시보드 요약 형태로 표시wandb.summary["accuracy"] = 0.95
wandb.log_artifact모델/데이터 결과물 저장실행 완료 후불가wandb.log_artifact("model.h5")
wandb.define_metric메트릭 관계 정의 및 시각화 최적화초기 설정 시그래프 반영wandb.define_metric("loss", step_metric="epoch")

0. 요약

Parameters

  1. 고정 하이퍼파라미터는 wandb.init(config)로 전달:
  • 예: wandb.init(config={"lr": 0.001}).
  1. 학습 중 메트릭은 wandb.log로 기록:
  • 스텝 또는 에포크 단위로 실시간 데이터 추가.
  1. 최종 값은 wandb.summary로 기록:
  • 최종 결과 데이터만 요약해 표시.
  1. 결과물은 wandb.log_artifact로 저장:
  • 학습 모델 가중치 및 데이터셋 관리.

기타

  1. 명확한 job_type 설정:
  • 예: training, fine_tuning, evaluation.
  1. Artifacts 활용:
  • 이전 실행 결과 활용: wandb.use_artifact().

  • 결과 저장: wandb.log_artifact().

  1. 독립 실행(run):
  • reinit=True로 새 실행 생성.
  1. 추가 학습:
  • 기존 실행 이어가기: resume="allow".

  • 완전히 새로운 실행: reinit=True.


1. W&B 개요

  • Weights & Biases(W&B)

  • 실험 관리, 메트릭 추적, 대시보드 시각화를 지원하는 툴로, 머신러닝 워크플로우의 효율적 관리

주요 특징

  1. 실시간 로깅: 학습 중 메트릭과 데이터를 실시간으로 기록 및 시각화.

  2. 결과 재현성: Git 추적 및 Artifacts 저장으로 재현 가능한 실험 제공.

  3. 커스텀 대시보드: 실행(run) 데이터의 맞춤형 시각화와 분석.

  4. 통합 관리: 여러 실행을 비교하고 검색/필터링하여 관리.


2. 주요 구성 요소

2.1 Dashboard (대시보드)

목적: 프로젝트 수준에서 모든 실행(run)의 요약과 비교 제공.

  • 구성:

  • Project Overview: 모든 실행(run) 요약.

  • Runs Table: 개별 실행의 메트릭, 하이퍼파라미터, 상태 등 정리.

  • Custom Reports: 그래프와 표를 조합한 맞춤형 보고서.

  • Filters/Search: 조건에 따른 실행 검색 및 필터링.

  • 사용 예시:

  • 학습 진행 상황을 비교.

  • 실험 결과를 기반으로 성능 분석.


2.2 Runs Table (실험 테이블)

목적: 실행(run) 별 세부 데이터 정리 및 시각화.

  • 구성:

  • Columns: 메트릭(los, accuracy), 하이퍼파라미터 등 데이터 열.

  • Rows: 실행(run)별 데이터.

  • Sorting/Filters: 메트릭 값 기반 정렬과 특정 조건 검색.


2.3 Run Page (실행 상세 페이지)

목적: 특정 실행(run)의 데이터 분석.

  • 기능:

  • Metrics Graphs: 메트릭 변화 시각화.

  • System Metrics: GPU/CPU 사용량 확인.

  • Artifacts: 모델 및 데이터 파일 업로드/다운로드.

  • Code Version: 실행 당시 Git commit ID 확인.

  • Notes & Tags: 태그 및 실행 주석 관리.


2.4 Artifacts (아티팩트)

목적: 모델, 데이터셋, 결과물 저장 및 추적.

  • 주요 작업:

  • 저장: wandb.log_artifact().

  • 활용: wandb.use_artifact().


3. 주요 API 및 활용

3.1 wandb.init: 실행 초기화 및 하이퍼파라미터 전달

  • 목적: 변하지 않는 하이퍼파라미터와 설정값 전달.

  • 사용법:


config = {"lr": 0.001, "batch_size": 32}

wandb.init(project="project_name", config=config)

  • 특징:

  • 실행 초기화 및 메타데이터 자동 기록.

  • 설정값은 실행 중 변경 불가.


3.2 wandb.log: 실시간 메트릭 기록

  • 목적: 학습 중 변화하는 메트릭(los, accuracy) 기록.

  • 사용법:


for step, (x, y) in enumerate(data_loader):

loss = train(x, y)

wandb.log({"step": step, "loss": loss})

  • 특징:

  • 스텝(step) 또는 에포크(epoch) 단위 기록.

  • 실시간으로 Run Table 및 그래프 반영.


3.3 wandb.summary: 최종 결과 요약

  • 목적: 실행(run)의 최종 값 요약.

  • 사용법:


wandb.summary["best_accuracy"] = max(acc_list)

  • 특징:

  • 실행 종료 후 요약 데이터 Run Table에 표시.


3.4 wandb.log_artifact: 결과물 저장

  • 목적: 실행에서 생성된 모델 및 데이터 저장.

  • 사용법:


artifact = wandb.Artifact("model_v1", type="model")

artifact.add_file("model.h5")

wandb.log_artifact(artifact)

  • 특징:

  • 결과물 버전 관리 및 추적 가능.


3.5 wandb.define_metric: 메트릭 정의 및 관계 설정

  • 목적: 메트릭 간 관계 정의.

  • 사용법:


wandb.define_metric("loss", step_metric="epoch")

  • 특징:

  • 스텝(step)이나 에포크(epoch) 기반 커스텀 시각화.


3.6 이미지 및 테이블 로깅

  • 이미지 로깅:

wandb.log({"examples": [wandb.Image(img, caption="output")]})

  • 테이블 로깅:

table = wandb.Table(columns=["Input", "Prediction", "Ground Truth"])

table.add_data(input, pred, truth)

wandb.log({"predictions_table": table})


wandb.summary.update vs wandb.summary

1. 기본 개념 이해

  • wandb.summary

  • 정의: 현재 실행(run)의 요약(summary) 섹션을 나타내는 객체

  • 용도: 실험의 최종 결과나 중요한 메트릭을 대시보드의 상단에 표시

  • 접근 방식: wandb.summary를 통해 직접 접근

  • wandb.summary.update

  • 정의: wandb.summary 객체에 여러 키-값 쌍을 한 번에 추가하거나 업데이트

  • 용도: 여러 요약 정보를 한 번에 업데이트할 때 유용

  • 접근 방식: wandb.summary.update(dict) 형태로 사용