wandb.Table을 사용해 W&B에서 시각화하고 쿼리할 데이터를 log합니다. 이 가이드에서는 다음 방법을 알아봅니다:
테이블 만들기
wandb.Table 생성자를 사용합니다:
-
행 목록:
이름이 지정된 column과 데이터 행을 log합니다. 예를 들어 다음 code snippet은 2개의 행과 3개의 column으로 이루어진 테이블을 생성합니다:
-
Pandas DataFrame:
wandb.Table(dataframe=my_df)를 사용해 DataFrame을 log합니다. column name은 DataFrame에서 추출됩니다.
기존 배열이나 데이터프레임에서
데이터 추가
- 행 추가:
table.add_data("3a", "3b", "3c"). 새 행은 목록으로 표현되지 않는다는 점에 유의하세요. 행이 목록 형식이라면 별표 표기법*를 사용해 목록을 위치 인수로 펼치세요:table.add_data(*my_row_list). 행에는 테이블의 열 수와 동일한 개수의 항목이 있어야 합니다. - 열 추가:
table.add_column(name="col_name", data=col_data).col_data의 길이는 테이블의 현재 행 수와 같아야 한다는 점에 유의하세요. 여기서col_data는 목록 데이터이거나 NumPy NDArray일 수 있습니다.
점진적으로 데이터 추가하기
재개된 run에 데이터 추가
데이터 조회
- 행 이터레이터:
for ndx, row in table.iterrows(): ...와 같은 Table의 행 이터레이터를 사용하면 데이터의 각 행을 효율적으로 순회할 수 있습니다. - 열 조회:
table.get_column("col_name")을 사용해 데이터 열을 조회합니다. 편의를 위해convert_to="numpy"를 전달하면 해당 열을 기본형 값으로 이루어진 NumPy NDArray로 변환할 수 있습니다. 이는 열에wandb.Image와 같은 미디어 유형이 포함된 경우 기본 데이터에 직접 접근할 수 있어 유용합니다.
테이블 저장
run에 테이블 기록하기
wandb.Run.log()를 사용해 테이블을 run에 저장할 수 있습니다:
200,000개가 넘는 행을 로깅하려면 다음과 같이 제한을 재정의할 수 있습니다:
wandb.Table.MAX_ARTIFACT_ROWS = X하지만 이렇게 하면 UI에서 쿼리가 느려지는 등 성능 문제가 발생할 가능성이 높습니다.프로그래밍 방식으로 테이블에 액세스하기
테이블 시각화
Artifact 테이블
artifact.add()를 사용하세요. 이렇게 하면 데이터셋을 한 번만 기록해 두고 이후 run에서 참조할 수 있어 유용합니다.
artifact.add()를 사용하는 자세한 예시는 이 Colab을 참고하고, Artifacts와 Tables를 사용해 테이블형 데이터를 버전 관리하고 중복 제거하는 방법의 예시는 이 Report를 참고하세요.
Artifact 테이블 조인
wandb.JoinedTable(table_1, table_2, join_key)를 사용해 조인할 수 있습니다.
이전에 artifact 컨텍스트에서 로깅한 두 개의 Table을 조인하려면, artifact에서 가져온 뒤 그 결과를 새로운 Table로 만드세요.
예를 들어, 다음 코드 예제는
'original_songs'라는 원곡 Table과 같은 곡의 합성 버전이 담긴 'synth_songs'라는 또 다른 Table을 읽는 방법을 보여줍니다. 이 코드는 두 테이블을 "song_id"를 기준으로 조인하고, 결과 테이블을 새로운 W&B Table로 업로드합니다.