Skip to main content

데이터 내보내기

Public API를 사용해 W&B에 저장한 데이터를 내보내거나 업데이트할 수 있습니다. 이 API를 사용하기 전에 스크립트에서 데이터를 로깅해야 합니다. 자세한 내용은 퀵스타트를 확인하세요. Public API 사용 사례
  • 데이터 내보내기: Jupyter Notebook에서 맞춤형 분석을 위해 데이터프레임을 가져옵니다. 데이터를 탐색한 뒤에는 새 분석 run을 만들고 결과를 로깅해 분석 결과를 동기화할 수 있습니다. 예: wandb.init(job_type="analysis")
  • 기존 Runs 업데이트: W&B run과 연결되어 로깅된 데이터를 업데이트할 수 있습니다. 예를 들어, 아키텍처나 원래 로깅되지 않았던 하이퍼파라미터 같은 추가 정보를 포함하도록 여러 Runs의 설정을 업데이트할 수 있습니다.
자세한 내용은 사용 가능한 함수에 대한 생성된 레퍼런스 문서를 참조하세요.

run 데이터 내보내기

완료되었거나 현재 활성 상태인 run에서 데이터를 다운로드합니다. 일반적으로는 Jupyter 노트북에서 맞춤형 분석에 사용할 데이터프레임을 다운로드하거나, 자동화된 환경에서 맞춤형 로직을 사용하는 경우가 많습니다.
run 객체에서 가장 자주 사용되는 속성은 다음과 같습니다. 과거 run의 데이터도 수정하거나 업데이트할 수 있습니다. 기본적으로 API 객체 인스턴스 하나가 모든 네트워크 요청을 캐시합니다. 실행 중인 스크립트에서 실시간 정보가 필요하다면 api.flush()를 호출해 업데이트된 값을 가져오세요.

여러 run 쿼리하기

이 예제 스크립트는 프로젝트를 찾아 name, 설정, summary 통계가 포함된 run CSV를 출력합니다. <entity><project>를 각각 사용자의 W&B entity와 프로젝트 이름으로 바꾸세요.
api.runs를 호출하면 반복 가능한 Runs 객체가 반환되며, 목록처럼 동작합니다. 기본적으로 이 객체는 필요에 따라 한 번에 50개의 run을 순서대로 로드하지만, per_page 키워드 인수로 페이지당 로드할 개수를 변경할 수 있습니다. api.runsorder 키워드 인수도 받습니다. 기본 정렬 순서는 -created_at입니다. 결과를 오름차순으로 정렬하려면 +created_at를 지정하세요. 설정이나 summary 값으로도 정렬할 수 있습니다. 예를 들어 summary.val_acc 또는 config.experiment_name입니다.

오류 처리

W&B 서버와 통신하는 중 오류가 발생하면 wandb.CommError가 발생합니다. 원본 예외는 exc 속성을 통해 확인할 수 있습니다.

활성 run 중에 run 이름과 ID 조회하기

wandb.init()를 호출한 후에는 스크립트에서 다음과 같이 무작위 run ID 또는 사람이 읽을 수 있는 run 이름에 액세스할 수 있습니다:
  • 고유한 run ID(8자 해시): run.id
  • 무작위 run 이름(사람이 읽기 쉬움): run.name
run에 유용한 식별자를 설정하는 방법을 고민하고 있다면, 다음을 권장합니다:
  • Run ID: 생성된 해시를 그대로 두세요. 이 값은 프로젝트의 모든 run에서 고유해야 합니다.
  • Run name: 짧고 읽기 쉬우며, 가능하면 고유한 값이어야 합니다. 그래야 차트의 서로 다른 선을 구분할 수 있습니다.
  • Run notes: run에서 무엇을 하고 있는지 간단히 설명하기에 아주 좋은 곳입니다. wandb.init(notes="여기에 노트 입력")로 설정할 수 있습니다.
  • Run tags: run tags에서 항목을 동적으로 추적하고, UI에서 필터를 사용해 table을 관심 있는 runs만 보이도록 좁혀 보세요. 스크립트에서 tags를 설정한 다음 UI에서 편집할 수 있으며, Runs table과 run 페이지의 Overview 탭 모두에서 가능합니다. 자세한 지침은 여기를 참조하세요.

Public API 예시

run에서 메트릭 조회

이 예제는 "<entity>/<project>/<run_id>"에 저장된 run에서 run.log({"accuracy": acc})로 기록된 타임스탬프와 정확도를 출력합니다.

run에서 특정 메트릭 조회

run에서 특정 메트릭을 가져오려면 keys 인수를 사용하세요. run.history()를 사용할 때 기본 샘플 수는 500입니다. 특정 메트릭이 포함되지 않은 로깅된 step은 출력 데이터프레임에서 NaN으로 표시됩니다. keys 인수를 사용하면 API가 나열된 메트릭 키가 포함된 step을 더 자주 샘플링합니다.

두 run 비교하기

이렇게 하면 run1run2의 설정 매개변수 중 서로 다른 항목이 출력됩니다.
출력:

run이 완료된 후 해당 run의 메트릭 업데이트

이 예제에서는 이전 run의 정확도를 0.9로 설정합니다:

완료된 run의 메트릭 이름 바꾸기

이 예제에서는 테이블의 summary 열 이름을 변경합니다.
열 이름 변경은 테이블에만 적용됩니다. 차트에서는 여전히 메트릭의 원래 이름이 사용됩니다.

기존 run의 설정 업데이트

이 예제에서는 설정 항목 하나를 업데이트합니다.
자세한 내용은 실험 구성을 참조하세요.

시스템 리소스 사용량을 CSV 파일로 내보내기

아래 스니펫은 시스템 리소스 사용량을 찾아 CSV 파일에 저장합니다.

샘플링되지 않은 메트릭 데이터 조회

이력에서 데이터를 가져오면 기본적으로 500개 포인트로 샘플링됩니다. run.scan_history()를 사용하면 로깅된 모든 데이터 포인트를 조회할 수 있습니다. 다음은 이력에 로깅된 모든 loss 데이터 포인트를 다운로드하는 예제입니다.

이력에서 페이지 단위로 데이터 조회

run의 전체 샘플링되지 않은 이력을 조회하려면 run.scan_history()를 사용하세요. 샘플링되지 않은 이력에는 해당 run의 모든 이력 레코드가 포함됩니다. 반면 run.history()의 샘플링된 뷰에서는 일부 개별 레코드가 누락될 수 있습니다. page_size 매개변수는 API 요청당 가져오는 이력 레코드의 최대 개수를 제어하며, 기본값은 1000입니다. 요청이 느리거나 시간 초과가 발생하면 더 작은 페이지 크기를 사용해 보세요. 페이지 크기를 줄이면 시간 초과 위험을 낮출 수 있지만, 더 많은 API 요청이 필요합니다. keys 매개변수는 반환할 메트릭을 독립적으로 필터링합니다.

프로젝트의 모든 run에서 메트릭을 CSV 파일로 내보내기

이 스크립트는 프로젝트의 run을 가져와 각 run의 이름, 설정, summary 통계를 포함한 데이터프레임과 CSV 파일을 생성합니다. <entity><project>를 각각 W&B entity와 프로젝트 이름으로 바꾸세요.

run의 시작 시간 조회

이 코드 예제는 run이 생성된 시점을 조회합니다.

완료된 run에 파일 업로드

아래 코드 스니펫은 선택한 파일을 완료된 run에 업로드합니다.

run에서 파일 다운로드

이 예시에서는 cifar 프로젝트의 run ID uxte44z7에 연결된 파일 “model-best.h5”를 찾아 로컬에 저장합니다.

run의 모든 파일 다운로드

이 작업은 run에 연결된 모든 파일을 찾아 로컬에 저장합니다.

특정 sweep의 run 조회

이 스니펫은 특정 sweep에 속한 모든 run을 다운로드합니다.

sweep에서 최적의 run 조회

다음 스니펫은 지정된 sweep에서 최적의 run을 조회합니다.
best_run은 sweep 설정의 메트릭 매개변수에서 정의한 가장 좋은 메트릭을 가진 run입니다.

sweep에서 가장 성능이 좋은 모델 파일 다운로드

이 스니펫은 모델 파일을 model.h5에 저장한 run들로 구성된 sweep에서 검증 정확도가 가장 높은 모델 파일을 다운로드합니다.

run에서 지정한 확장자의 모든 파일 삭제

이 스니펫은 run에서 지정한 확장자의 파일을 삭제합니다.

시스템 메트릭 데이터 다운로드

이 스니펫은 run의 모든 시스템 리소스 사용 메트릭이 담긴 데이터프레임을 생성한 다음 CSV로 저장합니다.

summary 메트릭 업데이트

summary 메트릭을 업데이트하려면 딕셔너리를 전달하면 됩니다.

run을 실행한 명령어 조회

각 run은 run Overview 페이지에 해당 run을 시작한 명령어를 기록합니다. API에서 이 명령어를 가져오려면 다음을 실행하세요: