메인 콘텐츠로 건너뛰기
W&B에 메트릭을 기록할 때 사용자 정의 x-축을 설정할 수 있습니다. 기본적으로 W&B는 메트릭을 step 단위로 기록합니다. 각 step은 wandb.Run.log() API 호출 한 번에 해당합니다. 예를 들어, 다음 스크립트에는 10번 반복하는 for 루프가 있습니다. 각 반복에서 스크립트는 validation_loss라는 메트릭을 기록하고 step 번호를 1씩 증가시킵니다.
import wandb

with wandb.init() as run:
  # range 함수는 0부터 9까지의 숫자 시퀀스를 생성합니다
  for i in range(10):
    log_dict = {
        "validation_loss": 1/(i+1)   
    }
    run.log(log_dict)
프로젝트 워크스페이스에서 validation_loss 지표는 step x축에 대해 플롯됩니다. x축은 wandb.Run.log()가 호출될 때마다 1씩 증가합니다. 앞선 코드에서 x축에는 step 번호 0, 1, 2, …, 9가 표시됩니다.
x축으로 `step`을 사용하는 선형 플롯 패널.
특정 상황에서는 로그 스케일 x축과 같이 다른 x축을 기준으로 지표를 기록하는 것이 더 적절할 수 있습니다. define_metric() 메서드를 사용하면, 기록하는 어떤 지표든 사용자 지정 x축으로 사용할 수 있습니다. name 파라미터로 y축에 표시하려는 지표를 지정합니다. step_metric 파라미터는 x축으로 사용하려는 지표를 지정합니다. 사용자 지정 지표를 기록할 때는 딕셔너리에서 키-값 쌍으로 x축과 y축 값 모두를 지정합니다. 다음 코드 스니펫을 복사해 붙여 넣어 사용자 지정 x축 지표를 설정합니다. <> 안의 값을 자신의 값으로 바꾸세요:
import wandb

custom_step = "<custom_step>"  # 사용자 정의 x축 이름
metric_name = "<metric>"  # y축 메트릭 이름

with wandb.init() as run:
    # 스텝 메트릭(x축)과 이를 기준으로 기록할 메트릭(y축)을 지정합니다
    run.define_metric(step_metric = custom_step, name = metric_name)

    for i in range(10):
        log_dict = {
            custom_step : int,  # x축 값
            metric_name : int,  # y축 값
        }
        run.log(log_dict)
예를 들어, 다음 코드 스니펫은 x_axis_squared라는 사용자 정의 x축을 생성합니다. 이 사용자 정의 x축의 값은 for 루프 인덱스 i (i**2)의 제곱입니다. y축은 Python 내장 random 모듈을 사용해 검증 손실("validation_loss")에 대한 모의 값으로 구성됩니다:
import wandb
import random

with wandb.init() as run:
    run.define_metric(step_metric = "x_axis_squared", name = "validation_loss")

    for i in range(10):
        log_dict = {
            "x_axis_squared": i**2,
            "validation_loss": random.random(),
        }
        run.log(log_dict)
다음 이미지는 W&B App UI에 표시되는 최종 플롯을 보여줍니다. validation_loss 메트릭은 사용자 정의 x축인 x_axis_squared를 기준으로 그려지며, 이 값은 for 루프 인덱스 i의 제곱입니다. x축 값은 0, 1, 4, 9, 16, 25, 36, 49, 64, 81이며, 각각 0, 1, 2, ..., 9의 제곱에 해당합니다.
사용자 정의 x축을 사용하는 선 그래프 패널. 값은 루프 번호의 제곱으로 W&B에 로깅됩니다.
문자열 접두사가 포함된 globs를 사용해 여러 메트릭에 대해 사용자 정의 x축을 설정할 수 있습니다. 예를 들어, 다음 코드 스니펫은 접두사 train/*를 가진 로깅된 메트릭을 x축 train/step에 맞춰 플롯합니다:
import wandb

with wandb.init() as run:

    # 다른 모든 train/ 메트릭이 이 스텝을 사용하도록 설정
    run.define_metric("train/*", step_metric="train/step")

    for i in range(10):
        log_dict = {
            "train/step": 2**i,  # 내부 W&B 스텝에 따른 지수적 증가
            "train/loss": 1 / (i + 1),  # x축은 train/step
            "train/accuracy": 1 - (1 / (1 + i)),  # x축은 train/step
            "val/loss": 1 / (1 + i),  # x축은 내부 wandb 스텝
        }
        run.log(log_dict)