This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

What are runs?

W&B의 기본 구성 요소인 Runs에 대해 알아보세요.

W&B에서 run은 로그된 단일 연산 단위입니다. W&B run을 전체 프로젝트의 원자적 요소로 생각할 수 있습니다. 다시 말해, 각 run은 모델 트레이닝 및 결과 로깅, 하이퍼파라미터 스윕 등과 같은 특정 연산의 기록입니다.

run을 시작하는 일반적인 패턴은 다음을 포함하지만 이에 국한되지는 않습니다.

  • 모델 트레이닝
  • 하이퍼파라미터를 변경하고 새로운 실험 수행
  • 다른 모델로 새로운 기계학습 실험 수행
  • W&B Artifacts로 데이터 또는 모델 로깅
  • W&B Artifacts 다운로드

W&B는 생성한 run을 프로젝트에 저장합니다. W&B 앱 UI에서 run과 해당 속성을 run의 프로젝트 워크스페이스 내에서 볼 수 있습니다. wandb.Api.Run 오브젝트를 사용하여 run 속성에 프로그래밍 방식으로 엑세스할 수도 있습니다.

run.log로 로그하는 모든 내용은 해당 run에 기록됩니다. 다음 코드 조각을 살펴보십시오.

import wandb

run = wandb.init(entity="nico", project="awesome-project")
run.log({"accuracy": 0.9, "loss": 0.1})

첫 번째 줄은 W&B Python SDK를 임포트합니다. 두 번째 줄은 엔터티 nico 아래의 프로젝트 awesome-project에서 run을 초기화합니다. 세 번째 줄은 모델의 정확도와 손실을 해당 run에 기록합니다.

터미널 내에서 W&B는 다음을 반환합니다.

wandb: Syncing run earnest-sunset-1
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb:                                                                                
wandb: 
wandb: Run history:
wandb: accuracy  
wandb:     loss  
wandb: 
wandb: Run summary:
wandb: accuracy 0.9
wandb:     loss 0.5
wandb: 
wandb: 🚀 View run earnest-sunset-1 at: https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb: ⭐️ View project at: https://wandb.ai/nico/awesome-project
wandb: Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)
wandb: Find logs at: ./wandb/run-20241105_111006-1jx1ud12/logs

터미널에서 W&B가 반환하는 URL은 W&B 앱 UI에서 run의 워크스페이스로 리디렉션합니다. 워크스페이스에서 생성된 패널은 단일 지점에 해당합니다.

단일 시점에 메트릭을 로깅하는 것은 그다지 유용하지 않을 수 있습니다. 판별 모델 트레이닝의 경우 더 현실적인 예는 메트릭을 정기적인 간격으로 로깅하는 것입니다. 예를 들어, 다음 코드 조각을 살펴보십시오.

epochs = 10
lr = 0.01

run = wandb.init(
    entity="nico",
    project="awesome-project",
    config={
        "learning_rate": lr,
        "epochs": epochs,
    },
)

offset = random.random() / 5

# simulating a training run
for epoch in range(epochs):
    acc = 1 - 2**-epoch - random.random() / (epoch + 1) - offset
    loss = 2**-epoch + random.random() / (epoch + 1) + offset
    print(f"epoch={epoch}, accuracy={acc}, loss={loss}")
    run.log({"accuracy": acc, "loss": loss})

다음 출력을 반환합니다.

wandb: Syncing run jolly-haze-4
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/pdo5110r
lr: 0.01
epoch=0, accuracy=-0.10070974957523078, loss=1.985328507123956
epoch=1, accuracy=0.2884687745057535, loss=0.7374362314407752
epoch=2, accuracy=0.7347387967382066, loss=0.4402409835486663
epoch=3, accuracy=0.7667969248039795, loss=0.26176963846423457
epoch=4, accuracy=0.7446848791003173, loss=0.24808611724405083
epoch=5, accuracy=0.8035095836268268, loss=0.16169791827329466
epoch=6, accuracy=0.861349032371624, loss=0.03432578493587426
epoch=7, accuracy=0.8794926436276016, loss=0.10331872172219471
epoch=8, accuracy=0.9424839917077272, loss=0.07767793473500445
epoch=9, accuracy=0.9584880427028566, loss=0.10531971149250456
wandb: 🚀 View run jolly-haze-4 at: https://wandb.ai/nico/awesome-project/runs/pdo5110r
wandb: Find logs at: wandb/run-20241105_111816-pdo5110r/logs

트레이닝 스크립트는 run.log를 10번 호출합니다. 스크립트가 run.log를 호출할 때마다 W&B는 해당 에포크의 정확도와 손실을 기록합니다. W&B가 이전 출력에서 출력하는 URL을 선택하면 W&B 앱 UI에서 run의 워크스페이스로 이동합니다.

스크립트가 wandb.init 메서드를 한 번만 호출하기 때문에 W&B는 시뮬레이션된 트레이닝 루프를 jolly-haze-4라는 단일 run 내에서 캡처합니다.

또 다른 예로, 스윕 중에 W&B는 사용자가 지정한 하이퍼파라미터 검색 공간을 탐색합니다. W&B는 스윕이 생성하는 각 새로운 하이퍼파라미터 조합을 고유한 run으로 구현합니다.

Run 초기화

wandb.init()로 W&B run을 초기화합니다. 다음 코드 조각은 W&B Python SDK를 임포트하고 run을 초기화하는 방법을 보여줍니다.

각도 괄호(<>)로 묶인 값을 사용자 고유의 값으로 바꾸십시오.

import wandb

run = wandb.init(entity="<entity>", project="<project>")

run을 초기화할 때 W&B는 프로젝트 필드에 지정한 프로젝트(wandb.init(project="<project>"))에 run을 기록합니다. W&B는 프로젝트가 아직 존재하지 않으면 새 프로젝트를 만듭니다. 프로젝트가 이미 존재하는 경우 W&B는 해당 프로젝트에 run을 저장합니다.

W&B의 각 run에는 run ID라고 하는 고유 식별자가 있습니다. 고유 ID를 지정하거나 W&B가 임의로 ID를 생성하도록 할 수 있습니다.

각 run에는 사람이 읽을 수 있는 run 이름이라고 하는 고유하지 않은 식별자도 있습니다. run 이름을 지정하거나 W&B가 임의로 이름을 생성하도록 할 수 있습니다.

예를 들어, 다음 코드 조각을 살펴보십시오.

import wandb

run = wandb.init(entity="wandbee", project="awesome-project")

코드 조각은 다음 출력을 생성합니다.

🚀 View run exalted-darkness-6 at: 
https://wandb.ai/nico/awesome-project/runs/pgbn9y21
Find logs at: wandb/run-20241106_090747-pgbn9y21/logs

이전 코드는 id 파라미터에 대한 인수를 지정하지 않았으므로 W&B는 고유한 run ID를 만듭니다. 여기서 nico는 run을 기록한 엔터티이고, awesome-project는 run이 기록된 프로젝트의 이름이고, exalted-darkness-6은 run의 이름이고, pgbn9y21은 run ID입니다.

각 run에는 run의 현재 상태를 설명하는 상태가 있습니다. 가능한 run 상태의 전체 목록은 Run 상태를 참조하십시오.

Run 상태

다음 표는 run이 가질 수 있는 가능한 상태를 설명합니다.

상태 설명
Finished run이 종료되고 데이터가 완전히 동기화되었거나 wandb.finish()가 호출되었습니다.
Failed run이 0이 아닌 종료 상태로 종료되었습니다.
Crashed run이 내부 프로세스에서 하트비트 전송을 중단했습니다. 이는 머신이 충돌할 경우 발생할 수 있습니다.
Running run이 여전히 실행 중이며 최근에 하트비트를 전송했습니다.

고유한 run 식별자

Run ID는 run에 대한 고유 식별자입니다. 기본적으로 W&B는 새 run을 초기화할 때 임의의 고유한 run ID를 생성합니다. run을 초기화할 때 고유한 run ID를 지정할 수도 있습니다.

자동 생성된 run ID

run을 초기화할 때 run ID를 지정하지 않으면 W&B는 임의의 run ID를 생성합니다. W&B 앱 UI에서 run의 고유 ID를 찾을 수 있습니다.

  1. https://wandb.ai/home에서 W&B 앱 UI로 이동합니다.
  2. run을 초기화할 때 지정한 W&B 프로젝트로 이동합니다.
  3. 프로젝트의 워크스페이스 내에서 Runs 탭을 선택합니다.
  4. Overview 탭을 선택합니다.

W&B는 Run path 필드에 고유한 run ID를 표시합니다. run 경로는 팀 이름, 프로젝트 이름 및 run ID로 구성됩니다. 고유 ID는 run 경로의 마지막 부분입니다.

예를 들어, 다음 이미지에서 고유한 run ID는 9mxi1arc입니다.

사용자 지정 run ID

id 파라미터를 wandb.init 메서드에 전달하여 사용자 고유의 run ID를 지정할 수 있습니다.

import wandb

run = wandb.init(entity="<project>", project="<project>", id="<run-id>")

run의 고유 ID를 사용하여 W&B 앱 UI에서 run의 Overview 페이지로 직접 이동할 수 있습니다. 다음 셀은 특정 run에 대한 URL 경로를 보여줍니다.

https://wandb.ai/<entity>/<project>/<run-id>

각도 괄호(<>)로 묶인 값은 엔터티, 프로젝트 및 run ID의 실제 값에 대한 자리 표시자입니다.

Run 이름 지정

run 이름은 사람이 읽을 수 있는 고유하지 않은 식별자입니다.

기본적으로 W&B는 새 run을 초기화할 때 임의의 run 이름을 생성합니다. run 이름은 프로젝트의 워크스페이스 내와 run의 Overview 페이지 상단에 나타납니다.

name 파라미터를 wandb.init 메서드에 전달하여 run 이름을 지정할 수 있습니다.

import wandb

run = wandb.init(entity="<project>", project="<project>", name="<run-name>")

Run에 노트 추가

특정 run에 추가하는 노트는 Overview 탭의 run 페이지와 프로젝트 페이지의 run 테이블에 나타납니다.

  1. W&B 프로젝트로 이동합니다.
  2. 프로젝트 사이드바에서 Workspace 탭을 선택합니다.
  3. 노트를 추가할 run을 run 선택기에서 선택합니다.
  4. Overview 탭을 선택합니다.
  5. Description 필드 옆에 있는 연필 아이콘을 선택하고 노트를 추가합니다.

Run 중지

W&B 앱 또는 프로그래밍 방식으로 run을 중지합니다.

  1. run을 초기화한 터미널 또는 코드 편집기로 이동합니다.
  2. Ctrl+D를 눌러 run을 중지합니다.

예를 들어, 이전 지침을 따르면 터미널이 다음과 유사하게 보일 수 있습니다.

KeyboardInterrupt
wandb: 🚀 View run legendary-meadow-2 at: https://wandb.ai/nico/history-blaster-4/runs/o8sdbztv
wandb: Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 1 other file(s)
wandb: Find logs at: ./wandb/run-20241106_095857-o8sdbztv/logs

W&B 앱 UI로 이동하여 run이 더 이상 활성 상태가 아닌지 확인합니다.

  1. run이 기록되고 있는 프로젝트로 이동합니다.
  2. run 이름을 선택합니다.
3. 프로젝트 사이드바에서 **Overview** 탭을 선택합니다.

State 필드 옆에 있는 run의 상태가 running에서 Killed로 변경됩니다.

  1. run이 기록되고 있는 프로젝트로 이동합니다.
  2. run 선택기 내에서 중지할 run을 선택합니다.
  3. 프로젝트 사이드바에서 Overview 탭을 선택합니다.
  4. State 필드 옆에 있는 맨 위 버튼을 선택합니다.

State 필드 옆에 있는 run의 상태가 running에서 Killed로 변경됩니다.

가능한 run 상태의 전체 목록은 상태 필드를 참조하십시오.

기록된 Run 보기

Run 상태, run에 기록된 Artifacts, run 중에 기록된 로그 파일 등과 같은 특정 run에 대한 정보를 봅니다.

특정 run을 보려면 다음을 수행하십시오.

  1. https://wandb.ai/home에서 W&B 앱 UI로 이동합니다.

  2. run을 초기화할 때 지정한 W&B 프로젝트로 이동합니다.

  3. 프로젝트 사이드바 내에서 Workspace 탭을 선택합니다.

  4. run 선택기 내에서 보려는 run을 클릭하거나 일치하는 run을 필터링하기 위해 run 이름의 일부를 입력합니다.

    기본적으로 긴 run 이름은 가독성을 위해 중간에서 잘립니다. 대신 run 이름을 시작 또는 끝에서 자르려면 run 목록 상단에 있는 작업 ... 메뉴를 클릭한 다음 Run name cropping을 설정하여 끝, 중간 또는 시작을 자릅니다.

특정 run의 URL 경로는 다음 형식을 갖습니다.

https://wandb.ai/<team-name>/<project-name>/runs/<run-id>

각도 괄호(<>)로 묶인 값은 팀 이름, 프로젝트 이름 및 run ID의 실제 값에 대한 자리 표시자입니다.

Overview 탭

Overview 탭을 사용하여 프로젝트에서 다음과 같은 특정 run 정보를 알아봅니다.

  • Author: run을 만드는 W&B 엔터티입니다.
  • Command: run을 초기화하는 코맨드입니다.
  • Description: 사용자가 제공한 run에 대한 설명입니다. run을 만들 때 설명을 지정하지 않으면 이 필드는 비어 있습니다. W&B 앱 UI를 사용하거나 Python SDK를 사용하여 프로그래밍 방식으로 run에 설명을 추가할 수 있습니다.
  • Duration: run이 일시 중지 또는 대기 시간을 제외하고 활발하게 연산하거나 데이터를 로깅하는 데 걸리는 시간입니다.
  • Git repository: run과 연결된 Git 리포지토리입니다. 이 필드를 보려면 Git을 활성화해야 합니다.
  • Host name: W&B가 run을 연산하는 위치입니다. 머신에서 로컬로 run을 초기화하는 경우 W&B는 머신 이름을 표시합니다.
  • Name: run 이름입니다.
  • OS: run을 초기화하는 운영 체제입니다.
  • Python executable: run을 시작하는 코맨드입니다.
  • Python version: run을 만드는 Python 버전을 지정합니다.
  • Run path: entity/project/run-ID 형식으로 고유한 run 식별자를 식별합니다.
  • Runtime: run 시작부터 종료까지의 총 시간을 측정합니다. run에 대한 실제 시간입니다. Runtime에는 run이 일시 중지되거나 리소스를 기다리는 시간이 포함되지만 Duration에는 포함되지 않습니다.
  • Start time: run을 초기화한 타임스탬프입니다.
  • State: run 상태입니다.
  • System hardware: W&B가 run을 연산하는 데 사용하는 하드웨어입니다.
  • Tags: 문자열 목록입니다. 태그는 관련 run을 함께 구성하거나 베이스라인 또는 프로덕션과 같은 임시 레이블을 적용하는 데 유용합니다.
  • W&B CLI version: run 코맨드를 호스팅한 머신에 설치된 W&B CLI 버전입니다.

W&B는 Overview 섹션 아래에 다음 정보를 저장합니다.

  • Artifact Outputs: run에서 생성된 Artifacts 출력입니다.
  • Config: wandb.config로 저장된 구성 파라미터 목록입니다.
  • Summary: wandb.log()로 저장된 요약 파라미터 목록입니다. 기본적으로 W&B는 이 값을 마지막으로 기록된 값으로 설정합니다.
W&B 대시보드 run Overview 탭

여기에서 프로젝트 Overview의 예를 봅니다.

Workspace 탭

Workspace 탭을 사용하여 자동 생성된 플롯 및 사용자 지정 플롯, 시스템 메트릭 등과 같은 시각화를 보고, 검색하고, 그룹화하고, 정렬합니다.

여기에서 프로젝트 워크스페이스의 예를 봅니다.

Runs 탭

Runs 탭을 사용하여 run을 필터링, 그룹화 및 정렬합니다.

다음 탭은 Runs 탭에서 수행할 수 있는 몇 가지 일반적인 작업을 보여줍니다.

Runs 탭에는 프로젝트의 run에 대한 세부 정보가 표시됩니다. 기본적으로 많은 열이 표시됩니다.

  • 표시되는 모든 열을 보려면 페이지를 가로로 스크롤합니다.
  • 열 순서를 변경하려면 열을 왼쪽이나 오른쪽으로 드래그합니다.
  • 열을 고정하려면 열 이름 위로 마우스를 가져간 다음 나타나는 작업 메뉴 ...를 클릭하고 Pin column을 클릭합니다. 고정된 열은 Name 열 뒤에 페이지 왼쪽에 가깝게 나타납니다. 고정된 열을 고정 해제하려면 Unpin column을 선택합니다.
  • 열을 숨기려면 열 이름 위로 마우스를 가져간 다음 나타나는 작업 메뉴 ...를 클릭하고 Hide column을 클릭합니다. 현재 숨겨진 모든 열을 보려면 Columns를 클릭합니다.
    • 숨겨진 열 이름을 클릭하여 숨김을 해제합니다.
    • 보이는 열 이름을 클릭하여 숨깁니다.
    • 보이는 열 옆에 있는 핀 아이콘을 클릭하여 고정합니다.

Runs 탭을 사용자 지정하면 사용자 지정이 Workspace 탭Runs 선택기에 반영됩니다.

지정된 열의 값을 기준으로 테이블의 모든 행을 정렬합니다.

  1. 마우스를 열 제목 위로 가져갑니다. 케밥 메뉴(세 개의 세로 문서)가 나타납니다.
  2. 케밥 메뉴(세 개의 세로 점)를 선택합니다.
  3. Sort Asc 또는 Sort Desc를 선택하여 행을 각각 오름차순 또는 내림차순으로 정렬합니다.
모델이 '0'이라고 가장 확신을 가지고 추측한 숫자를 확인하십시오.

위의 이미지는 val_acc라는 테이블 열에 대한 정렬 옵션을 보는 방법을 보여줍니다.

대시보드 위의 Filter 버튼으로 표현식을 사용하여 모든 행을 필터링합니다.

모델이 잘못 이해하는 예만 참조하십시오.

Add filter를 선택하여 행에 하나 이상의 필터를 추가합니다. 세 개의 드롭다운 메뉴가 나타납니다. 왼쪽에서 오른쪽으로 필터 유형은 열 이름, 연산자 및 값을 기준으로 합니다.

열 이름 이항 관계
허용된 값 String =, ≠, ≤, ≥, IN, NOT IN, Integer, float, string, 타임스탬프, null

표현식 편집기는 열 이름과 논리적 술어 구조에 대한 자동 완성 기능을 사용하여 각 용어에 대한 옵션 목록을 보여줍니다. “and” 또는 “or”(때로는 괄호)를 사용하여 여러 논리적 술어를 하나의 표현식으로 연결할 수 있습니다.

위의 이미지는 `val_loss` 열을 기준으로 하는 필터를 보여줍니다. 필터는 유효성 검사 손실이 1 이하인 run을 보여줍니다.

대시보드 위의 Group by 버튼을 사용하여 특정 열의 값을 기준으로 모든 행을 그룹화합니다.

진실 분포는 작은 오류를 보여줍니다. 8과 2는 7과 9로, 2는 2로 혼동됩니다.

기본적으로 이렇게 하면 다른 숫자 열이 해당 그룹 전체의 해당 열에 대한 값 분포를 보여주는 히스토그램으로 바뀝니다. 그룹화는 데이터에서 상위 수준 패턴을 이해하는 데 유용합니다.

System 탭

System 탭은 CPU 사용률, 시스템 메모리, 디스크 I/O, 네트워크 트래픽, GPU 사용률 등과 같은 특정 run에 대해 추적된 시스템 메트릭을 보여줍니다.

W&B가 추적하는 시스템 메트릭의 전체 목록은 시스템 메트릭을 참조하십시오.

여기에서 시스템 탭의 예를 봅니다.

Logs 탭

Log 탭은 표준 출력(stdout) 및 표준 오류(stderr)와 같은 코맨드라인에 출력된 내용을 보여줍니다.

로그 파일을 다운로드하려면 오른쪽 상단 모서리에 있는 Download 버튼을 선택합니다.

여기에서 로그 탭의 예를 봅니다.

Files 탭

Files 탭을 사용하여 모델 체크포인트, 검증 세트 예제 등과 같은 특정 run과 연결된 파일을 봅니다.

여기에서 파일 탭의 예를 봅니다.

Artifacts 탭

Artifacts 탭에는 지정된 run에 대한 입력 및 출력 artifacts가 나열됩니다.

여기에서 artifacts 탭의 예를 봅니다.

Run 삭제

W&B 앱으로 프로젝트에서 하나 이상의 run을 삭제합니다.

  1. 삭제할 run이 포함된 프로젝트로 이동합니다.
  2. 프로젝트 사이드바에서 Runs 탭을 선택합니다.
  3. 삭제할 run 옆에 있는 확인란을 선택합니다.
  4. 테이블 위에 있는 Delete 버튼(휴지통 아이콘)을 선택합니다.
  5. 나타나는 모달에서 Delete를 선택합니다.

Run 구성

이 섹션에서는 그룹 및 job 유형을 사용하여 run을 구성하는 방법에 대한 지침을 제공합니다. run을 그룹(예: 실험 이름)에 할당하고 job 유형(예: 전처리, 트레이닝, 평가, 디버깅)을 지정하면 워크플로우를 간소화하고 모델 비교를 개선할 수 있습니다.

Run에 그룹 또는 Job 유형 할당

W&B의 각 run은 그룹Job 유형으로 분류할 수 있습니다.

  • Group: 실험에 대한 광범위한 범주로, run을 구성하고 필터링하는 데 사용됩니다.
  • Job 유형: 전처리, 트레이닝 또는 평가와 같은 run의 기능입니다.

다음 예제 워크스페이스는 Fashion-MNIST 데이터셋에서 점점 더 많은 양의 데이터를 사용하여 베이스라인 모델을 트레이닝합니다. 워크스페이스는 색상을 사용하여 사용된 데이터 양을 나타냅니다.

  • 노란색에서 진한 녹색은 베이스라인 모델에 대해 점점 더 많은 양의 데이터를 나타냅니다.
  • 밝은 파란색에서 보라색에서 마젠타색은 추가 파라미터가 있는 더 복잡한 “이중” 모델에 대한 데이터 양을 나타냅니다.

W&B의 필터링 옵션과 검색 창을 사용하여 다음과 같은 특정 조건을 기준으로 run을 비교합니다.

  • 동일한 데이터셋에서 트레이닝합니다.
  • 동일한 테스트 세트에서 평가합니다.

필터를 적용하면 Table 보기가 자동으로 업데이트됩니다. 이렇게 하면 모델 간의 성능 차이를 식별할 수 있습니다(예: 특정 클래스가 다른 모델에 비해 훨씬 더 어려운지 확인).

1 - Add labels to runs with tags

로그된 메트릭 또는 아티팩트 데이터에서 명확하지 않을 수 있는 특정 기능으로 Runs에 레이블을 지정하려면 태그를 추가하세요.

예를 들어, Run의 모델이 in_production임을 나타내거나, 해당 Run이 preemptible인지, 이 Run이 baseline을 나타내는지 등을 나타내는 태그를 Run에 추가할 수 있습니다.

하나 이상의 Runs에 태그 추가

프로그래밍 방식으로 또는 대화형으로 Runs에 태그를 추가합니다.

사용 사례에 따라 필요에 가장 적합한 아래 탭을 선택하세요.

Run이 생성될 때 태그를 추가할 수 있습니다.

import wandb

run = wandb.init(
  entity="entity",
  project="<project-name>",
  tags=["tag1", "tag2"]
)

Run을 초기화한 후 태그를 업데이트할 수도 있습니다. 예를 들어, 다음 코드 조각은 특정 메트릭이 미리 정의된 임계값을 넘는 경우 태그를 업데이트하는 방법을 보여줍니다.

import wandb

run = wandb.init(
  entity="entity", 
  project="capsules", 
  tags=["debug"]
  )

# 모델을 훈련하는 파이썬 로직

if current_loss < threshold:
    run.tags = run.tags + ("release_candidate",)

Run을 생성한 후에는 Public API를 사용하여 태그를 업데이트할 수 있습니다. 예를 들면 다음과 같습니다.

run = wandb.Api().run("{entity}/{project}/{run-id}")
run.tags.append("tag1")  # 여기에서 Run 데이터를 기반으로 태그를 선택할 수 있습니다.
run.update()

이 방법은 동일한 태그를 사용하여 많은 수의 Runs에 태그를 지정하는 데 가장 적합합니다.

  1. 프로젝트 워크스페이스로 이동합니다.
  2. 프로젝트 사이드바에서 Runs를 선택합니다.
  3. 테이블에서 하나 이상의 Runs를 선택합니다.
  4. 하나 이상의 Runs를 선택했으면 테이블 위의 Tag 버튼을 선택합니다.
  5. 추가할 태그를 입력하고 Create new tag 확인란을 선택하여 태그를 추가합니다.

이 방법은 단일 Run에 수동으로 태그를 적용하는 데 가장 적합합니다.

  1. 프로젝트 워크스페이스로 이동합니다.
  2. 프로젝트 워크스페이스 내 Runs 목록에서 Run을 선택합니다.
  3. 프로젝트 사이드바에서 Overview를 선택합니다.
  4. Tags 옆에 있는 회색 더하기 아이콘(+) 버튼을 선택합니다.
  5. 추가할 태그를 입력하고 텍스트 상자 아래의 Add를 선택하여 새 태그를 추가합니다.

하나 이상의 Runs에서 태그 제거

태그는 W&B App UI를 사용하여 Runs에서 제거할 수도 있습니다.

이 방법은 많은 수의 Runs에서 태그를 제거하는 데 가장 적합합니다.

  1. 프로젝트의 Run 사이드바에서 오른쪽 상단의 테이블 아이콘을 선택합니다. 이렇게 하면 사이드바가 전체 Runs 테이블로 확장됩니다.
  2. 테이블에서 Run 위로 마우스를 가져가면 왼쪽에 확인란이 표시되거나 헤더 행에서 모든 Runs를 선택하는 확인란을 찾습니다.
  3. 확인란을 선택하여 대량 작업을 활성화합니다.
  4. 태그를 제거할 Runs를 선택합니다.
  5. Runs 행 위의 Tag 버튼을 선택합니다.
  6. 태그 옆에 있는 확인란을 선택하여 Run에서 제거합니다.
  1. Run 페이지의 왼쪽 사이드바에서 맨 위 Overview 탭을 선택합니다. Run의 태그가 여기에 표시됩니다.
  2. 태그 위로 마우스를 가져간 다음 “x"를 선택하여 Run에서 제거합니다.

2 - Filter and search runs

프로젝트 페이지에서 사이드바 및 테이블을 사용하는 방법

W&B에 기록된 run으로부터 얻은 통찰력을 프로젝트 페이지에서 활용하세요. Workspace 페이지와 Runs 페이지 모두에서 run을 필터링하고 검색할 수 있습니다.

Run 필터링

필터 버튼을 사용하여 상태, 태그 또는 기타 속성을 기준으로 run을 필터링합니다.

태그로 Run 필터링

필터 버튼을 사용하여 태그를 기준으로 run을 필터링합니다.

정규식으로 Run 필터링

정규식으로 원하는 결과를 얻을 수 없는 경우, 태그를 사용하여 Runs Table에서 run을 필터링할 수 있습니다. 태그는 run 생성 시 또는 완료 후에 추가할 수 있습니다. 태그가 run에 추가되면 아래 GIF와 같이 태그 필터를 추가할 수 있습니다.

If regex doesn't provide you the desired results, you can make use of tags to filter out the runs in Runs Table

Run 검색

regex를 사용하여 지정한 정규식으로 run을 찾습니다. 검색 상자에 쿼리를 입력하면 Workspace의 그래프에서 보이는 run과 테이블의 행이 필터링됩니다.

Run 그룹화

숨겨진 열을 포함하여 하나 이상의 열을 기준으로 run을 그룹화하려면 다음을 수행합니다.

  1. 검색 상자 아래에 있는 줄이 그어진 종이 모양의 Group 버튼을 클릭합니다.
  2. 결과를 그룹화할 열을 하나 이상 선택합니다.
  3. 그룹화된 run 세트는 기본적으로 축소됩니다. 확장하려면 그룹 이름 옆에 있는 화살표를 클릭합니다.

최소값 및 최대값으로 Run 정렬

기록된 메트릭의 최소값 또는 최대값으로 run 테이블을 정렬합니다. 이는 가장 좋거나 가장 나쁜 기록 값을 보려는 경우에 특히 유용합니다.

다음 단계에서는 기록된 최소값 또는 최대값을 기준으로 특정 메트릭으로 run 테이블을 정렬하는 방법을 설명합니다.

  1. 정렬하려는 메트릭이 있는 열 위에 마우스 커서를 올립니다.
  2. 케밥 메뉴(세 개의 세로선)를 선택합니다.
  3. 드롭다운에서 Show min 또는 Show max를 선택합니다.
  4. 동일한 드롭다운에서 Sort by asc 또는 Sort by desc를 선택하여 각각 오름차순 또는 내림차순으로 정렬합니다.

Run에 대한 종료 시간 검색

클라이언트 프로세스에서 마지막 heartbeat를 기록하는 End Time이라는 열을 제공합니다. 이 필드는 기본적으로 숨겨져 있습니다.

Run 테이블을 CSV로 내보내기

다운로드 버튼을 사용하여 모든 run, 하이퍼파라미터 및 요약 메트릭 테이블을 CSV로 내보냅니다.

3 - Fork a run

W&B run 포크하기

기존 W&B run에서 “포크"하려면 wandb.init()으로 run을 초기화할 때 fork_from을 사용하십시오. run에서 포크하면 W&B는 소스 run의 run IDstep을 사용하여 새 run을 생성합니다.

run을 포크하면 원래 run에 영향을 주지 않고 실험의 특정 시점에서 다른 파라미터 또는 Models를 탐색할 수 있습니다.

포크된 run 시작

run을 포크하려면 wandb.init()에서 fork_from 인수를 사용하고 포크할 소스 run ID와 소스 run의 step을 지정하십시오.

import wandb

# 나중에 포크할 run을 초기화합니다
original_run = wandb.init(project="your_project_name", entity="your_entity_name")
# ... 트레이닝 또는 로깅 수행 ...
original_run.finish()

# 특정 step에서 run을 포크합니다
forked_run = wandb.init(
    project="your_project_name",
    entity="your_entity_name",
    fork_from=f"{original_run.id}?_step=200",
)

변경 불가능한 run ID 사용

특정 run에 대한 일관되고 변경되지 않는 참조를 보장하려면 변경 불가능한 run ID를 사용하십시오. 사용자 인터페이스에서 변경 불가능한 run ID를 얻으려면 다음 단계를 따르십시오.

  1. Overview 탭에 엑세스: 소스 run 페이지의 Overview 탭으로 이동합니다.

  2. 변경 불가능한 Run ID 복사: Overview 탭의 오른쪽 상단에 있는 ... 메뉴(세 개의 점)를 클릭합니다. 드롭다운 메뉴에서 Copy Immutable Run ID 옵션을 선택합니다.

이러한 단계를 따르면 run에 대한 안정적이고 변경되지 않는 참조를 갖게 되어 run을 포크하는 데 사용할 수 있습니다.

포크된 run에서 계속하기

포크된 run을 초기화한 후 새 run에 계속 로그할 수 있습니다. 연속성을 위해 동일한 메트릭을 로그하고 새 메트릭을 도입할 수 있습니다.

예를 들어 다음 코드 예제에서는 먼저 run을 포크한 다음 트레이닝 step 200부터 포크된 run에 메트릭을 로그하는 방법을 보여줍니다.

import wandb
import math

# 첫 번째 run을 초기화하고 일부 메트릭을 로그합니다
run1 = wandb.init("your_project_name", entity="your_entity_name")
for i in range(300):
    run1.log({"metric": i})
run1.finish()

# 특정 step에서 첫 번째 run에서 포크하고 step 200부터 메트릭을 로그합니다
run2 = wandb.init(
    "your_project_name", entity="your_entity_name", fork_from=f"{run1.id}?_step=200"
)

