wandb.Run.log()로 데이터를 로깅할 때마다 이를 하나의 통합 딕셔너리에 저장합니다. 스크립트에서 로깅된 데이터는 먼저 로컬 머신의 wandb 디렉터리에 저장된 다음, W&B 클라우드 또는 비공개 서버와 동기화됩니다.
키-값 쌍은 각 step에 동일한 값을 전달한 경우에만 하나의 통합 딕셔너리에 저장됩니다.
step에 서로 다른 값을 로깅하면 W&B는 수집된 모든 키와 값을 메모리에 기록합니다.wandb.Run.log()를 호출할 때마다 새로운 step이 생성됩니다. W&B는 차트와 패널을 만들 때 step을 기본 x축으로 사용합니다. 필요에 따라 맞춤형 x축을 만들어 사용할 수도 있고, 맞춤형 summary 메트릭을 캡처할 수도 있습니다. 자세한 내용은 로그 축 사용자 지정을 참조하세요.
자동으로 로깅되는 데이터
- 시스템 메트릭: CPU 및 GPU 사용량, 네트워크 등입니다. GPU 메트릭은
nvidia-smi로 수집합니다. - 명령줄: stdout과 stderr를 수집해 run 페이지의 로그 탭에 표시합니다.
- Git 커밋: 최신 Git 커밋을 수집하며, run 페이지의 Overview 탭에서 확인할 수 있습니다. 커밋되지 않은 변경 사항이 있으면
diff.patch파일도 함께 확인할 수 있습니다. - 의존성:
requirements.txt파일이 업로드되어 run 페이지의 파일 탭에 표시되며, run의wandb디렉터리에 저장한 파일도 함께 표시됩니다.
특정 W&B API calls에서 어떤 데이터가 로깅되나요?
- Datasets: 이미지나 기타 데이터셋 샘플이 W&B로 스트리밍되게 하려면 해당 항목을 명시적으로 로깅해야 합니다.
- Plots: 차트를 추적하려면
wandb.Run.log()와 함께wandb.plot()을 사용하세요. 자세한 내용은 Log Plots를 참조하세요. - Tables: W&B에서 시각화하고 쿼리할 데이터를 로깅하려면
wandb.Table을 사용하세요. 자세한 내용은 Log Tables를 참조하세요. - PyTorch gradients: UI에서 가중치의 그라디언트를 히스토그램으로 보려면
wandb.Run.watch(model)를 추가하세요. - Configuration information: 하이퍼파라미터, 데이터셋 링크 또는 사용 중인 아키텍처 이름을 설정 파라미터로 로깅할 수 있습니다. 다음과 같이 전달하세요:
wandb.init(config=your_config_dictionary). - Metrics: 모델의 메트릭을 보려면
wandb.Run.log()를 사용하세요. 트레이닝 루프 안에서 accuracy 및 loss 같은 메트릭을 로깅하면 UI에서 실시간으로 업데이트되는 그래프를 볼 수 있습니다.
메트릭 이름 지정 제약 사항
- 허용 문자: 영문자(A-Z, a-z), 숫자(0-9), 밑줄(_)
- 시작 문자: 이름은 영문자 또는 밑줄로 시작해야 합니다
- 패턴: 메트릭 이름은
/^[_a-zA-Z][_a-zA-Z0-9]*$/패턴과 일치해야 합니다
일반적인 워크플로
-
최고 정확도 비교: 여러 run에서 메트릭의 최고값을 비교하려면 해당 메트릭의 summary 값을 설정하세요. 기본적으로 summary는 각 키에 대해 마지막으로 로깅한 값으로 설정됩니다. 이는 UI의 테이블에서 특히 유용합니다. summary 메트릭을 기준으로 run을 정렬하고 필터링할 수 있어, 최종 정확도가 아니라 최고 정확도를 기준으로 테이블이나 막대 차트에서 run을 비교하는 데 도움이 되기 때문입니다. 예:
wandb.run.summary["best_accuracy"] = best_accuracy -
하나의 차트에서 여러 메트릭 보기: 같은 call에서 여러 메트릭을 로깅하세요. 예:
그러면 UI에서 두 메트릭을 모두 플로팅할 수 있습니다.
-
x-axis 사용자 지정: 동일한 log call에 맞춤형 x-axis를 추가해 W&B 대시보드에서 다른 축을 기준으로 메트릭을 시각화하세요. 예:
특정 메트릭의 기본 x-axis를 설정하려면 Run.define_metric()을 사용하세요.
-
리치 미디어와 차트 로깅:
wandb.Run.log()는 이미지와 비디오 같은 미디어부터 테이블과 차트까지 매우 다양한 데이터 유형의 로깅을 지원합니다.