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