# 새 run에서 계속 로깅합니다
# 처음 몇 steps 동안은 run1에서 메트릭을 그대로 로깅합니다
# Step 250 이후에는 스파이크 패턴 로깅을 시작합니다
for i in range(200, 300):
    if i < 250:
        run2.log({"metric": i})  # 스파이크 없이 run1에서 계속 로깅합니다
    else:
        # Step 250부터 스파이크 행동을 도입합니다
        subtle_spike = i + (2 * math.sin(i / 3.0))  # 미묘한 스파이크 패턴을 적용합니다
        run2.log({"metric": subtle_spike})
    # 모든 steps에서 새 메트릭을 추가로 로깅합니다
    run2.log({"additional_metric": i * 1.1})
run2.finish()

4 - Group runs into experiments

트레이닝 및 평가 run을 그룹화하여 더 큰 Experiments로 구성

개별 작업을 wandb.init() 에 고유한 group 이름을 전달하여 Experiments 로 그룹화합니다.

유스 케이스

  1. 분산 트레이닝: Experiments 가 별도의 트레이닝 및 평가 스크립트로 분할되어 더 큰 전체의 일부로 보아야 하는 경우 그룹화를 사용합니다.
  2. 다중 프로세스: 여러 개의 작은 프로세스를 하나의 experiment 로 그룹화합니다.
  3. K-겹 교차 검증: 더 큰 experiment 를 보기 위해 다른 임의 시드를 가진 Runs 를 함께 그룹화합니다. 다음은 스윕 및 그룹화를 사용한 k-겹 교차 검증의 예제입니다.

그룹화를 설정하는 세 가지 방법이 있습니다.

1. 스크립트에서 그룹 설정

선택적 group 및 job_type 을 wandb.init() 에 전달합니다. 이렇게 하면 각 experiment 에 대한 전용 그룹 페이지가 제공되며, 여기에는 개별 Runs 가 포함됩니다. 예를 들면 다음과 같습니다. wandb.init(group="experiment_1", job_type="eval")

2. 그룹 환경 변수 설정

WANDB_RUN_GROUP 를 사용하여 Runs 에 대한 그룹을 환경 변수로 지정합니다. 자세한 내용은 환경 변수에 대한 문서를 확인하세요. Group 은 프로젝트 내에서 고유해야 하며 그룹의 모든 Runs 에서 공유해야 합니다. wandb.util.generate_id() 를 사용하여 모든 프로세스에서 사용할 고유한 8자 문자열을 생성할 수 있습니다. 예를 들어 os.environ["WANDB_RUN_GROUP"] = "experiment-" + wandb.util.generate_id() 와 같습니다.

3. UI에서 그룹화 전환

구성 열별로 동적으로 그룹화할 수 있습니다. 예를 들어 wandb.config 를 사용하여 배치 크기 또는 학습률을 로그하면 웹 앱에서 해당 하이퍼파라미터별로 동적으로 그룹화할 수 있습니다.

그룹화를 사용한 분산 트레이닝

wandb.init() 에서 그룹화를 설정하면 UI에서 기본적으로 Runs 가 그룹화됩니다. 테이블 상단의 Group 버튼을 클릭하여 이를 켜거나 끌 수 있습니다. 그룹화를 설정한 샘플 코드에서 생성된 예제 프로젝트가 있습니다. 사이드바에서 각 “Group” 행을 클릭하여 해당 experiment 에 대한 전용 그룹 페이지로 이동할 수 있습니다.

위의 프로젝트 페이지에서 왼쪽 사이드바의 Group 을 클릭하여 이 페이지와 같은 전용 페이지로 이동할 수 있습니다.

UI에서 동적으로 그룹화

예를 들어 하이퍼파라미터별로 열별로 Runs 를 그룹화할 수 있습니다. 다음은 그 모양의 예입니다.

  • 사이드바: Runs 는 에포크 수별로 그룹화됩니다.
  • 그래프: 각 선은 그룹의 평균을 나타내고 음영은 분산을 나타냅니다. 이 동작은 그래프 설정에서 변경할 수 있습니다.

그룹화 끄기

언제든지 그룹화 버튼을 클릭하고 그룹 필드를 지우면 테이블과 그래프가 그룹 해제된 상태로 돌아갑니다.

그룹화 그래프 설정

그래프 오른쪽 상단 모서리에 있는 편집 버튼을 클릭하고 Advanced 탭을 선택하여 선과 음영을 변경합니다. 각 그룹에서 선의 평균, 최소값 또는 최대값을 선택할 수 있습니다. 음영의 경우 음영을 끄고 최소값과 최대값, 표준 편차 및 표준 오차를 표시할 수 있습니다.

5 - Move runs

이 페이지에서는 run 을 한 프로젝트에서 다른 프로젝트로, 팀 내부 또는 외부로, 또는 한 팀에서 다른 팀으로 이동하는 방법을 보여줍니다. 현재 위치와 새 위치에서 run 에 대한 엑세스 권한이 있어야 합니다.

Runs 탭을 사용자 정의하려면 Project page를 참조하세요.

프로젝트 간에 run 이동

run 을 한 프로젝트에서 다른 프로젝트로 이동하려면 다음을 수행합니다.

  1. 이동하려는 run 이 포함된 프로젝트로 이동합니다.
  2. 프로젝트 사이드바에서 Runs 탭을 선택합니다.
  3. 이동하려는 run 옆에 있는 확인란을 선택합니다.
  4. 테이블 위의 Move 버튼을 선택합니다.
  5. 드롭다운에서 대상 프로젝트를 선택합니다.

팀으로 run 이동

자신이 멤버인 팀으로 run 을 이동합니다.

  1. 이동하려는 run 이 포함된 프로젝트로 이동합니다.
  2. 프로젝트 사이드바에서 Runs 탭을 선택합니다.
  3. 이동하려는 run 옆에 있는 확인란을 선택합니다.
  4. 테이블 위의 Move 버튼을 선택합니다.
  5. 드롭다운에서 대상 팀 및 프로젝트를 선택합니다.

6 - Resume a run

일시 중지되었거나 종료된 W&B Run 다시 시작

run이 중지되거나 충돌할 경우 run이 어떻게 작동해야 하는지 지정합니다. run을 재개하거나 자동으로 재개하도록 설정하려면 id 파라미터에 대해 해당 run과 연결된 고유한 run ID를 지정해야 합니다.

run = wandb.init(entity="<entity>", \ 
        project="<project>", id="<run ID>", resume="<resume>")

다음 인수 중 하나를 resume 파라미터에 전달하여 W&B가 어떻게 응답해야 하는지 결정합니다. 각 경우에 대해 W&B는 먼저 run ID가 이미 존재하는지 확인합니다.

인수 설명 Run ID 존재 Run ID 존재하지 않음 유스 케이스
"must" W&B는 run ID로 지정된 run을 반드시 재개해야 합니다. W&B는 동일한 run ID로 run을 재개합니다. W&B에서 오류를 발생시킵니다. 동일한 run ID를 사용해야 하는 run을 재개합니다.
"allow" W&B가 run ID가 존재하는 경우 run을 재개하도록 허용합니다. W&B는 동일한 run ID로 run을 재개합니다. W&B는 지정된 run ID로 새 run을 초기화합니다. 기존 run을 덮어쓰지 않고 run을 재개합니다.
"never" W&B가 run ID로 지정된 run을 재개하도록 허용하지 않습니다. W&B에서 오류를 발생시킵니다. W&B는 지정된 run ID로 새 run을 초기화합니다.

resume="auto"를 지정하여 W&B가 자동으로 사용자를 대신하여 run을 다시 시작하도록 할 수도 있습니다. 그러나 동일한 디렉토리에서 run을 다시 시작해야 합니다. 자세한 내용은 자동으로 run을 재개하도록 설정 섹션을 참조하세요.

아래의 모든 예제에서는 <>로 묶인 값을 사용자 고유의 값으로 바꿉니다.

동일한 Run ID를 사용해야 하는 Run 재개

run이 중지되거나, 충돌하거나, 실패하는 경우 동일한 run ID를 사용하여 재개할 수 있습니다. 이렇게 하려면 run을 초기화하고 다음을 지정합니다.

  • resume 파라미터를 "must"(resume="must")로 설정합니다.
  • 중지되거나 충돌한 run의 run ID를 제공합니다.

다음 코드조각은 W&B Python SDK를 사용하여 이를 수행하는 방법을 보여줍니다.

run = wandb.init(entity="<entity>", \ 
        project="<project>", id="<run ID>", resume="must")

기존 Run을 덮어쓰지 않고 Run 재개

기존 run을 덮어쓰지 않고 중지되거나 충돌한 run을 재개합니다. 이는 프로세스가 성공적으로 종료되지 않는 경우에 특히 유용합니다. 다음에 W&B를 시작하면 W&B는 마지막 단계부터 로깅을 시작합니다.

W&B로 run을 초기화할 때 resume 파라미터를 "allow"(resume="allow")로 설정합니다. 중지되거나 충돌한 run의 run ID를 제공합니다. 다음 코드조각은 W&B Python SDK를 사용하여 이를 수행하는 방법을 보여줍니다.

import wandb

run = wandb.init(entity="<entity>", \ 
        project="<project>", id="<run ID>", resume="allow")

Run이 자동으로 재개되도록 설정

다음 코드조각은 Python SDK 또는 환경 변수를 사용하여 run이 자동으로 재개되도록 설정하는 방법을 보여줍니다.

다음 코드조각은 Python SDK로 W&B run ID를 지정하는 방법을 보여줍니다.

<>로 묶인 값을 사용자 고유의 값으로 바꿉니다.

run = wandb.init(entity="<entity>", \ 
        project="<project>", id="<run ID>", resume="<resume>")

다음 예제는 bash 스크립트에서 W&B WANDB_RUN_ID 변수를 지정하는 방법을 보여줍니다.

RUN_ID="$1"

WANDB_RESUME=allow WANDB_RUN_ID="$RUN_ID" python eval.py

터미널 내에서 W&B run ID와 함께 셸 스크립트를 실행할 수 있습니다. 다음 코드조각은 run ID akj172를 전달합니다.

sh run_experiment.sh akj172 

예를 들어 Users/AwesomeEmployee/Desktop/ImageClassify/training/이라는 디렉토리에서 train.py라는 python 스크립트를 실행한다고 가정합니다. train.py 내에서 스크립트는 자동 재개를 활성화하는 run을 만듭니다. 다음으로 트레이닝 스크립트가 중지되었다고 가정합니다. 이 run을 재개하려면 Users/AwesomeEmployee/Desktop/ImageClassify/training/ 내에서 train.py 스크립트를 다시 시작해야 합니다.

Preemptible Sweeps Run 재개

중단된 sweep run을 자동으로 다시 큐에 넣습니다. 이는 선점형 큐의 SLURM 작업, EC2 스팟 인스턴스 또는 Google Cloud 선점형 VM과 같이 선점이 적용되는 컴퓨팅 환경에서 sweep agent를 실행하는 경우에 특히 유용합니다.

mark_preempting 함수를 사용하여 W&B가 중단된 sweep run을 자동으로 다시 큐에 넣도록 설정합니다. 예를 들어, 다음 코드조각을 참조하세요.

run = wandb.init()  # Run 초기화
run.mark_preempting()

다음 표는 sweep run의 종료 상태에 따라 W&B가 run을 처리하는 방법을 간략하게 설명합니다.

상태 행동
상태 코드 0 Run이 성공적으로 종료된 것으로 간주되며 다시 큐에 넣지 않습니다.
0이 아닌 상태 W&B는 run을 sweep과 연결된 run 큐에 자동으로 추가합니다.
상태 없음 Run이 sweep run 큐에 추가됩니다. Sweep agent는 큐가 비워질 때까지 run 큐에서 run을 소비합니다. 큐가 비워지면 sweep 큐는 sweep 검색 알고리즘을 기반으로 새 run 생성을 재개합니다.

7 - Rewind a run

되감기

run 되감기

원본 데이터를 잃지 않고 run 기록을 수정하거나 변경하려면 run을 되감으십시오. 또한 run을 되감을 때 해당 시점부터 새로운 데이터를 로그할 수 있습니다. W&B는 새롭게 기록된 기록을 기반으로 되감은 run에 대한 요약 메트릭을 다시 계산합니다. 이는 다음 동작을 의미합니다.

  • 기록 잘림: W&B는 기록을 되감기 시점까지 자르므로 새로운 데이터 로깅이 가능합니다.
  • 요약 메트릭: 새롭게 기록된 기록을 기반으로 다시 계산됩니다.
  • 설정 보존: W&B는 원래 설정을 보존하고 새로운 설정을 병합할 수 있습니다.

run을 되감을 때 W&B는 원래 데이터를 보존하고 일관된 run ID를 유지하면서 run 상태를 지정된 단계로 재설정합니다. 이는 다음을 의미합니다.

  • run 보관: W&B는 원래 run을 보관합니다. Run Overview 탭에서 run에 엑세스할 수 있습니다.
  • 아티팩트 연결: 아티팩트를 해당 아티팩트를 생성하는 run과 연결합니다.
  • 변경 불가능한 run ID: 정확한 상태에서 일관된 포크를 위해 도입되었습니다.
  • 변경 불가능한 run ID 복사: 향상된 run 관리를 위해 변경 불가능한 run ID를 복사하는 버튼입니다.

run 되감기

