Try in Colab
wandb.Table
을 사용하여 데이터를 기록하고 Weights & Biases로 시각화하고 쿼리합니다. 이 가이드에서는 다음 방법을 배울 수 있습니다.
테이블 만들기
테이블을 정의하려면 데이터의 각 행에 대해 보려는 열을 지정합니다. 각 행은 트레이닝 데이터셋의 단일 항목, 트레이닝 중의 특정 단계 또는 에포크, 테스트 항목에 대한 모델의 예측값, 모델에서 생성된 오브젝트 등이 될 수 있습니다. 각 열에는 숫자, 텍스트, 부울, 이미지, 비디오, 오디오 등 고정된 유형이 있습니다. 유형을 미리 지정할 필요는 없습니다. 각 열에 이름을 지정하고 해당 유형의 데이터만 해당 열 인덱스로 전달해야 합니다. 더 자세한 예는 이 리포트를 참조하십시오. 다음 두 가지 방법 중 하나로wandb.Table
생성자를 사용합니다.
- 행 목록: 이름이 지정된 열과 데이터 행을 기록합니다. 예를 들어 다음 코드 조각은 두 개의 행과 세 개의 열이 있는 테이블을 생성합니다.
- Pandas DataFrame:
wandb.Table(dataframe=my_df)
를 사용하여 DataFrame을 기록합니다. 열 이름은 DataFrame에서 추출됩니다.
기존 배열 또는 데이터 프레임에서
데이터 추가
테이블은 변경 가능합니다. 스크립트가 실행될 때 테이블에 최대 200,000개의 행까지 더 많은 데이터를 추가할 수 있습니다. 테이블에 데이터를 추가하는 방법에는 두 가지가 있습니다.- 행 추가:
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일 수 있습니다.
점진적으로 데이터 추가
이 코드 샘플은 W&B 테이블을 점진적으로 생성하고 채우는 방법을 보여줍니다. 가능한 모든 레이블에 대한 신뢰도 점수를 포함하여 미리 정의된 열로 테이블을 정의하고 추론 중에 행별로 데이터를 추가합니다. run을 재개할 때 테이블에 점진적으로 데이터를 추가할 수도 있습니다.재개된 run에 데이터 추가
아티팩트에서 기존 테이블을 로드하고, 데이터의 마지막 행을 검색하고, 업데이트된 메트릭을 추가하여 재개된 run에서 W&B 테이블을 점진적으로 업데이트할 수 있습니다. 그런 다음 호환성을 위해 테이블을 다시 초기화하고 업데이트된 버전을 W&B에 다시 기록합니다.데이터 검색
데이터가 테이블에 있으면 열 또는 행별로 엑세스합니다.- 행 반복기: 사용자는
for ndx, row in table.iterrows(): ...
와 같은 테이블의 행 반복기를 사용하여 데이터의 행을 효율적으로 반복할 수 있습니다. - 열 가져오기: 사용자는
table.get_column("col_name")
을 사용하여 데이터 열을 검색할 수 있습니다. 편의를 위해 사용자는convert_to="numpy"
를 전달하여 열을 기본 요소의 NumPy NDArray로 변환할 수 있습니다. 이는 열에 기본 데이터에 직접 엑세스할 수 있도록wandb.Image
와 같은 미디어 유형이 포함된 경우에 유용합니다.
테이블 저장
예를 들어 모델 예측 테이블과 같이 스크립트에서 데이터 테이블을 생성한 후 결과를 라이브로 시각화하기 위해 W&B에 저장합니다.테이블을 run에 기록
wandb.log()
를 사용하여 다음과 같이 테이블을 run에 저장합니다.
200,000개 이상의 행을 기록하려면 다음을 사용하여 제한을 재정의할 수 있습니다.
wandb.Table.MAX_ARTIFACT_ROWS = X
그러나 이렇게 하면 UI에서 쿼리 속도 저하와 같은 성능 문제가 발생할 수 있습니다.프로그래밍 방식으로 테이블 엑세스
백엔드에서 테이블은 Artifacts로 유지됩니다. 특정 버전에 엑세스하려면 아티팩트 API를 사용하여 엑세스할 수 있습니다.테이블 시각화
이러한 방식으로 기록된 테이블은 Run 페이지와 Project 페이지 모두의 Workspace에 표시됩니다. 자세한 내용은 테이블 시각화 및 분석을 참조하십시오.아티팩트 테이블
artifact.add()
를 사용하여 워크스페이스 대신 run의 Artifacts 섹션에 테이블을 기록합니다. 이는 한 번 기록한 다음 향후 run에 참조할 데이터셋이 있는 경우에 유용할 수 있습니다.
artifact.add()
의 자세한 예는 이 Colab을 참조하고, Artifacts 및 Tables를 사용하여 테이블 형식 데이터의 버전 제어 및 중복 제거하는 방법의 예는 이 리포트를 참조하십시오.
아티팩트 테이블 결합
wandb.JoinedTable(table_1, table_2, join_key)
를 사용하여 로컬에서 구성한 테이블 또는 다른 아티팩트에서 검색한 테이블을 결합할 수 있습니다.
인수 | 설명 |
---|---|
table_1 | (str, wandb.Table , ArtifactEntry) 아티팩트의 wandb.Table 경로, 테이블 오브젝트 또는 ArtifactEntry |
table_2 | (str, wandb.Table , ArtifactEntry) 아티팩트의 wandb.Table 경로, 테이블 오브젝트 또는 ArtifactEntry |
join_key | (str, [str, str]) 결합을 수행할 키 |
'original_songs'
라는 원본 노래의 테이블 하나와 동일한 노래의 합성 버전의 또 다른 테이블인 'synth_songs'
를 읽는 방법을 보여줍니다. 다음 코드 예제는 "song_id"
에서 두 테이블을 결합하고 결과 테이블을 새 W&B 테이블로 업로드합니다.