Skip to main content
W&B Tables로 표 형식 데이터를 시각화하고 로깅하세요. W&B Table은 각 열에 한 가지 유형의 데이터만 담기는 2차원 데이터 그리드입니다. 각 행은 W&B run에 로깅된 하나 이상의 데이터 포인트를 나타냅니다. W&B Tables는 기본 유형과 숫자 유형뿐 아니라 중첩된 목록, 딕셔너리, 리치 미디어 유형도 지원합니다. W&B Table은 W&B의 특수한 데이터 유형으로, 아티팩트 객체로 로깅됩니다. table 객체는 W&B Python SDK로 생성하고 로깅합니다. table 객체를 생성할 때는 table의 열과 데이터, 그리고 모드를 지정합니다. 모드에 따라 ML 실험 중에 table이 로깅되고 업데이트되는 방식이 달라집니다.
INCREMENTAL 모드는 W&B Server v0.70.0 이상에서 지원됩니다.

table 생성 및 로깅하기

  1. wandb.init()으로 새 run을 초기화하세요.
  2. wandb.Table 클래스로 table 객체를 생성하세요. table의 열과 데이터는 각각 columns 및 data 매개변수에 지정하세요. 선택 매개변수인 log_mode는 IMMUTABLE(기본값), MUTABLE, INCREMENTAL 세 가지 모드 중 하나로 설정하는 것이 좋습니다. 자세한 내용은 다음 섹션의 table 로깅 모드를 참조하세요.
  3. run.log()로 table을 W&B에 로깅하세요.
다음 예시는 a와 b 두 개의 열과 ["a1", "b1"], ["a2", "b2"] 두 개의 데이터 행으로 구성된 table을 생성하고 로깅하는 방법을 보여줍니다.

로깅 모드

wandb.Table의 log_mode 매개변수는 ML 실험 중에 table을 로깅하고 업데이트하는 방식을 결정합니다. log_mode 매개변수에는 IMMUTABLE, MUTABLE, INCREMENTAL 세 가지 인수 중 하나를 지정할 수 있습니다. 모드에 따라 table을 로깅하는 방식, table을 수정할 수 있는 방식, W&B App에서 table이 렌더링되는 방식이 달라집니다. 다음 표에서는 세 가지 로깅 모드와 모드 간의 주요 차이, 그리고 각 모드의 일반적인 사용 사례를 설명합니다. 다음 섹션에서는 각 모드의 예시 코드 스니펫과 함께 모드별로 어떤 상황에서 사용하면 좋은지에 대한 고려 사항을 설명합니다.

MUTABLE 모드

MUTABLE 모드는 기존 table을 새 table로 교체하는 방식으로 업데이트합니다. 반복적이지 않은 프로세스에서 기존 table에 새 열과 행을 추가하려는 경우에 유용합니다. UI에서는 처음 로깅한 후에 추가된 열과 행까지 포함하여 모든 행과 열이 table에 렌더링됩니다.
MUTABLE 모드에서는 table을 로깅할 때마다 table 객체가 교체됩니다. table을 새 table로 덮어쓰는 작업은 계산 비용이 크므로, table이 크면 속도가 느려질 수 있습니다.
다음 예시는 MUTABLE 모드로 table을 생성하고 로깅한 다음 새 열을 추가하는 방법을 보여줍니다. table 객체는 초기 데이터, 신뢰도 점수, 최종 예측을 각각 한 번씩 포함하여 총 세 번 로깅됩니다.
다음 예시에서는 데이터를 로드하는 플레이스홀더 함수 load_eval_data()와 예측을 수행하는 플레이스홀더 함수 model.predict()를 사용합니다. 이 함수들을 직접 작성한 데이터 로드 함수와 예측 함수로 바꾸세요.
트레이닝 루프에서처럼 열은 추가하지 않고 새로운 행 배치만 점진적으로 추가하려면 INCREMENTAL 모드를 사용하는 것이 좋습니다.

INCREMENTAL 모드

증분 모드에서는 머신러닝 실험 중에 행을 배치 단위로 table에 로깅합니다. 이 방식은 장시간 실행되는 작업을 모니터링할 때나, run 중에 업데이트할 때마다 로깅하기에는 비효율적인 대용량 table을 다룰 때 적합합니다. UI에서는 새 행이 로깅될 때마다 table이 업데이트되므로, run 전체가 종료될 때까지 기다리지 않고도 최신 데이터를 확인할 수 있습니다. 또한 증분을 하나씩 넘겨 가며 시점별 table을 확인할 수도 있습니다.
W&B App의 run 워크스페이스에서는 증분을 최대 100개까지 표시할 수 있습니다. 100개를 초과하는 증분을 로깅하면 run 워크스페이스에는 가장 최근 100개만 표시됩니다.
다음 예시에서는 INCREMENTAL 모드로 table을 생성하고 로깅한 다음, 새 행을 추가합니다. table은 트레이닝 step(step)마다 한 번씩 로깅됩니다.
다음 예시에서는 데이터를 로드하는 플레이스홀더 함수 get_training_batch(), 모델을 트레이닝하는 플레이스홀더 함수 train_model_on_batch(), 예측을 수행하는 플레이스홀더 함수 predict_on_batch()를 사용합니다. 이 함수들은 직접 작성한 데이터 로드, 트레이닝, 예측 함수로 바꿔서 사용하세요.
증분 로깅은 일반적으로 매번 새 table을 로깅하는 방식(log_mode=MUTABLE)보다 계산 효율이 높습니다. 하지만 증분을 많이 로깅하면 W&B App에서 table의 모든 행을 렌더링하지 못할 수 있습니다. run이 진행되는 동안 table 데이터를 업데이트하고 확인하면서 모든 데이터를 분석에도 활용하려면 table 두 개를 사용하는 방법을 고려하세요. 하나는 INCREMENTAL 로그 모드로, 다른 하나는 IMMUTABLE 로그 모드로 로깅합니다. 다음 예시는 INCREMENTAL과 IMMUTABLE 로깅 모드를 함께 사용해 이를 구현하는 방법을 보여줍니다.
이 예제에서는 트레이닝 중에 incr_table을 증분 방식(log_mode="INCREMENTAL")으로 로깅합니다. 이렇게 하면 새 데이터가 처리될 때마다 table의 업데이트를 로깅하고 확인할 수 있습니다. 트레이닝이 끝나면 증분 table의 모든 데이터를 담은 불변 table(final_table)이 생성됩니다. 이 불변 table을 로깅하면 추가 분석에 필요한 전체 데이터셋을 보존할 수 있으며, W&B App에서 모든 행을 확인할 수 있습니다.

예시

MUTABLE로 평가 결과 보강하기

INCREMENTAL table을 사용하는 run 재개하기

run을 재개할 때 증분 table에 이어서 계속 로깅할 수 있습니다.
wandb.Run.define_metric("<table_key>", summary="none") 또는 wandb.Run.define_metric("*", summary="none")로 증분 table에 사용하는 키의 요약을 비활성화하면 증분이 새 table에 로깅됩니다.

INCREMENTAL 배치 트레이닝으로 트레이닝하기

마지막 수정일 2026년 9월 30일