wandb.Table을 사용하여 데이터를 로깅하여 W&B로 시각화하고 쿼리하세요. 이 가이드에서 다음을 배우세요:
table 생성
table을 정의하려면 각 데이터 행에 표시할 열을 지정하세요. 각 행은 트레이닝 데이터셋의 단일 항목, 트레이닝 중 특정 단계 또는 에포크, 테스트 항목에 대한 모델의 예측, 모델이 생성한 객체 등이 될 수 있습니다. 각 열에는 숫자, 텍스트, 불리언, 이미지, 비디오, 오디오 등 고정된 유형이 있습니다. 유형을 미리 지정할 필요는 없습니다. 각 열에 이름을 지정하고, 해당 열 인덱스에는 그 유형의 데이터만 전달하세요. 더 자세한 예시는 W&B Tables 가이드를 참조하세요.wandb.Table 생성자는 다음 두 가지 방법 중 하나로 사용합니다.
-
행 목록:
이름이 지정된 열과 데이터 행을 로깅합니다. 예를 들어 다음 코드 스니펫은 2개의 행과 3개의 열로 구성된 table을 생성합니다.
-
Pandas 데이터프레임:
wandb.Table(dataframe=my_df)를 사용하여 데이터프레임을 로깅합니다. 열 이름은 데이터프레임에서 추출됩니다.
기존 배열 또는 데이터프레임에서
데이터 추가
table은 변경 가능합니다. 스크립트가 실행되는 동안 table에 최대 200,000행까지 더 많은 데이터를 추가할 수 있습니다. table에 데이터를 추가하는 방법에는 두 가지가 있습니다:- 행 추가:
table.add_data("3a", "3b", "3c"). 새 행은 목록으로 표현되지 않습니다. 행이 목록 형식인 경우 별표 표기*를 사용하여 목록을 위치 인수로 확장하세요:table.add_data(*my_row_list). 행은 table의 열 수와 동일한 수의 항목을 포함해야 합니다. - 열 추가:
table.add_column(name="col_name", data=col_data).col_data의 길이는 table의 현재 행 수와 같아야 합니다. 여기서col_data는 목록 데이터 또는 NumPy NDArray일 수 있습니다.
데이터를 점진적으로 추가하기
이 코드 샘플은 W&B table을 점진적으로 생성하고 데이터를 채우는 방법을 보여줍니다. 가능한 모든 레이블의 신뢰도 점수를 포함해 미리 정의된 열로 table을 정의한 다음, 추론 중에 데이터를 한 행씩 추가합니다. run을 재개할 때 table에 데이터를 점진적으로 추가할 수도 있습니다.재개된 run에 데이터 추가
W&B table을 재개된 run에서 점진적으로 업데이트할 수 있습니다. 아티팩트에서 기존 table을 로드하고 마지막 데이터 행을 검색한 후 업데이트된 메트릭을 추가하세요. 그런 다음 호환성을 위해 table을 다시 초기화하고 업데이트된 버전을 W&B에 로깅하세요.데이터 조회
Table에 데이터가 있으면 열 또는 행으로 액세스하세요:- 행 Iterator: Table의 행 iterator(예:
for ndx, row in table.iterrows(): ...)를 사용하여 데이터의 행을 효율적으로 반복하세요. - 열 조회:
table.get_column("col_name")을 사용하여 데이터 열을 조회하세요. 편의상convert_to="numpy"를 전달하여 열을 primitives의 NumPy NDArray로 변환할 수 있습니다. 이는 열에wandb.Image와 같은 media 유형이 포함된 경우 유용하며, 기본 데이터에 직접 액세스할 수 있습니다.
table 저장하기
스크립트에서 모델 예측 table 같은 데이터 table을 생성했다면 W&B에 저장하여 결과를 실시간으로 시각화하세요.run에 table 로깅하기
다음과 같이wandb.Run.log()를 사용하여 table을 run에 저장하세요:
200,000개가 넘는 행을 로깅하려면 다음과 같이 제한을 재정의할 수 있습니다:
wandb.Table.MAX_ARTIFACT_ROWS = X하지만 이렇게 하면 UI에서 쿼리 속도가 느려지는 등의 성능 문제가 발생할 수 있습니다.프로그래밍 방식으로 table에 액세스하기
백엔드에서 Tables는 아티팩트로 저장됩니다. 특정 버전에 액세스하려면 아티팩트 API를 사용하세요.table 시각화
이 방식으로 로깅한 table은 모두 Run page와 Project page의 Workspace에 표시됩니다. 자세한 내용은 Tables 시각화 및 분석을 참조하세요.아티팩트 table
artifact.add()를 사용하면 table을 workspace 대신 run의 Artifacts 섹션에 로깅할 수 있습니다. 한 번 로깅해 두고 이후 run에서 참조할 데이터셋이 있을 때 유용합니다.
아티팩트 table 조인
wandb.JoinedTable(table_1, table_2, join_key)를 사용하여 로컬에서 구성한 table이나 다른 아티팩트에서 검색한 table을 조인할 수 있습니다.
아티팩트 컨텍스트에서 이전에 로깅한 두 개의 Table을 조인하려면, 아티팩트에서 가져와서 결과를 새 Table로 조인하세요.
예를 들어, 다음 코드 예시는
'original_songs'라는 원본 노래 Table과 'synth_songs'라는 동일한 노래의 합성 버전 Table을 조회하는 방법을 보여줍니다. 코드는 두 table을 "song_id"에서 조인하고, 결과 table을 새 W&B Table로 업로드합니다: