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
- 고정 하이퍼파라미터는
wandb.init(config)로 전달:
- 예:
wandb.init(config={"lr": 0.001}).
- 학습 중 메트릭은
wandb.log로 기록:
- 스텝 또는 에포크 단위로 실시간 데이터 추가.
- 최종 값은
wandb.summary로 기록:
- 최종 결과 데이터만 요약해 표시.
- 결과물은
wandb.log_artifact로 저장:
- 학습 모델 가중치 및 데이터셋 관리.
기타
- 명확한
job_type설정:
- 예:
training,fine_tuning,evaluation.
- Artifacts 활용:
이전 실행 결과 활용:
wandb.use_artifact().결과 저장:
wandb.log_artifact().
- 독립 실행(run):
reinit=True로 새 실행 생성.
- 추가 학습:
기존 실행 이어가기:
resume="allow".완전히 새로운 실행:
reinit=True.
1. W&B 개요
Weights & Biases(W&B)
실험 관리, 메트릭 추적, 대시보드 시각화를 지원하는 툴로, 머신러닝 워크플로우의 효율적 관리
주요 특징
실시간 로깅: 학습 중 메트릭과 데이터를 실시간으로 기록 및 시각화.
결과 재현성: Git 추적 및 Artifacts 저장으로 재현 가능한 실험 제공.
커스텀 대시보드: 실행(run) 데이터의 맞춤형 시각화와 분석.
통합 관리: 여러 실행을 비교하고 검색/필터링하여 관리.
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)형태로 사용