메인 콘텐츠로 건너뛰기
W&B Weave를 찾고 계신가요? 생성형 AI 애플리케이션을 만들기 위한 W&B의 도구 제품군을 찾고 계신가요? Weave 문서는 여기에서 확인하세요: wandb.me/weave.
쿼리 패널을 사용해 데이터를 쿼리하고 대화형으로 시각화하세요.
쿼리 패널

쿼리 패널 생성

워크스페이스 또는 리포트 내에 쿼리를 추가합니다.
  1. 프로젝트의 워크스페이스로 이동합니다.
  2. 오른쪽 상단에서 Add panel을 클릭합니다.
  3. 드롭다운에서 Query panel을 선택합니다.

쿼리 구성 요소

Expressions

W&B에 저장된 실행, 아티팩트, 모델, 테이블 등의 데이터를 조회할 때 쿼리 표현식을 사용하세요.

예시: 테이블 쿼리하기

W&B Table을 쿼리하고 싶다고 가정해 보겠습니다. 학습 코드에서 "cifar10_sample_table"이라는 이름의 테이블을 로깅합니다:
import wandb
with wandb.init() as run:
  run.log({"cifar10_sample_table":<MY_TABLE>})
쿼리 패널에서 다음과 같이 테이블을 쿼리할 수 있습니다:
runs.summary["cifar10_sample_table"]
Table query expression
이를 단계별로 살펴보면 다음과 같습니다:
  • runs는 Query Panel이 Workspace 안에 있을 때 Query Panel Expressions에 자동으로 주입되는 변수입니다. 이 변수의 “값”은 해당 Workspace에서 볼 수 있는 실행들의 목록입니다. 실행 내에서 사용할 수 있는 다양한 속성에 대해 여기에서 확인하세요.
  • summary는 특정 실행의 Summary 객체를 반환하는 op입니다. op는 매핑되므로, 이 op는 목록에 있는 각 실행에 적용되어 Summary 객체들의 목록을 반환합니다.
  • ["cifar10_sample_table"]는 대괄호로 표시되는 Pick op로, predictions를 인자로 받습니다. Summary 객체는 딕셔너리 혹은 map처럼 동작하므로, 이 연산은 각 Summary 객체에서 predictions 필드를 가져옵니다.
대화형으로 직접 쿼리를 작성하는 방법을 배우려면 Query panel 데모를 참고하세요.

설정

패널 왼쪽 상단의 톱니바퀴 아이콘을 선택해 쿼리 설정을 펼칩니다. 이를 통해 패널 유형과 결과 패널의 매개변수를 구성할 수 있습니다.
패널 설정 메뉴

결과 패널

마지막으로, 쿼리 결과 패널은 선택한 쿼리 패널과 구성 설정을 사용해 쿼리 표현식의 결과를 대화형 형식으로 표시합니다. 아래 이미지는 동일한 데이터를 테이블과 플롯으로 각각 나타낸 예시입니다.
Table result panel
Plot result panel

기본 작업

쿼리 패널에서 일반적으로 수행할 수 있는 기본 작업은 다음과 같습니다.

정렬

열 옵션에서 정렬을 선택합니다:
열 정렬 옵션

Filter

쿼리에서 직접 필터를 지정하거나, 왼쪽 상단의 Filter 버튼(두 번째 이미지)을 사용할 수 있습니다.
Query filter syntax
Filter button

Map

Map 연산은 리스트를 순회하면서 데이터의 각 요소에 함수를 적용합니다. 패널 쿼리에서 직접 실행하거나 컬럼 옵션에서 새 컬럼을 삽입하여 수행할 수 있습니다.
Map 연산 쿼리
Map 컬럼 삽입

그룹화

쿼리 또는 열 옵션을 사용해 그룹화할 수 있습니다.
쿼리로 그룹화
열 옵션으로 그룹화

Concat

concat 연산을 사용하면 두 개의 테이블을 이어 붙일 수 있으며, 패널 설정에서 concat 또는 join을 수행할 수 있습니다.

조인

쿼리에서 테이블을 직접 조인할 수도 있습니다. 다음 쿼리식을 살펴보세요:
project("luis_team_test", "weave_example_queries").runs.summary["short_table_0"].table.rows.concat.join(\
project("luis_team_test", "weave_example_queries").runs.summary["short_table_1"].table.rows.concat,\
(row) => row["Label"],(row) => row["Label"], "Table1", "Table2",\
"false", "false")
테이블 조인 연산
왼쪽 테이블은 다음과 같이 생성됩니다:
project("luis_team_test", "weave_example_queries").\
runs.summary["short_table_0"].table.rows.concat.join
오른쪽에 있는 표는 다음을 기반으로 생성됩니다:
project("luis_team_test", "weave_example_queries").\
runs.summary["short_table_1"].table.rows.concat
여기서:
  • (row) => row["Label"] 은 각 테이블에 대해 어떤 컬럼을 기준으로 조인할지 결정하는 선택자 함수입니다.
  • "Table1""Table2" 는 조인 후 각 테이블을 지칭하는 이름입니다.
  • truefalse 는 좌/우 내부(inner)/외부(outer) 조인 옵션을 지정하는 값입니다.

실행 객체

runs 객체에 액세스하려면 쿼리 패널을 사용합니다. 실행 객체는 실험의 기록을 저장합니다. 자세한 내용은 Accessing runs object를 참고하세요. 간단히 요약하면, runs 객체에는 다음과 같은 항목이 있습니다:
  • summary: 실행 결과를 요약한 정보의 딕셔너리입니다. 정확도와 손실 같은 스칼라 값이 될 수도 있고, 큰 파일일 수도 있습니다. 기본적으로 wandb.Run.log()는 기록된 시계열의 마지막 값을 summary로 설정합니다. summary의 내용을 직접 설정할 수도 있습니다. summary는 실행의 “출력”이라고 생각하면 됩니다.
  • history: 손실처럼 모델이 학습되는 동안 변경되는 값을 저장하기 위한 딕셔너리 목록입니다. wandb.Run.log() 명령은 이 객체에 항목을 추가합니다.
  • config: 학습 실행의 하이퍼파라미터나 데이터셋 아티팩트를 생성하는 실행의 전처리 방법 등, 실행의 설정 정보를 담은 딕셔너리입니다. 이를 실행의 “입력”이라고 생각하면 됩니다.
실행 객체 구조

아티팩트 액세스

아티팩트는 W&B의 핵심 개념입니다. 아티팩트는 파일과 디렉터리로 이루어진, 이름이 붙은 버전 관리 컬렉션입니다. 아티팩트를 사용하여 모델 가중치, 데이터셋, 그리고 그 외의 모든 파일이나 디렉터리를 추적할 수 있습니다. 아티팩트는 W&B에 저장되며, 다른 실행에서 다운로드하거나 사용할 수 있습니다. 자세한 내용과 예시는 아티팩트 액세스에서 확인할 수 있습니다. 일반적으로 아티팩트는 project 객체를 통해 액세스합니다:
  • project.artifactVersion(): 프로젝트 내에서 주어진 이름과 버전에 해당하는 특정 아티팩트 버전을 반환합니다
  • project.artifact(""): 프로젝트 내에서 주어진 이름에 해당하는 아티팩트를 반환합니다. 이후 .versions를 사용하여 이 아티팩트의 모든 버전 목록을 가져올 수 있습니다
  • project.artifactType(): 프로젝트 내에서 주어진 이름에 해당하는 artifactType을 반환합니다. 이후 .artifacts를 사용하여 이 타입의 모든 아티팩트 목록을 가져올 수 있습니다
  • project.artifactTypes: 해당 프로젝트의 모든 아티팩트 타입 목록을 반환합니다
아티팩트 액세스 메서드