resume_from과 함께 wandb.init()을 사용하여 run 기록을 특정 단계로 “되감습니다”. 되감을 run의 이름과 되감을 단계를 지정합니다.

import wandb
import math

# 첫 번째 run을 초기화하고 일부 메트릭을 기록합니다.
# your_project_name 및 your_entity_name으로 대체하십시오!
run1 = wandb.init(project="your_project_name", entity="your_entity_name")
for i in range(300):
    run1.log({"metric": i})
run1.finish()

# 특정 단계에서 첫 번째 run부터 되감고 200단계부터 메트릭을 기록합니다.
run2 = wandb.init(project="your_project_name", entity="your_entity_name", resume_from=f"{run1.id}?_step=200")

# 새로운 run에서 계속 기록합니다.
# 처음 몇 단계에서는 run1에서 메트릭을 그대로 기록합니다.
# 250단계 이후에는 스파이크 패턴을 기록하기 시작합니다.
for i in range(200, 300):
    if i < 250:
        run2.log({"metric": i, "step": i})  # 스파이크 없이 run1부터 계속 기록합니다.
    else:
        # 250단계부터 스파이크 동작을 도입합니다.
        subtle_spike = i + (2 * math.sin(i / 3.0))  # 미묘한 스파이크 패턴을 적용합니다.
        run2.log({"metric": subtle_spike, "step": i})
    # 또한 모든 단계에서 새로운 메트릭을 기록합니다.
    run2.log({"additional_metric": i * 1.1, "step": i})
run2.finish()

보관된 run 보기

run을 되감은 후 W&B App UI를 사용하여 보관된 run을 탐색할 수 있습니다. 보관된 run을 보려면 다음 단계를 따르십시오.

  1. Overview 탭에 엑세스: run 페이지의 Overview 탭으로 이동합니다. 이 탭은 run의 세부 정보 및 기록에 대한 포괄적인 보기를 제공합니다.
  2. Forked From 필드 찾기: Overview 탭 내에서 Forked From 필드를 찾습니다. 이 필드는 재개 기록을 캡처합니다. Forked From 필드에는 소스 run에 대한 링크가 포함되어 있어 원래 run으로 다시 추적하고 전체 되감기 기록을 이해할 수 있습니다.

Forked From 필드를 사용하면 보관된 재개 트리를 쉽게 탐색하고 각 되감기의 순서와 출처에 대한 통찰력을 얻을 수 있습니다.

되감은 run에서 포크

되감은 run에서 포크하려면 wandb.init()에서 fork_from 인수를 사용하고 포크할 소스 run ID와 소스 run의 단계를 지정합니다.

import wandb

# 특정 단계에서 run을 포크합니다.
forked_run = wandb.init(
    project="your_project_name",
    entity="your_entity_name",
    fork_from=f"{rewind_run.id}?_step=500",
)

# 새로운 run에서 계속 기록합니다.
for i in range(500, 1000):
    forked_run.log({"metric": i*3})
forked_run.finish()

8 - Send an alert

Slack 또는 이메일로 Python 코드에서 트리거되는 알림을 보냅니다.

run 이 충돌하거나 사용자 정의 트리거를 사용하는 경우 Slack 또는 이메일로 알림을 생성합니다. 예를 들어, 트레이닝 루프의 그레이디언트가 폭발하기 시작하거나 (NaN을 reports) ML 파이프라인의 단계가 완료되면 알림을 생성할 수 있습니다. 알림은 개인 및 팀 프로젝트를 포함하여 run을 초기화하는 모든 프로젝트에 적용됩니다.

그런 다음 Slack (또는 이메일)에서 W&B Alerts 메시지를 확인합니다:

알림 생성 방법

알림을 설정하는 주요 단계는 두 가지입니다:

  1. W&B 사용자 설정에서 Alerts 켜기
  2. 코드에 run.alert() 추가
  3. 알림이 올바르게 설정되었는지 확인

1. W&B 사용자 설정에서 알림 켜기

사용자 설정에서:

  • Alerts 섹션으로 스크롤
  • run.alert()에서 알림을 받으려면 스크립트 가능한 run 알림을 켭니다.
  • Slack 연결을 사용하여 알림을 게시할 Slack 채널을 선택합니다. 알림을 비공개로 유지하므로 Slackbot 채널을 권장합니다.
  • 이메일은 W&B에 가입할 때 사용한 이메일 주소로 전송됩니다. 이러한 모든 알림이 폴더로 이동하여 받은 편지함을 채우지 않도록 이메일에서 필터를 설정하는 것이 좋습니다.

W&B Alerts를 처음 설정하거나 알림 수신 방법을 수정하려는 경우에만 이 작업을 수행하면 됩니다.

W&B 사용자 설정의 알림 설정

2. 코드에 run.alert() 추가

알림을 트리거하려는 위치에서 코드 (노트북 또는 Python 스크립트)에 run.alert()를 추가합니다.

import wandb

run = wandb.init()
run.alert(title="High Loss", text="Loss is increasing rapidly")

3. Slack 또는 이메일 확인

Slack 또는 이메일에서 알림 메시지를 확인합니다. 아무것도 받지 못한 경우 사용자 설정에서 스크립트 가능한 알림에 대해 이메일 또는 Slack이 켜져 있는지 확인하십시오.

예시

이 간단한 알림은 정확도가 임계값 아래로 떨어지면 경고를 보냅니다. 이 예에서는 최소 5분 간격으로 알림을 보냅니다.

import wandb
from wandb import AlertLevel

run = wandb.init()

if acc < threshold:
    run.alert(
        title="Low accuracy",
        text=f"Accuracy {acc} is below the acceptable threshold {threshold}",
        level=AlertLevel.WARN,
        wait_duration=300,
    )

사용자 태그 또는 멘션 방법

알림 제목 또는 텍스트에서 자신 또는 동료를 태그하려면 at 기호 @ 다음에 Slack 사용자 ID를 사용하십시오. Slack 프로필 페이지에서 Slack 사용자 ID를 찾을 수 있습니다.

run.alert(title="Loss is NaN", text=f"Hey <@U1234ABCD> loss has gone to NaN")

팀 알림

팀 관리자는 팀 설정 페이지 wandb.ai/teams/your-team에서 팀에 대한 알림을 설정할 수 있습니다.

팀 알림은 팀의 모든 사용자에게 적용됩니다. W&B는 알림을 비공개로 유지하므로 Slackbot 채널을 사용하는 것이 좋습니다.

알림을 보낼 Slack 채널 변경

알림을 보낼 채널을 변경하려면 Slack 연결 끊기를 클릭한 다음 다시 연결합니다. 다시 연결한 후 다른 Slack 채널을 선택합니다.