메인 콘텐츠로 건너뛰기
아래는 모든 카테고리에서 가장 자주 묻는 질문입니다. 원하는 내용을 찾지 못했다면 아래의 인기 카테고리를 살펴보거나, 카테고리별로 문서를 검색해 보세요.

아직 원하는 정보를 찾지 못하셨나요?

지원팀에 문의하기
AdministratorAcademicUser Management
학생은 다음 단계를 따라 학술 플랜을 신청할 수 있습니다:
Artifacts
아티팩트는 상위 프로젝트의 접근 권한을 상속합니다:
  • 비공개 프로젝트에서는 팀 구성원만 아티팩트에 접근할 수 있습니다.
  • 공개 프로젝트에서는 모든 사용자가 아티팩트를 읽을 수 있지만, 생성하거나 수정할 수 있는 것은 팀 구성원뿐입니다.
  • 오픈 프로젝트에서는 모든 사용자가 아티팩트를 읽고 쓸 수 있습니다.

Artifacts 워크플로

이 섹션에서는 Artifacts를 관리하고 편집하기 위한 워크플로를 설명합니다. 많은 워크플로는 W&B에 저장된 데이터에 접근할 수 있도록 하는 클라이언트 라이브러리의 구성 요소인 W&B API를 활용합니다.
Experiments
history 객체는 wandb.log로 로깅된 메트릭을 추적합니다. API를 사용해 history 객체에 접근할 수 있습니다:
api = wandb.Api()
run = api.run("username/project/run_id")
print(run.history())
Sweeps
W&B Sweep이 한 번 시작되면 해당 Sweep 설정은 변경할 수 없습니다. 그러나 임의의 테이블 뷰로 이동해 체크박스로 run을 선택한 다음, Create sweep 메뉴 옵션을 선택하여 이전 run을 기반으로 새 Sweep 설정을 생성할 수 있습니다.
AdministratorUser Management
계정에 더 많은 좌석을 추가하려면 다음 단계를 따르세요:
  • 도움을 받으려면 영업 담당자(Account Executive) 또는 지원팀(support@wandb.com)에 연락합니다.
  • 조직 이름과 원하는 좌석 수를 제공합니다.
ExperimentsTablesCharts
Plotly 또는 Bokeh figure를 테이블에 직접 인테그레이션하는 기능은 지원되지 않습니다. 대신 figure를 HTML로 내보낸 다음, 해당 HTML을 테이블에 포함하세요. 아래 예시는 대화형 Plotly 및 Bokeh 차트를 사용해 이를 구현하는 방법을 보여 줍니다.
import wandb
import plotly.express as px

# 새 run을 초기화합니다
with wandb.init(project="log-plotly-fig-tables", name="plotly_html") as run:

    # 테이블을 생성합니다
    table = wandb.Table(columns=["plotly_figure"])

    # Plotly figure의 경로를 정의합니다
    path_to_plotly_html = "./plotly_figure.html"

    # Plotly figure를 생성합니다
    fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])

    # Plotly figure를 HTML로 내보냅니다
    # auto_play를 False로 설정하면 애니메이션 Plotly 차트가 자동으로 재생되지 않도록 할 수 있습니다
    fig.write_html(path_to_plotly_html, auto_play=False)

    # Plotly figure를 HTML 파일로 테이블에 추가합니다
    table.add_data(wandb.Html(path_to_plotly_html))

    # 테이블을 로그로 남깁니다
    run.log({"test_table": table})

AdministratorTeam Management
서비스 계정은 W&B에서 여러 팀에 추가할 수 없습니다. 각 서비스 계정은 특정 팀에만 연결됩니다.
Reports
여러 작성자를 추가하여 리포트에 기여한 모든 사람에게 정확히 공로를 인정하세요.여러 작성자를 추가하려면, 작성자 이름 옆의 + 아이콘을 클릭하세요. 그러면 리포트에 접근 권한이 있는 모든 사용자가 표시된 드롭다운 메뉴가 열립니다. 작성자로 추가하려는 사용자를 선택하세요.
여러 리포트 작성자 추가하기
Administrator
인스턴스의 관리자라면, 사용자 추가 및 Teams 생성 방법에 대해서는 사용자 관리 섹션을 검토하세요.
Python
pip 또는 conda를 사용해 설치할 수 있는 Anaconda 패키지가 있습니다. conda를 사용하는 경우 conda-forge 채널에서 패키지를 설치하세요.
# conda 환경 생성
conda create -n wandb-env python=3.8 anaconda
# 환경 활성화
conda activate wandb-env
# pip으로 wandb 설치
pip install wandb
설치 중 문제가 발생하면 패키지 관리를 다루는 Anaconda 문서를 참고하세요.
Anonymous
  • 지속 데이터 없음: 익명 계정에 저장된 Runs는 7일 동안만 보관됩니다. 익명 run 데이터를 실제 계정으로 저장해 소유권을 가져올 수 있습니다.
익명 모드 인터페이스
  • 아티팩트 로깅 불가: 익명 run에 아티팩트를 로깅하려고 하면, 커맨드 라인에 다음과 같은 경고가 표시됩니다:
    wandb: WARNING Artifacts logged anonymously cannot be claimed and expire after 7 days.
    
  • 프로필 및 설정 페이지 없음: UI에는 일부 페이지가 포함되지 않습니다. 해당 페이지들은 실제 계정에만 유용하기 때문입니다.
ArtifactsStorage
두 아티팩트 버전 사이에서 변경된 파일만 스토리지 비용이 발생합니다.
아티팩트 중복 제거
cat.pngdog.png 두 개의 이미지 파일을 포함하는 animals라는 이미지 아티팩트를 예로 들어보겠습니다:
images
|-- cat.png (2MB) # `v0`에 추가됨
|-- dog.png (1MB) # `v0`에 추가됨
이 아티팩트의 버전은 v0입니다.새 이미지인 rat.png를 추가하면, 다음과 같은 내용을 가진 새 아티팩트 버전 v1이 생성됩니다:
images
|-- cat.png (2MB) # `v0`에 추가됨
|-- dog.png (1MB) # `v0`에 추가됨
|-- rat.png (3MB) # `v1`에 추가됨
버전 v1은 총 6MB를 추적하지만, 나머지 3MB를 v0와 공유하므로 실제로는 3MB만 차지합니다. v1을 삭제하면 rat.png와 관련된 3MB 스토리지가 회수됩니다. v0를 삭제하면 cat.pngdog.png의 스토리지 비용이 v1으로 이전되어 v1의 스토리지 사용량이 6MB로 증가합니다.
Artifacts
모델을 버저닝하는 방법은 여러 가지가 있습니다. Artifacts는 특정 요구 사항에 맞춰 모델 버전 관리를 할 수 있는 도구를 제공합니다. 여러 모델 아키텍처를 탐색하는 프로젝트에서는 아키텍처별로 아티팩트를 분리하는 방식이 일반적입니다. 다음 단계를 고려해 보세요:
  1. 각 서로 다른 모델 아키텍처마다 새 아티팩트를 만드세요. 아티팩트의 metadata 속성을 사용하여 아키텍처에 대한 상세 설명을 제공하세요. 이는 run의 config를 사용하는 방식과 유사합니다.
  2. 각 모델에 대해 log_artifact로 주기적으로 체크포인트를 로깅하세요. W&B는 이 체크포인트들의 이력을 구축하고, 가장 최근 체크포인트에는 latest 별칭을 붙입니다. architecture-name:latest를 사용해 어떤 모델 아키텍처에 대해서든 최신 체크포인트를 참조할 수 있습니다.
ArtifactsSweeps
sweep에서 모델을 로깅하는 효과적인 방법 중 하나는 해당 스윕을 위한 모델 아티팩트를 만드는 것입니다. 각 버전은 스윕에서 나온 서로 다른 run을 나타냅니다. 다음과 같이 구현할 수 있습니다:
wandb.Artifact(name="sweep_name", type="model")
HyperparameterSweepsRuns
wandb.init(tags='your_tag')로 고유한 태그를 설정하세요. 이렇게 하면 Project Page의 Runs Table에서 해당 태그를 선택하여 프로젝트 run을 효율적으로 필터링할 수 있습니다.wandb.init()에 대한 자세한 내용은 wandb.init() 레퍼런스를 참고하세요.
Security
Weights & Biases에는 버그 바운티 프로그램이 있습니다. 자세한 내용은 W&B security portal에 접속하세요.
Administrator
  • 지원팀에 연락하세요 (support@wandb.com).
  • 조직 이름, 계정에 연결된 이메일, 사용자 이름을 제공하세요.
AdministratorAcademicUser Management
W&B에서 회사 계정을 학술 계정으로 변경하려면 다음 단계를 따르세요:
  1. 학술 이메일 연결:
    • 계정 설정에 접속합니다.
    • 학술 이메일을 추가하고 기본 이메일로 설정합니다.
  2. 학술 플랜 신청:
AdministratorBilling
청구 주소를 변경하려면 지원팀(support@wandb.com)에 연락하세요.
Sweeps
환경 변수 WANDB_DIR을 설정하여 W&B run 데이터의 로깅 디렉터리를 지정하세요. 예시는 다음과 같습니다:
os.environ["WANDB_DIR"] = os.path.abspath("your/directory")
Runs
API를 사용하여 완료된 run에 할당된 그룹을 변경할 수 있습니다. 이 기능은 웹 UI에는 표시되지 않습니다. 그룹을 업데이트하려면 다음 코드를 사용하세요:
import wandb

api = wandb.Api()
run = api.run("<ENTITY>/<PROJECT>/<RUN_ID>")
run.group = "NEW-GROUP-NAME"
run.update()
AdministratorUser Management
계정을 생성한 이후에는 사용자 이름을 변경할 수 없습니다. 원하는 사용자 이름으로 새 계정을 생성하세요.
Python
W&B 클라이언트 라이브러리는 버전 0.10까지 Python 2.7과 Python 3를 모두 지원했습니다. Python 2의 서비스 종료로 인해 버전 0.11부터는 Python 2.7 지원이 중단되었습니다. Python 2.7 시스템에서 pip install --upgrade wandb를 실행하면 0.10.x 시리즈의 신규 릴리스만 설치됩니다. 0.10.x 시리즈에 대한 지원은 심각한 버그 수정 및 패치에 한해서만 제공됩니다. Python 2.7을 지원하는 0.10.x 시리즈의 마지막 버전은 0.10.33입니다.
Python
W&B 클라이언트 라이브러리는 버전 0.11까지 Python 3.5를 지원했습니다. Python 3.5에 대한 지원은 해당 버전의 서비스 종료 일정에 맞춰 버전 0.12에서 종료되었습니다. 자세한 내용은 version 0.12 release notes를 참고하세요.
Experiments
이미지 패널을 확장하고 step 슬라이더를 사용해 서로 다른 step의 이미지를 탐색하세요. 이 과정을 통해 트레이닝 중 모델 출력의 변화를 비교할 수 있습니다.
Experiments
트레이닝 스크립트의 시작 부분에서 wandb.init을 호출하면서 실험 이름을 지정하세요. 예: wandb.init(name="my_awesome_run").
ReportsWysiwyg
리포트 상단의 메시지를 통해 변환을 수행했다면, 빨간색 “Revert” 버튼을 클릭해 이전 상태로 복원하세요. 변환 이후에 한 변경 사항은 모두 사라집니다.단일 Markdown 블록만 변환한 경우에는 cmd+z로 실행을 취소하세요.세션이 종료되어 되돌리기 옵션을 사용할 수 없다면, 초안을 버리거나 마지막으로 저장된 버전에서 다시 편집하는 것을 고려하세요. 둘 다 불가능하다면 W&B Support에 문의하세요.
Crashing And Hanging Runs
트레이닝 run에 간섭이 발생하지 않도록 하는 것이 매우 중요합니다. W&B는 별도의 프로세스로 동작하므로, W&B에 충돌이 발생하더라도 트레이닝은 계속 진행됩니다. 인터넷 장애가 발생한 경우에도 W&B는 wandb.ai로 데이터를 전송하기 위해 지속적으로 재시도합니다.
User Management
삭제된 계정에 연결되어 있던 이메일 주소로 새 계정을 다시 만들 수 있습니다.
Team Management
역할 및 권한에 대한 자세한 내용은 다음 링크를 참조하세요: Team Roles and Permissions.
Sweeps
트레이닝 설정이 커맨드라인 인자를 전달하도록 되어 있다면, 커스텀 CLI 명령과 함께 W&B Sweeps를 사용할 수 있습니다.아래 예시에서, 코드 스니펫은 사용자가 train.py라는 Python 스크립트를 트레이닝하면서 스크립트가 파싱할 값을 제공하는 bash 터미널을 보여줍니다:
/usr/bin/env python train.py -b \
    your-training-config \
    --batchsize 8 \
    --lr 0.00001
커스텀 명령을 사용하려면 YAML 파일에서 command 키를 수정하세요. 이전 예시에 기반하면 설정은 다음과 같습니다:
program:
  train.py
method: grid
parameters:
  batch_size:
    value: 8
  lr:
    value: 0.0001
command:
  - ${env}
  - python
  - ${program}
  - "-b"
  - your-training-config
  - ${args}
${args} 키는 스윕 설정의 모든 파라미터를 argparse 포맷인 --param1 value1 --param2 value2 형태로 확장합니다.argparse에서 처리하지 않는 추가 인자를 사용하려면 다음과 같이 구현하세요:
parser = argparse.ArgumentParser()
args, unknown = parser.parse_known_args()
환경에 따라 python이 Python 2를 가리킬 수 있습니다. Python 3을 확실히 실행하려면 명령 설정에서 python3를 사용하세요:
program:
  script.py
command:
  - ${env}
  - python3
  - ${program}
  - ${args}
Workspaces
다크 모드는 베타 단계이며 접근성에 최적화되어 있지 않습니다. 다크 모드를 활성화하려면 다음을 수행하세요:
  1. W&B account settings로 이동합니다.
  2. Public preview features 섹션으로 스크롤합니다.
  3. UI Display에서 드롭다운에서 Dark mode를 선택합니다.
Connectivity
wandb: Network error (ConnectionError), entering retry loop와 같은 SSL 또는 네트워크 에러가 발생하면, 다음 해결책을 시도하세요:
  1. SSL 인증서를 갱신합니다. Ubuntu 서버에서는 update-ca-certificates를 실행하세요. 트레이닝 로그를 안전하게 동기화하려면 유효한 SSL 인증서가 필수입니다.
  2. 네트워크 연결이 불안정한 경우, optional environment variable WANDB_MODEoffline으로 설정해 오프라인 모드로 동작하게 한 뒤, 나중에 인터넷이 되는 장치에서 파일을 동기화하세요.
  3. 로컬에서 실행되고 클라우드 서버로의 동기화를 피할 수 있는 W&B Private Hosting 사용을 고려하세요.
SSL CERTIFICATE_VERIFY_FAILED 에러의 경우, 회사 방화벽이 원인일 수 있습니다. 로컬 CA를 설정한 뒤 다음을 실행하세요:export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
Charts
커스텀 차트 편집기를 엽니다. 현재 선택된 차트 유형을 클릭하면 모든 프리셋이 표시된 메뉴가 열립니다. 삭제할 프리셋 위에 마우스를 올린 다음 휴지통 아이콘을 클릭합니다.
차트 프리셋 삭제
Administrator
조직 계정을 삭제하려면 지원 팀(support@wandb.com)에 연락하십시오.
ReportsWysiwyg
패널 그리드를 선택한 후 Delete 또는 Backspace 키를 누릅니다. 패널 그리드를 선택하려면 오른쪽 상단의 드래그 핸들을 클릭합니다.
AdministratorTeam Management
계정에서 팀을 삭제하려면:
  • 관리자 권한으로 팀 설정에 접근합니다.
  • 페이지 하단의 Delete 버튼을 클릭합니다.
Experiments
run에 이름을 명시적으로 지정하지 않으면, W&B가 프로젝트에서 해당 run을 식별할 수 있도록 임의의 이름을 자동으로 부여합니다. 임의 이름의 예로는 pleasant-flower-4misunderstood-glade-2가 있습니다.
Charts
summary는 테이블에 표시되고, log는 이후 그래프 작성을 위해 모든 값을 저장합니다.예를 들어, 정확도가 변경될 때마다 run.log()를 호출합니다. 기본적으로 run.log()는 해당 메트릭을 수동으로 설정하지 않은 경우 summary 값을 업데이트합니다.산점도와 평행좌표 플롯은 summary 값을 사용하고, 선형 플롯은 run.log로 기록된 모든 값을 표시합니다.일부 사용자는 가장 최근의 정확도가 아니라 최적의 정확도를 반영하도록 summary를 수동으로 설정하기를 선호합니다.
Team Management
팀은 동일한 프로젝트에서 작업하는 사용자들을 위한 협업 워크스페이스 역할을 합니다. 엔터티는 사용자 이름 또는 팀 이름을 나타냅니다. W&B에서 run을 로깅할 때는 wandb.init(entity="example-team")과 같이 엔터티를 개인 계정 또는 팀 계정으로 설정합니다.
Team ManagementAdministrator
팀은 동일한 프로젝트에서 작업하는 사용자들을 위한 협업 워크스페이스 역할을 합니다. 조직은 여러 팀을 포함할 수 있는 상위 수준의 엔터티로, 보통 결제 및 계정 관리와 관련이 있습니다.
Experiments
다음 모드를 사용할 수 있습니다:
  • online (기본값): 클라이언트가 데이터를 wandb 서버로 전송합니다.
  • offline: 클라이언트가 데이터를 wandb 서버로 전송하는 대신 머신에 로컬로 저장합니다. 나중에 데이터를 동기화하려면 wandb sync 명령을 사용합니다.
  • disabled: 클라이언트가 목업 객체를 반환하여 동작을 시뮬레이션하고, 모든 네트워크 통신을 방지합니다. 모든 로깅이 비활성화되지만, 모든 API 메서드 스텁은 계속 호출 가능합니다. 이 모드는 일반적으로 테스트에 사용됩니다.
Tensorboard
W&B는 TensorBoard와 통합되어 실험 추적 도구를 개선합니다. 창업자들은 TensorBoard 사용자들이 겪는 공통적인 불편함을 해결하기 위해 W&B를 만들었습니다. 주요 개선 사항은 다음과 같습니다:
  1. 모델 재현성: W&B는 실험, 탐색, 모델 재현을 수월하게 합니다. 메트릭, 하이퍼파라미터, 코드 버전 정보를 기록하고 모델 체크포인트를 저장하여 재현성을 보장합니다.
  2. 자동 정리: W&B는 시도한 모든 모델의 개요를 제공해 프로젝트 인수인계와 휴가 기간 동안의 업무 공백을 줄여 줍니다. 이를 통해 과거 실험을 다시 실행하지 않아도 되어 시간을 절약할 수 있습니다.
  3. 빠른 인테그레이션: 5분 안에 W&B를 프로젝트에 인테그레이션하세요. 무료 오픈 소스 Python 패키지를 설치하고 몇 줄의 코드를 추가하면 됩니다. 로깅된 메트릭과 기록은 각 모델 run과 함께 표시됩니다.
  4. 중앙 집중식 대시보드: 트레이닝이 어디에서 실행되든—로컬, 랩 클러스터, 클라우드 스팟 인스턴스—일관된 대시보드에 액세스할 수 있습니다. 서로 다른 머신에서 TensorBoard 파일을 따로 관리할 필요가 없습니다.
  5. 강력한 필터링 테이블: 다양한 모델의 결과를 검색, 필터링, 정렬, 그룹화할 수 있습니다. TensorBoard가 대규모 프로젝트에서 어려움을 겪는 영역에서, 서로 다른 작업에 대해 가장 성능이 좋은 모델을 쉽게 식별할 수 있습니다.
  6. 협업 도구: W&B는 복잡한 머신러닝 프로젝트에서 협업을 강화합니다. 프로젝트 링크를 공유하고 비공개 팀을 활용해 결과를 공유할 수 있습니다. 작업 로그나 발표를 위해 인터랙티브 시각화와 마크다운 설명이 포함된 리포트를 생성하세요.
BillingAdministrator
구독 플랜을 다운그레이드하려면 현재 플랜과 원하는 플랜 정보를 포함해 support@wandb.com으로 지원팀에 문의하세요.
Reports
개인의 비공개 프로젝트 내에서 생성된 리포트는 해당 사용자에게만 표시됩니다. 사용자는 자신의 프로젝트를 팀 또는 공개 대상으로 공유할 수 있습니다.팀 프로젝트에서는 관리자 또는 리포트를 생성한 멤버가 다른 팀 멤버에 대해 편집 권한과 보기 권한을 전환할 수 있습니다. 팀 멤버는 리포트를 공유할 수 있습니다.리포트를 공유하려면 오른쪽 상단의 Share 버튼을 선택하세요. 이메일 주소를 입력하거나 매직 링크를 복사합니다. 이메일로 초대된 사용자는 리포트를 보기 위해 W&B에 로그인해야 하지만, 매직 링크를 가진 사용자는 로그인할 필요가 없습니다.공유된 리포트는 보기 전용 권한을 유지합니다.
Reports
리포트를 임베딩하여 공유할 수 있습니다. 리포트 오른쪽 상단의 Share 버튼을 클릭한 다음, 팝업 창 하단에서 임베딩 코드를 복사하세요.
리포트 임베딩
Sweeps
Sweeps에 대한 코드 로깅을 활성화하려면 W&B run을 초기화한 후 wandb.log_code()를 추가하세요. 이 작업은 W&B 프로필 설정에서 코드 로깅이 활성화되어 있더라도 필요합니다. 고급 코드 로깅에 대해서는 여기에서 wandb.log_code()에 대한 문서를 참조하세요.
Environment Variables
wandb.init에 전달된 인자는 환경 변수보다 우선합니다. 환경 변수가 설정되지 않았을 때 시스템 기본값이 아닌 다른 기본 디렉터리를 설정하려면 wandb.init(dir=os.getenv("WANDB_DIR", my_default_override))를 사용하세요.
SweepsHyperparameter
W&B는 이산형 탐색 공간(discrete search space)을 사용하는 W&B Sweep을 생성할 때 생성될 Runs의 수를 추정해 보여줍니다. 이 값은 탐색 공간의 데카르트 곱(Cartesian product)을 반영합니다.예를 들어, 다음과 같은 탐색 공간을 고려해 보겠습니다:
Estimated runs 열
이 경우 데카르트 곱의 값은 9입니다. W&B는 이 값을 App UI에서 추정 run 개수(Est. Runs)로 표시합니다:
Sweep run 추정
프로그램으로 추정 Run 개수를 가져오려면, W&B SDK 내에서 Sweep 객체의 expected_run_count 속성을 사용합니다:
sweep_id = wandb.sweep(
    sweep_configs, project="your_project_name", entity="your_entity_name"
)
api = wandb.Api()
sweep = api.sweep(f"your_entity_name/your_project_name/sweeps/{sweep_id}")
print(f"EXPECTED RUN COUNT = {sweep.expected_run_count}")
AdministratorUser Management
W&B 조직에서 사용자 목록을 내보내려면, 관리자 계정으로 다음 코드를 사용해 SCIM API를 호출합니다:
import base64
import requests

def encode_base64(username, key):
    auth_string = f'{username}:{key}'
    return base64.b64encode(auth_string.encode('utf-8')).decode('utf-8')

username = ''  # 조직 관리자 사용자 이름
key = ''  # API 키
scim_base_url = 'https://api.wandb.ai/scim/v2'
users_endpoint = f'{scim_base_url}/Users'
headers = {
    'Authorization': f'Basic {encode_base64(username, key)}',
    'Content-Type': 'application/scim+json'
}

response = requests.get(users_endpoint, headers=headers)
users = []
for user in response.json()['Resources']:
    users.append([user['userName'], user['emails']['Value']])
필요에 따라 출력 결과를 저장하도록 스크립트를 수정하세요.
Artifacts
W&B에 아티팩트 참조를 로그로 남겼고 버킷에서 버저닝이 활성화되어 있다면, Amazon S3 UI에 Version ID가 표시됩니다. 이 Version ID와 ETag를 W&B에서 가져오려면, 아티팩트를 가져온 뒤 해당 매니페스트 엔트리에 접근하면 됩니다. 예시는 다음과 같습니다:
artifact = run.use_artifact("my_table:latest")
for entry in artifact.manifest.entries.values():
    versionID = entry.extra.get("versionID")
    etag = entry.extra.get("etag")
Logs
문제가 발생한 run에 대해, 코드가 실행된 디렉터리의 wandb/run-<date>_<time>-<run-id>/logs 안에 있는 debug.logdebug-internal.log를 확인하세요.
ConnectivityOutage
W&B에서 “Filestream rate limit exceeded” 오류를 해결하려면 다음 단계를 따르세요:로그 최적화:
  • 로깅 빈도를 줄이거나 로그를 배치로 전송하여 API 요청을 줄입니다.
  • 실험 시작 시간을 분산해 동시에 발생하는 API 요청을 피합니다.
장애 여부 확인:
  • W&B status updates를 확인하여, 문제가 일시적인 서버 측 이슈로 인한 것이 아닌지 확인합니다.
지원팀에 문의:
  • 실험 설정에 대한 상세 정보를 포함해 W&B 지원팀(support@wandb.com)에 연락하여 rate limit 상향을 요청하세요.
Reports
검색창을 사용해 리포트 목록을 필터링합니다. 개별적으로 삭제하려면 원하지 않는 리포트를 선택해 삭제하고, 모든 리포트를 한 번에 삭제하려면 모든 리포트를 선택한 다음 ‘Delete Reports’를 클릭해 프로젝트에서 제거합니다.
원하지 않는 리포트와 초안 삭제
SecurityUser Management
Dedicated CloudSelf-Managed 환경에서:
  • 조직 관리자는 조직의 모든 사용자와 서비스 계정에 대한 API 키를 찾거나 목록을 확인할 수 있습니다.
  • 팀 관리자는 자신이 관리하는 팀의 서비스 계정에 대한 API 키를 찾거나 목록을 확인할 수 있습니다.
  • 비관리자 사용자는 자신의 API 키를 찾거나 목록을 확인할 수 있습니다.
API 키를 찾으려면 Personal API key 또는 Service Account API key 탭을 선택해 자세한 정보를 확인하세요.
사용자 ID가 소유한 개인 API 키를 찾으려면:
  1. W&B에 로그인한 다음 사용자 프로필 아이콘을 클릭하고 User Settings를 클릭합니다.
  2. API Keys 섹션으로 스크롤합니다.
API 키 테이블에는 식별 목적으로 키 ID(각 API 키의 첫 번째 부분)가 표시됩니다. 전체 비밀 API 키 값은 생성할 때 한 번만 표시됩니다. 기존 키를 사용해야 하지만 전체 비밀 키 값을 저장해 두지 않았다면 새 API 키를 생성해야 합니다.
Artifacts
스윕에서 가장 성능이 뛰어난 run의 아티팩트를 가져오려면 다음 코드를 사용하세요:
api = wandb.Api()
sweep = api.sweep("entity/project/sweep_id")
runs = sorted(sweep.runs, key=lambda run: run.summary.get("val_acc", 0), reverse=True)
best_run = runs[0]
for artifact in best_run.logged_artifacts():
    artifact_path = artifact.download()
    print(artifact_path)
Artifacts
W&B는 각 run이 로깅한 아티팩트와 각 run이 사용한 아티팩트를 추적하여 아티팩트 그래프를 구성합니다. 이 그래프는 run과 아티팩트를 노드로 하는 이분 그래프이자 방향 비순환 그래프입니다. 예시는 여기에서 볼 수 있습니다(그래프를 확장하려면 “Explode”를 클릭하세요).Public API를 사용해 아티팩트나 run 중 하나에서 시작해 이 그래프를 프로그래밍 방식으로 탐색할 수 있습니다.
api = wandb.Api()

artifact = api.artifact("project/artifact:alias")

# 아티팩트에서 그래프를 위쪽으로 탐색:
producer_run = artifact.logged_by()
# 아티팩트에서 그래프를 아래쪽으로 탐색:
consumer_runs = artifact.used_by()

# run에서 그래프를 아래쪽으로 탐색:
next_artifacts = consumer_runs[0].logged_artifacts()
# run에서 그래프를 위쪽으로 탐색:
previous_artifacts = producer_run.used_artifacts()
Sweeps
설정의 command 섹션에서 ${args_no_boolean_flags} 매크로를 사용해 하이퍼파라미터를 불리언 플래그로 전달하세요. 이 매크로는 불리언 파라미터를 자동으로 플래그에 포함합니다. paramTrue이면 명령은 --param을 받습니다. paramFalse이면 해당 플래그는 생략됩니다.
Tensorboard
지수 이동 평균(Exponential Moving Average) 공식은 TensorBoard에서 사용하는 것과 동일합니다.동등한 Python 구현에 대한 자세한 내용은 Stack OverFlow의 이 설명을 참고하세요. 이 문서 작성 시점 기준 TensorBoard의 스무딩 알고리즘 소스 코드는 여기에서 확인할 수 있습니다.
Workspaces
일부 기능은 팀 설정의 Beta Features 섹션에 있는 기능 플래그 아래에 숨겨져 있습니다.
기능 플래그 아래에 숨겨진 사용 가능한 베타 기능
Experiments
“No visualization data logged yet” 메시지가 나타나면, 스크립트가 아직 첫 번째 wandb.log 호출을 실행하지 않은 것입니다. 이 상황은 run이 한 스텝을 완료하는 데 오래 걸리는 경우에 발생할 수 있습니다. 데이터 로깅을 더 빠르게 하려면 에포크 끝에서 한 번만 로깅하는 대신 에포크당 여러 번 로깅하세요.
RunsWorkspaces
그룹 내 개별 run의 색상은 변경할 수 없습니다. 같은 그룹의 모든 run은 공통된 색상을 공유합니다.
Runs
하나의 run에는 여러 개의 태그를 지정할 수 있기 때문에, 태그별 그룹화는 지원되지 않습니다. 대신 이러한 run의 config 객체에 값을 추가하고, 이 config 값을 기준으로 그룹화하십시오. 이 작업은 API를 사용하여 수행할 수 있습니다.
WorkspacesRuns
네, 태그나 사용자 정의 메타데이터를 사용해서도 run을 분류할 수 있습니다. 이는 프로젝트의 Workspace 및 Runs 뷰에 있는 Group 버튼을 사용해 수행할 수 있습니다.
AdministratorTeam Management
팀 관리자(admin)는 팀 설정의 Users 탭에서 팀에서 나를 제거할 수 있습니다.
Environment VariablesExperiments
  • WANDB_DIR=<path> 또는 wandb.init(dir=<path>): 트레이닝 스크립트에 대해 생성되는 wandb 폴더의 위치를 제어합니다. 기본값은 ./wandb입니다. 이 폴더는 run의 데이터와 로그를 저장합니다.
  • WANDB_ARTIFACT_DIR=<path> 또는 wandb.Artifact().download(root="<path>"): 아티팩트가 다운로드되는 위치를 제어합니다. 기본값은 ./artifacts입니다.
  • WANDB_CACHE_DIR=<path>: wandb.Artifact를 호출할 때 아티팩트가 생성되고 저장되는 위치입니다. 기본값은 ~/.cache/wandb입니다.
  • WANDB_CONFIG_DIR=<path>: 설정 파일이 저장되는 위치입니다. 기본값은 ~/.config/wandb입니다.
  • WANDB_DATA_DIR=<PATH>: 업로드 중 아티팩트를 스테이징하는 데 사용되는 위치를 제어합니다. 기본값은 ~/.cache/wandb-data/입니다.
ProjectsRuns
public API를 사용하여 여러 run을 한 번의 작업으로 삭제할 수 있습니다:
import wandb

api = wandb.Api()
runs = api.runs('<entity>/<project>')
for run in runs:
    if <condition>:
        run.delete()
User Management
사용자 설정에서 Delete account를 클릭하여 사용자 계정을 삭제할 수 있습니다. 이 작업은 되돌릴 수 없으며 즉시 적용됩니다.
MetricsRuns
시스템 메트릭 로깅을 비활성화하려면 _disable_statsTrue로 설정하십시오:
wandb.init(settings=wandb.Settings(x_disable_stats=True))
User Management
로그인 URL은 다음 방법 중 하나로 설정하세요:
  • 환경 변수 WANDB_BASE_URL을 Server URL로 설정합니다.
  • wandb login--host 플래그를 Server URL로 설정합니다.
LogsMetrics
이전 단계의 로그를 덮어쓰려면 forkingrewind를 사용하십시오.
MetricsRuns
시스템 메트릭의 로깅 빈도를 설정하려면 _stats_sampling_interval을 초 단위의 실수(float) 값으로 지정하십시오. 기본값: 10.0.
wandb.init(settings=wandb.Settings(x_stats_sampling_interval=30.0))
Crashing And Hanging Runs
Python에서 wandb를 import할 때 AttributeError: module 'wandb' has no attribute 'init' 또는 AttributeError: module 'wandb' has no attribute 'login' 같은 에러가 발생한다면, wandb가 설치되지 않았거나 설치가 손상된 상태인데 현재 작업 디렉터리에 wandb 디렉터리가 존재한다는 의미입니다. 이 에러를 해결하려면 wandb를 제거하고 해당 디렉터리를 삭제한 다음 wandb를 다시 설치하세요:
pip uninstall wandb; rm -rI wandb; pip install wandb
Experiments
Files 탭에는 최대 10,000개의 파일만 표시됩니다. 모든 파일을 다운로드하려면 public API를 사용하세요:
import wandb

api = wandb.Api()
run = api.run('<entity>/<project>/<run_id>')
run.file('<file>').download()

for f in run.files():
    if <condition>:
        f.download()
ResumingRuns
resume='must' but run (<run_id>) doesn't exist 에러가 발생한다면, 다시 시작하려는 run이 해당 프로젝트 또는 entity 내에 존재하지 않는다는 의미입니다. 올바른 인스턴스에 로그인했는지, 그리고 프로젝트와 entity가 올바르게 설정되어 있는지 확인하세요:
wandb.init(entity=<entity>, project=<project>, id=<run-id>, resume='must')
인증이 제대로 되었는지 확인하려면 wandb login --relogin을 실행하세요.
Reports
LaTeX는 Reports에 자연스럽게 통합됩니다. LaTeX를 추가하려면 새 리포트를 만든 다음, 리치 텍스트 영역에서 메모를 작성하고 사용자 정의 시각화 및 테이블을 저장하면서 입력을 시작하세요.새 줄에서 / 키를 누른 후 인라인 방정식 탭으로 이동하여 LaTeX 콘텐츠를 삽입하세요.
Inference
401 Invalid Authentication 에러는 API 키가 유효하지 않거나 W&B 프로젝트의 entity/이름이 올바르지 않다는 의미입니다.

API 키 확인

  1. User Settings에서 새 API 키를 만듭니다.
  2. API 키를 안전하게 보관합니다.

프로젝트 설정 확인

프로젝트가 <your-team>/<your-project> 형식으로 올바르게 지정되어 있는지 확인하세요:Python 예시:
client = openai.OpenAI(
    base_url='https://api.inference.wandb.ai/v1',
    api_key="<your-api-key>",
    project="<your-team>/<your-project>",  # W&B 팀과 프로젝트와 반드시 일치해야 합니다.
)
Bash 예시:
curl https://api.inference.wandb.ai/v1/chat/completions \
  -H "Authorization: Bearer <your-api-key>" \
  -H "OpenAI-Project: <your-team>/<your-project>"

흔한 실수

  • 팀 이름 대신 개인 entity를 사용하는 경우
  • 팀 이름 또는 프로젝트 이름의 오타
  • 팀과 프로젝트 사이에 슬래시(/)가 없는 경우
  • 만료되었거나 삭제된 API 키를 사용하는 경우

여전히 문제가 있나요?

  • 해당 팀과 프로젝트가 자신의 W&B 계정에 존재하는지 확인하세요.
  • 지정된 팀에 대한 액세스 권한이 있는지 확인하세요.
  • 현재 API 키가 동작하지 않으면 새 API 키를 만들어 사용해 보세요.
Inference
W&B Inference 오류를 안정적으로 처리하고 신뢰할 수 있는 애플리케이션을 유지하려면 다음 모범 사례를 따르세요.

1. 항상 오류 처리를 구현하세요

API 호출을 try-except 블록으로 감싸세요:
import openai

try:
    response = client.chat.completions.create(
        model="meta-llama/Llama-3.1-8B-Instruct",
        messages=messages
    )
except Exception as e:
    print(f"Error: {e}")
    # 오류를 적절히 처리

2. 지수 백오프를 사용한 재시도 로직 사용

import time
from typing import Optional

def call_inference_with_retry(
    client, 
    messages, 
    model: str,
    max_retries: int = 3,
    base_delay: float = 1.0
) -> Optional[str]:
    for attempt in range(max_retries):
        try:
            response = client.chat.completions.create(
                model=model,
                messages=messages
            )
            return response.choices[0].message.content
        except Exception as e:
            if attempt == max_retries - 1:
                raise
            
            # 지수 백오프로 지연 시간 계산
            delay = base_delay * (2 ** attempt)
            print(f"Attempt {attempt + 1} failed, retrying in {delay}s...")
            time.sleep(delay)
    
    return None

3. 사용량 모니터링

  • W&B Billing 페이지에서 크레딧 사용량을 추적하세요
  • 한도에 도달하기 전에 알림을 설정하세요
  • 애플리케이션에서 API 사용량을 로깅하세요

4. 특정 오류 코드를 처리하세요

def handle_inference_error(error):
    error_str = str(error)
    
    if "401" in error_str:
        # 잘못된 인증
        raise ValueError("Check your API key and project configuration")
    elif "402" in error_str:
        # 크레딧 부족
        raise ValueError("Insufficient credits")
    elif "429" in error_str:
        # 요청이 레이트 리밋됨
        return "retry"
    elif "500" in error_str or "503" in error_str:
        # 서버 오류
        return "retry"
    else:
        # 알 수 없는 오류
        raise

5. 적절한 타임아웃을 설정하세요

사용 사례에 맞는 합리적인 타임아웃을 설정하세요:
# 더 긴 응답에 대한 설정
client = openai.OpenAI(
    base_url='https://api.inference.wandb.ai/v1',
    api_key="your-api-key",
    timeout=60.0  # 60초 타임아웃
)

추가 팁

  • 디버깅을 위해 타임스탬프와 함께 오류를 로깅하세요
  • 동시성 처리를 개선하기 위해 비동기 연산을 사용하세요
  • 프로덕션 시스템에는 서킷 브레이커를 구현하세요
  • API 호출을 줄이기 위해 적절할 때 응답을 캐시하세요
Inference
부족한 쿼터 오류(402)는 현재 플랜에 남아 있는 크레딧이 없을 때 발생합니다.오류: “You exceeded your current quota, please check your plan and billing details”해결 방법:
  • W&B Billing 페이지에서 크레딧 잔액을 확인하세요
  • 크레딧을 추가로 구매하거나 플랜을 업그레이드하세요
  • support에 한도 상향을 요청하세요
Inference
“Country, region, or territory not supported” 메시지와 함께 403 오류가 발생하는 경우, 지원되지 않는 위치에서 W&B Inference에 접근하고 있다는 의미입니다.

왜 이런 일이 발생하나요

W&B Inference에는 컴플라이언스 및 규제 요구 사항으로 인한 지리적 제한이 있습니다. 이 서비스는 지원되는 지리적 위치에서만 접근할 수 있습니다.

할 수 있는 일

  1. 이용 약관 확인
  2. 지원되는 위치에서 사용
    • 지원되는 국가 또는 지역에 있을 때 서비스에 접근하세요
    • 지원되는 위치에 있는 조직의 리소스를 사용하는 것을 고려하세요
  3. 계정 팀에 문의
    • 엔터프라이즈 고객은 담당 영업에게 가능한 옵션을 논의할 수 있습니다
    • 일부 조직은 별도의 특수 계약을 가지고 있을 수 있습니다

오류 세부 정보

다음과 같은 오류가 표시될 때:
{
  "error": {
    "code": 403,
    "message": "Country, region, or territory not supported"
  }
}
이는 API 요청 시점의 IP 주소 위치에 따라 결정됩니다.
Inference
Rate limit 오류(429)는 동시 요청 한도를 초과했을 때 발생합니다.오류: “Concurrency limit reached for requests”해결 방법:
  • 병렬 요청 수를 줄이세요.
  • 요청 사이에 지연 시간을 추가하세요.
  • 지수 백오프(exponential backoff)를 구현하세요.
  • 참고: Rate limit은 W&B 프로젝트별로 적용됩니다.

Rate limit을 피하기 위한 모범 사례

  1. 지수 백오프를 사용하는 재시도 로직 구현:
    import time
    
    def retry_with_backoff(func, max_retries=3):
        for i in range(max_retries):
            try:
                return func()
            except Exception as e:
                if "429" in str(e) and i < max_retries - 1:
                    time.sleep(2 ** i)
                else:
                    raise
    
  2. 병렬 요청 대신 배치 처리 사용
  3. W&B Billing 페이지에서 사용량 모니터링

기본 지출 한도

  • Pro 계정: 월 $6,000
  • Enterprise 계정: 연 $700,000
한도를 조정하려면 담당 영업 담당자나 지원팀에 문의하세요.
Inference
서버 오류는 W&B Inference 서비스에 일시적인 문제가 있음을 나타냅니다.

오류 유형

500 - Internal Server Error

메시지: “The server had an error while processing your request”서버 측에서 발생한 일시적인 내부 오류입니다.

503 - Service Overloaded

메시지: “The engine is currently overloaded, please try again later”서비스에 트래픽이 과도하게 몰린 상태입니다.

서버 오류 처리 방법

  1. 재시도 전에 대기하기
    • 500 오류: 30–60초 대기
    • 503 오류: 60–120초 대기
  2. 지수 백오프 사용
    import time
    import openai
    
    def call_with_retry(client, messages, model, max_retries=5):
        for attempt in range(max_retries):
            try:
                return client.chat.completions.create(
                    model=model,
                    messages=messages
                )
            except Exception as e:
                if "500" in str(e) or "503" in str(e):
                    if attempt < max_retries - 1:
                        wait_time = min(60, (2 ** attempt))
                        time.sleep(wait_time)
                    else:
                        raise
                else:
                    raise
    
  3. 적절한 타임아웃 설정
    • HTTP 클라이언트의 타임아웃 값을 늘리세요.
    • 더 나은 처리를 위해 비동기 작업을 고려하세요.

지원팀에 문의해야 할 때

다음 경우에는 지원팀에 문의하세요:
  • 오류가 10분 이상 계속될 때
  • 특정 시간대에 반복적인 실패 패턴이 있을 때
  • 오류 메시지에 추가적인 세부 정보가 포함되어 있을 때
다음 정보를 제공하세요:
  • 오류 메시지와 코드
  • 오류가 발생한 시각
  • 코드 스니펫(API 키는 제거)
  • W&B entity 및 프로젝트 이름
ConnectivityCrashing And Hanging Runs
run 초기화 타임아웃 오류를 해결하려면 다음 단계를 따르세요:
  • 초기화 재시도: run을 다시 시작해 보세요.
  • 네트워크 연결 확인: 안정적인 인터넷 연결을 확인하세요.
  • wandb 버전 업데이트: 최신 버전의 wandb를 설치하세요.
  • 타임아웃 설정 증가: WANDB_INIT_TIMEOUT 환경 변수를 수정하세요:
    import os
    os.environ['WANDB_INIT_TIMEOUT'] = '600'
    
  • 디버깅 활성화: 자세한 로그를 위해 WANDB_DEBUG=trueWANDB_CORE_DEBUG=true를 설정하세요.
  • 설정 확인: API 키와 프로젝트 설정이 올바른지 확인하세요.
  • 로그 검토: debug.log, debug-internal.log, debug-core.log, output.log에서 오류를 확인하세요.
Experiments
이 오류는 서버로 데이터를 동기화하는 프로세스를 시작하는 프로세스를 실행하는 데 라이브러리에 문제가 있음을 나타냅니다.다음 해결 방법은 특정 환경에서 문제를 해결합니다:
wandb.init(settings=wandb.Settings(start_method="fork"))
ReportsWysiwygTables
테이블은 Markdown에만 있고, 이에 직접 대응하는 WYSIWYG 기능은 아직 없습니다. 테이블을 추가하려면 Markdown 블록을 삽입한 다음 그 안에 테이블을 작성하세요.
Python
wandb를 설치할 때 다음과 같은 오류가 발생한다면:
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
미리 빌드된 wheel에서 psutil을 직접 설치하세요. Python 버전과 운영 체제를 https://pywharf.github.io/pywharf-pkg-repo/psutil/에서 확인하세요.예를 들어, Linux의 Python 3.8 환경에 psutil을 설치하려면:
WHEEL_URL=https://github.com/pywharf/pywharf-pkg-repo/releases/download/psutil-5.7.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=adc36dabdff0b9a4c84821ef5ce45848f30b8a01a1d5806316e068b5fd669c6d
pip install $WHEEL_URL
psutil 설치 후 pip install wandb를 실행해 wandb 설치를 완료합니다.
Experiments
W&B는 업로드할 파일이나 데이터를 명시적으로 지정할 수 있도록 해서 스칼라만 로그하는 프로젝트도 지원합니다. 이미지를 사용하지 않고 로깅하는 방법을 보여주는 PyTorch 예제를 참고하세요.
Environment VariablesOutage
라이브러리가 인터넷에 연결할 수 없으면 재시도 루프에 들어가고, 네트워크가 복구될 때까지 메트릭 전송을 계속 시도합니다. 이 동안에도 프로그램은 계속 실행됩니다.인터넷이 없는 머신에서 실행하려면 WANDB_MODE=offline을 설정하세요. 이 설정은 메트릭을 로컬 하드 드라이브에 저장합니다. 이후에 wandb sync DIRECTORY를 호출하여 데이터를 서버로 전송할 수 있습니다.
AdministratorTeam Management
팀에 합류하려면 다음 단계를 따르세요:
  • 팀 관리자나 관리자 권한이 있는 사람에게 초대를 요청합니다.
  • 이메일로 받은 초대장을 확인하고, 안내에 따라 팀에 참여합니다.
AdministratorTeam ManagementMetrics
기본적으로 W&B는 데이터셋 예시를 로그하지 않습니다. 기본 설정으로 W&B는 코드와 시스템 메트릭을 로그합니다.환경 변수를 사용해 코드 로깅을 끌 수 있는 방법은 두 가지가 있습니다:
  1. WANDB_DISABLE_CODEtrue로 설정해 모든 코드 트래킹을 끕니다. 이 작업은 git SHA와 diff 패치를 가져오지 못하게 합니다.
  2. WANDB_IGNORE_GLOBS*.patch로 설정해 diff 패치를 서버로 동기화하지 않도록 하되, wandb restore로 적용할 수 있도록 로컬에는 유지합니다.
관리자인 경우, 팀 설정에서 팀에 대한 코드 저장을 끌 수도 있습니다:
  1. https://wandb.ai/<team>/settings에서 팀 설정 페이지로 이동합니다. 여기서 <team>은 팀 이름입니다.
  2. Privacy 섹션으로 스크롤합니다.
  3. Enable code saving by default 토글을 전환합니다.
Experiments
네. run 이름을 run ID로 덮어쓰려면 다음 코드 스니펫을 사용하세요:
import wandb

with wandb.init() as run:
   run.name = run.id
   run.save()
Crashing And Hanging Runs
W&B로 계측된 스크립트를 중지하려면 키보드에서 Ctrl+D를 누르세요.
Experiments
단일 스크립트 내에서 여러 runs를 로깅하려면 새 run을 시작하기 전에 이전 run을 먼저 종료해야 합니다.권장 방법은 wandb.init()을 컨텍스트 매니저로 사용하는 것입니다. 이렇게 하면 스크립트에서 예외가 발생할 경우 run을 종료하고 실패로 표시합니다:
import wandb

for x in range(10):
    with wandb.init() as run:
        for y in range(100):
            run.log({"metric": x + y})
run.finish()를 명시적으로 호출할 수도 있습니다:
import wandb

for x in range(10):
    run = wandb.init()

    try:
        for y in range(100):
            run.log({"metric": x + y})

    except Exception:
        run.finish(exit_code=1)
        raise

    finally:
        run.finish()

여러 개의 활성 run

wandb 0.19.10부터는 reinit 설정을 "create_new"로 지정하여 동시에 활성 상태로 여러 runs를 생성할 수 있습니다.
import wandb

with wandb.init(reinit="create_new") as tracking_run:
    for x in range(10):
        with wandb.init(reinit="create_new") as run:
            for y in range(100):
                run.log({"x_plus_y": x + y})

            tracking_run.log({"x": x})
W&B 인테그레이션과 관련된 주의사항을 포함해 reinit="create_new"에 대한 더 많은 정보는 프로세스당 여러 runs를 참고하세요.
Administrator
Debug Bundle을 확인하세요. 관리자는 오른쪽 상단의 W&B 아이콘을 선택한 다음 /system-admin 페이지에서 Debug Bundle을 선택해 Debug Bundle을 다운로드할 수 있습니다.
Debug Bundle 다운로드
시스템 설정
RunsMetrics
실험을 관리하는 방법에는 여러 가지가 있습니다.복잡한 워크플로의 경우, 여러 runs를 사용하고 wandb.init()에서 그룹 파라미터를 단일 실험 내의 모든 프로세스에 대해 고유한 값으로 설정하세요. 그러면 Runs이 테이블을 그룹 ID별로 그룹화하여 시각화가 올바르게 동작하도록 보장합니다. 이 접근 방식은 결과를 한 곳에 로깅하면서 동시 실험과 트레이닝 runs를 가능하게 합니다.단순한 워크플로의 경우, wandb.init()resume=Trueid=UNIQUE_ID와 함께 호출한 다음 동일한 id=UNIQUE_ID로 다시 wandb.init()을 호출하세요. 그런 다음 run.log() 또는 run.summary()로 일반적으로 로깅하면 run 값이 그에 따라 업데이트됩니다.
Artifacts
가끔 이전에 로깅된 run의 출력으로 아티팩트를 표시해야 하는 경우가 있습니다. 이 경우, 이전 run을 다시 초기화하고 다음과 같이 새 아티팩트를 로깅하세요:
with wandb.init(id="existing_run_id", resume="allow") as run:
    artifact = wandb.Artifact("artifact_name", "artifact_type")
    artifact.add_file("my_data/file.txt")
    run.log_artifact(artifact)
RunsLogs
자동화된 테스트나 내부 도구에서 W&B로 로깅하려면 팀 설정 페이지에서 Service Account를 생성하세요. 이렇게 하면 지속적 인테그레이션을 통해 실행되는 작업을 포함해 자동화된 작업에 서비스 API 키를 사용할 수 있습니다. 특정 사용자에게 Service Account 작업을 귀속하려면 WANDB_USERNAME 또는 WANDB_USER_EMAIL 환경 변수를 설정하세요.
Service Account 생성
LogsExperiments
다음 예제는 wandb.Run.log()을 사용해서 손실값을 여러 방식으로 로깅하는 방법을 보여줍니다.
import wandb

# 새로운 run 초기화
with wandb.init(project="log-list-values", name="log-dict") as run:
    # 손실값을 사전으로 로깅
    losses = [0.1, 0.2, 0.3, 0.4, 0.5]
    run.log({"losses": losses})
    run.log({f"losses/loss-{ii}": loss for ii, loss in enumerate(losses)})
자세한 내용은 로깅에 대한 문서를 참고하세요.
Runs
run.log({'final_accuracy': 0.9})를 사용하면 최종 정확도가 올바르게 업데이트됩니다. 기본적으로 run.log({'final_accuracy': <value>})run.settings['final_accuracy']를 업데이트하며, 이는 Runs 테이블에 반영되는 값입니다.
ExperimentsMetrics
각 배치에서 특정 메트릭을 로깅하고 플롯을 표준화하려면, 메트릭과 함께 원하는 x축 값을 같이 로깅하세요. 커스텀 플롯에서 편집을 클릭한 다음 커스텀 x축을 선택합니다.
import wandb

with wandb.init() as run:
    run.log({"batch": batch_idx, "loss": 0.3})
    run.log({"epoch": epoch, "val_acc": 0.94})
ExperimentsMetrics
예를 들어, 배치마다 트레이닝 정확도를 로깅하고 에포크마다 검증 정확도를 로깅하고 싶습니다.네, 메트릭과 함께 batch, epoch와 같은 인덱스를 같이 로깅하면 됩니다. 한 스텝에서는 wandb.Run.log()({'train_accuracy': 0.9, 'batch': 200})를 사용하고, 다른 스텝에서는 wandb.Run.log()({'val_accuracy': 0.8, 'epoch': 4})를 사용하세요. UI에서 각 차트에 대해 원하는 값을 x축으로 설정할 수 있습니다. 특정 인덱스에 대한 기본 x축을 설정하려면 Run.define_metric()을 사용하세요. 위 예시에서는 다음 코드를 사용합니다:
import wandb

with wandb.init() as run:
   run.define_metric("batch")
   run.define_metric("epoch")

   run.define_metric("train_accuracy", step_metric="batch")
   run.define_metric("val_accuracy", step_metric="epoch")
Experiments
UI에 전송되는 포인트 수는 그래프 로딩 시간에 영향을 줍니다. 1,000 포인트를 초과하는 선에 대해서는, 백엔드가 데이터를 1,000 포인트로 샘플링한 후 브라우저로 전송합니다. 이 샘플링은 비결정적이므로, 페이지를 새로고침하면 샘플링된 포인트가 달라질 수 있습니다.메트릭당 10,000 포인트 미만을 로깅하는 것이 좋습니다. 한 선에 100만 개가 넘는 포인트를 로깅하면 페이지 로딩 시간이 크게 증가합니다. 정확도를 유지하면서 로깅량을 최소화하는 전략은 이 Colab에서 살펴보세요. 설정과 요약 메트릭 컬럼이 500개를 초과하는 경우, 테이블에는 최대 500개만 표시됩니다.
Team Management
2024년 5월 21일 이후에 생성된 계정에는 Personal Entities가 제공되지 않습니다. W&B는 모든 사용자가 결과를 공유할 수 있도록 새 프로젝트를 Team에 로깅할 것을 권장합니다.
Logs
공유 머신을 사용할 때는 WANDB_API_KEY 환경 변수를 설정해 인증함으로써 run이 올바른 W&B 계정으로 로그되도록 해야 합니다. 이 변수가 환경에 설정되어 있으면 로그인 시 올바른 자격 증명이 자동으로 사용됩니다. 또는 스크립트 안에서 직접 환경 변수를 설정할 수도 있습니다.export WANDB_API_KEY=X 명령을 실행하고, X를 본인의 API 키로 바꾸십시오. wandb.ai/settings에서 API 키를 생성할 수 있습니다.
Experiments
“logging 함수가 lazy하게 동작하나요? 로컬 연산을 실행하는 동안 결과를 서버로 전송하기 위해 네트워크에 의존하고 싶지 않습니다.”wandb.log 함수는 한 줄을 로컬 파일에 기록하며 네트워크 호출을 블로킹하지 않습니다. wandb.init을 호출하면 동일한 머신에서 새로운 프로세스가 시작됩니다. 이 프로세스는 파일 시스템 변경을 감시하고 웹 서비스와 비동기적으로 통신하여, 로컬 연산이 중단 없이 계속되도록 합니다.
Logs
wandb offline 명령은 환경 변수 WANDB_MODE=offline을 설정하여 데이터가 원격 W&B 서버로 동기화되지 않도록 합니다. 이 작업은 모든 프로젝트에 영향을 주며, W&B 서버로의 데이터 로깅을 중지합니다.경고 메시지를 숨기려면 다음 코드를 사용하십시오:
import logging

logger = logging.getLogger("wandb")
logger.setLevel(logging.WARNING)
Experiments
W&B의 메트릭 이름은 UI에서 올바르게 정렬 및 필터링될 수 있도록 GraphQL 이름 규칙을 따라야 합니다.

유효한 메트릭 이름

  • 허용되는 문자: 알파벳 문자(A-Z, a-z), 숫자(0-9), 밑줄(_)
  • 시작 문자: 이름은 문자 또는 밑줄로 시작해야 합니다.
  • 패턴: 메트릭 이름은 /^[_a-zA-Z][_a-zA-Z0-9]*$/ 패턴과 일치해야 합니다.
이 규칙을 따르지 않는 메트릭은 W&B UI에서 정렬하거나 필터링할 수 없을 수 있습니다.

예시

유효한 메트릭 이름:
with wandb.init() as run:
  run.log({"accuracy": 0.9, "val_loss": 0.1, "epoch_5": 5})
  run.log({"modelAccuracy": 0.95, "learning_rate": 0.001})
유효하지 않은 메트릭 이름(다음은 피하십시오):
with wandb.init() as run:
  run.log({"acc,val": 0.9})  # 쉼표 포함
  run.log({"loss-train": 0.1})  # 하이픈 포함
  run.log({"test acc": 0.95})  # 공백 포함
  run.log({"5_fold_cv": 0.8})  # 숫자로 시작

권장 해결 방법

잘못된 문자를 밑줄과 같은 유효한 문자로 대체하십시오.
  • "test acc" 대신 "test_acc" 사용
  • "loss-train" 대신 "loss_train" 사용
  • "acc,val" 대신 "acc_val" 사용
자세한 내용은 Metric naming constraints를 참조하십시오.
AdministratorBillingTeam Management
Teams 플랜은 월간 구독 옵션을 제공하지 않습니다. 이 구독은 연 단위로 청구됩니다.
Runs
다음 단계를 따라 한 프로젝트의 run을 다른 프로젝트로 이동할 수 있습니다:
  • 이동하려는 run이 있는 프로젝트 페이지로 이동합니다.
  • Runs 탭을 클릭하여 runs 테이블을 엽니다.
  • 이동할 run을 선택합니다.
  • Move 버튼을 클릭합니다.
  • 대상 프로젝트를 선택하고 작업을 확인합니다.
W&B는 UI를 통한 run 이동은 지원하지만, run 복사는 지원하지 않습니다. run에 함께 로깅된 Artifacts는 새 프로젝트로 이동되지 않습니다. 아티팩트를 run의 새 위치로 수동으로 옮기려면 wandb artifact get SDK 명령이나 Api.artifact API를 사용해 아티팩트를 다운로드한 다음, wandb artifact put 또는 Api.artifact API를 사용해 run의 새 위치로 업로드할 수 있습니다.
Reports
W&B Reports에서 다음 단계를 따르세요:
  1. 여러 패널 그리드를 생성합니다.
  2. 각 패널 그리드에 원하는 run 집합을 선택할 수 있도록 필터를 적용합니다.
  3. 패널 그리드 안에서 원하는 차트를 생성합니다.
Experiments
트레이닝 프로그램이 여러 프로세스를 사용하는 경우, wandb.init()이 호출되지 않은 프로세스에서는 wandb 메서드를 호출하지 않도록 프로그램 구조를 설계해야 합니다.멀티프로세스 트레이닝은 다음과 같은 방식으로 관리할 수 있습니다:
  1. 모든 프로세스에서 wandb.init을 호출하고 group 키워드 인자를 사용해 공유 그룹을 생성합니다. 각 프로세스는 자체 wandb run을 가지며, UI에서 트레이닝 프로세스들이 함께 그룹화됩니다.
  2. 하나의 프로세스에서만 wandb.init을 호출하고 multiprocessing queues를 통해 로그로 보낼 데이터를 전달합니다.
이러한 접근 방식에 대한 자세한 설명과 Torch DDP 코드 예시는 Distributed Training Guide를 참조하세요.
Experiments
예, W&B에서는 multiprocessing 라이브러리를 사용합니다. 다음과 같은 에러 메시지는 잠재적인 문제를 나타냅니다:
An attempt has been made to start a new process before the current process 
has finished its bootstrapping phase.
이를 해결하려면 if __name__ == "__main__":으로 엔트리 포인트 보호 코드를 추가하세요. 이 보호 코드는 스크립트에서 W&B를 직접 실행할 때 필요합니다.
Sweeps
(run.config())를 사용해 sweep 설정에서 하이퍼파라미터 이름과 값을 가져올 수 있으며, 이는 사전처럼 동작합니다.스윕 외부의 run에서는 wandb.init()config 인자에 사전을 전달하여 wandb.Run.config() 값을 설정합니다. 스윕 내에서는 wandb.init()에 제공한 모든 설정이 스윕이 덮어쓸 수 있는 기본값으로 사용됩니다.보다 명시적인 동작을 원할 경우 wandb.Run.config.setdefaults()를 사용하세요. 다음 코드 스니펫은 두 방법을 모두 보여줍니다:
# 하이퍼파라미터 기본값 설정
config_defaults = {"lr": 0.1, "batch_size": 256}

# run을 시작하고 스윕이 덮어쓸 수 있는
# 기본값을 제공합니다
with wandb.init(config=config_defaults) as run:
    # 여기에 트레이닝 코드를 추가하세요
    ...
SweepsMetrics
단일 run에서 여러 메트릭을 최적화하려면 개별 메트릭의 가중합을 사용하세요.
with wandb.init() as run:
  # 개별 메트릭 로깅
  metric_a = run.summary.get("metric_a", 0.5)
  metric_b = run.summary.get("metric_b", 0.7)
  # 필요에 따라 다른 메트릭도 로깅
  metric_n = run.summary.get("metric_n", 0.9)

  # 메트릭을 가중치와 함께 결합
  # 최적화 목표에 따라 가중치를 조정하세요
  # 예를 들어 metric_a와 metric_n에 더 높은 중요도를 부여하려면:  
  metric_combined = 0.3 * metric_a + 0.2 * metric_b + ... + 1.5 * metric_n
  run.log({"metric_combined": metric_combined})
새로 결합된 메트릭을 로깅하고 이를 최적화 목표로 설정합니다:
metric:
  name: metric_combined
  goal: minimize
Experiments
/ 문자는 W&B UI에서 기록된 패널을 구분합니다. 기본적으로 기록된 항목 이름에서 / 앞에 오는 부분이 “Panel Section”이라고 하는 패널 그룹을 정의합니다.
import wandb

with wandb.init() as run:

   run.log({"val/loss": 1.1, "val/acc": 0.3})
   run.log({"train/loss": 0.1, "train/acc": 0.94})
Workspace 설정에서 / 로 구분된 첫 번째 세그먼트만 사용할지, 모든 세그먼트를 사용할지에 따라 패널 그룹화를 조정할 수 있습니다.
Workspaces
이 오류를 해결하려면 URL 끝에 ?workspace=clear 를 추가하고 Enter 키를 누르세요. 그러면 초기화된 프로젝트 페이지 워크스페이스로 이동합니다.
Experiments
wandb.Run.log() 에 클래스 속성을 직접 전달하지 마세요. 속성은 네트워크 호출이 실행되기 전에 변경될 수 있습니다. 메트릭을 클래스 속성으로 저장하는 경우, wandb.Run.log() 호출 시점의 속성 값과 기록되는 메트릭이 일치하도록 딥 카피(deep copy)를 사용하세요.
Metrics
해당 메트릭의 산점도를 생성하세요. Edit 메뉴를 열고 Annotations 를 선택합니다. 그런 다음 값들의 누적 최대값(running maximum)을 플로팅하세요.
Experiments
wandb.plot.line_series() 를 사용해 다중 선 커스텀 차트를 생성하세요. 그런 다음 project page로 이동하여 선형 차트를 확인합니다. 범례를 추가하려면 wandb.plot.line_series()keys 인수를 포함하세요. 예시는 다음과 같습니다:

with wandb.init(project="my_project") as run:

    run.log(
        {
            "my_plot": wandb.plot.line_series(
                xs=x_data, ys=y_data, keys=["metric_A", "metric_B"]
            )
        }
    )
다중 선 플롯에 대한 추가 정보는 Multi-line 탭 아래 여기를 참고하세요.
Experiments
wandb.Run.name 속성에는 다음과 같이 접근할 수 있습니다:
import wandb

with wandb.init() as run:
   run_name = run.name
   print(f"The human-readable run name is: {run_name}")
PrivacyProjects
프로젝트의 프라이버시(가시성)를 변경하려면:
  1. W&B App에서 해당 프로젝트의 아무 페이지에서나 프로젝트 사이드바의 Overview를 클릭합니다.
  2. 오른쪽 상단에서 Edit를 클릭합니다.
  3. Project visibility에서 새 값을 선택합니다:
    • Team(기본값): 팀 구성원만 프로젝트를 보고 편집할 수 있습니다.
    • Restricted: 초대된 멤버만 프로젝트에 접근할 수 있고, 공개 접근은 비활성화됩니다.
    • Open: 누구나 run을 제출하거나 리포트를 생성할 수 있지만, 편집은 팀만 할 수 있습니다. 수업, 공개 벤치마크 대회 또는 기타 장기 보존이 필요 없는 환경에만 적합합니다.
    • Public: 누구나 프로젝트를 볼 수 있지만, 편집은 팀만 할 수 있습니다.
      W&B 관리자들이 Public 가시성을 비활성화했다면 이 옵션을 선택할 수 없습니다. 대신 조회만 가능한 W&B Report를 공유하거나, 도움을 받기 위해 W&B 조직의 관리자에게 문의하세요.
  4. Save를 클릭합니다.
프로젝트를 더 엄격한 프라이버시 설정으로 변경한 경우, 해당 프로젝트에 다시 접근할 수 있도록 개별 사용자를 다시 초대해야 할 수 있습니다.
NotebooksEnvironment Variables
"Failed to query for notebook name, you can set it manually with the WANDB_NOTEBOOK_NAME environment variable," 오류 메시지가 나타나면, 환경 변수를 설정해서 해결할 수 있습니다. 다음과 같은 방법 중 하나를 사용하세요:
%env "WANDB_NOTEBOOK_NAME" "notebook name here"
Experiments
run 객체의 .save() 메서드를 호출해 현재 run을 저장합니다. 그런 다음 run 객체의 name 속성을 사용해 이름을 가져올 수 있습니다.
Artifacts
run을 삭제할 때, 연결된 아티팩트를 삭제할지 묻는 프롬프트가 나타납니다. 이 옵션을 선택하면 아티팩트가 영구적으로 삭제되어, 나중에 run 자체를 복원하더라도 복구할 수 없습니다.
Runs
삭제된 run을 복구하려면 다음 단계를 수행하세요:
  • Project Overview 페이지로 이동합니다.
  • 오른쪽 상단의 점 세 개 아이콘을 클릭합니다.
  • Undelete recently deleted runs를 선택합니다.
참고:
  • 지난 7일 이내에 삭제된 run만 복원할 수 있습니다.
  • 복원이 불가능한 경우, W&B API를 사용해 로그를 수동으로 업로드할 수 있습니다.
ReportsWorkspaces
Workspaces는 업데이트된 데이터를 자동으로 불러옵니다. 자동 새로고침은 Reports에는 적용되지 않습니다. 리포트 데이터를 새로고침하려면 페이지를 다시 로드하세요.
User Management
비밀번호 재설정 이메일을 받을 수 없는 상황에서 계정 접근 권한을 복구하려면 다음을 수행하세요:
  1. 스팸 또는 정크 메일함 확인: 이메일이 해당 폴더로 분류되지 않았는지 확인합니다.
  2. 이메일 주소 확인: 계정에 연결된 이메일이 올바른지 확인합니다.
  3. SSO 옵션 확인: 가능하다면 “Sign in with Google” 같은 서비스를 사용합니다.
  4. 지원팀에 문의: 문제가 계속되면 support@wandb.com으로 지원팀에 연락해 사용자 이름과 이메일을 제공하고 도움을 요청하세요.
Administrator
관리자 권한 없이 팀 스페이스에서 프로젝트를 제거하려면 다음 옵션을 따르세요:
  • 현재 관리자에게 프로젝트 제거를 요청합니다.
  • 관리자에게 프로젝트 관리에 대한 임시 접근 권한을 요청합니다.
관리자에게 연락할 수 없다면, 결제 관리자 또는 조직의 다른 승인된 사용자에게 도움을 요청하세요.
Projects
프로젝트 이름을 변경하려면:
  • Project Overview로 이동합니다.
  • Edit Project를 클릭합니다.
참고:
  • model-registry와 같이 보호된 프로젝트 이름은 변경할 수 없습니다. 보호된 이름에 대한 도움이 필요하면 지원팀에 문의하세요.
Administrator
만료된 라이선스를 갱신하려면 support@wandb.com의 지원팀에 연락해 갱신 절차 안내와 새 라이선스 키를 받으세요.
ReportsWysiwyg
목표는 WYSIWYG으로 전환한 후에도 원래 모양을 유지하는 것이지만, 변환 과정이 완벽하지는 않습니다. 큰 차이가 발생하면 평가를 위해 이를 보고해 주세요. 사용자는 편집 세션이 끝날 때까지 이전 상태로 되돌릴 수 있습니다.
ReportsWysiwyg
구형 하드웨어이거나 매우 큰 리포트의 경우 성능 문제가 발생할 수 있습니다. 이를 완화하려면 현재 사용하지 않는 리포트 섹션을 접어 두세요.
Reports
가능합니다. 문서 어디에서나 “/mark”를 입력하고 Enter를 눌러 Markdown 블록을 삽입하세요. 그러면 이전과 마찬가지로 Markdown으로 편집할 수 있습니다.
User Management
W&B 계정을 삭제하려면 User settings 페이지로 이동한 다음, 맨 아래로 스크롤하여 Delete Account 버튼을 클릭합니다.
SweepsHyperparameterRuns
그리드 서치가 완료되었지만 일부 W&B Runs가 크래시로 인해 다시 실행되어야 하는 경우, 다시 실행하려는 특정 W&B Runs를 삭제합니다. 그런 다음 sweep control page에서 Resume 버튼을 선택합니다. 새 Sweep ID를 사용해 새로운 W&B Sweep 에이전트를 시작합니다.이미 완료된 W&B Run 파라미터 조합은 다시 실행되지 않습니다.
User Management
로그인 문제를 해결하려면 다음 단계를 따르세요:
  • 접근 권한 확인: 올바른 이메일 또는 사용자 이름을 사용하고 있는지 확인하고, 관련 팀이나 프로젝트의 멤버십을 확인합니다.
  • 브라우저 문제 해결:
    • 캐시된 데이터의 간섭을 피하기 위해 시크릿(인코그니토) 창을 사용합니다.
    • 브라우저 캐시를 삭제합니다.
    • 다른 브라우저나 기기에서 로그인을 시도합니다.
  • SSO 및 권한:
    • 아이덴티티 프로바이더(IdP)와 Single Sign-On(SSO) 설정을 확인합니다.
    • SSO를 사용하는 경우, 올바른 SSO 그룹에 포함되어 있는지 확인합니다.
  • 기술적 문제:
    • 추가적인 문제 해결을 위해 구체적인 오류 메시지를 기록해 둡니다.
    • 문제가 지속되면 지원 팀에 연락하여 추가 지원을 요청합니다.
RunsSecurity
W&B entity에 run을 로깅할 때 발생하는 권한 오류를 해결하려면 다음 단계를 따르세요:
  • entity 및 프로젝트 이름 확인: 코드에서 사용하는 W&B entity 및 프로젝트 이름의 철자와 대소문자가 정확한지 확인합니다.
  • 권한 확인: 관리자에게서 필요한 권한을 부여받았는지 확인합니다.
  • 로그인 자격 증명 확인: 올바른 W&B 계정으로 로그인했는지 확인합니다. 다음 코드를 사용해 run을 생성해 보세요:
    import wandb
    
    run = wandb.init(entity="your_entity", project="your_project")
    run.log({'example_metric': 1})
    run.finish()
    
  • API key 설정: WANDB_API_KEY 환경 변수를 사용합니다:
    export WANDB_API_KEY='your_api_key'
    
  • 호스트 정보 확인: 커스텀 배포 환경의 경우, 호스트 URL을 설정합니다:
    wandb login --relogin --host=<host-url>
    export WANDB_BASE_URL=<host-url>
    
Resuming
W&B에서 resume 파라미터를 사용하려면, wandb.init()resume 인자에 entity, project, id를 지정해 설정합니다. resume 인자는 "must" 또는 "allow" 값을 허용합니다.
run = wandb.init(entity="your-entity", project="your-project", id="your-run-id", resume="must")
SweepsPython
스윕을 재개하려면 sweep_idwandb.agent() 함수에 전달합니다.
import wandb

sweep_id = "your_sweep_id"

def train():
    # 여기에 트레이닝 코드를 작성합니다
    pass

wandb.agent(sweep_id=sweep_id, function=train)
Artifacts
민감한 데이터를 포함하는 아티팩트를 관리하거나 아티팩트 버전 삭제를 예약하려면 TTL(time-to-live) 정책을 설정합니다. 자세한 지침은 TTL guide를 참고하세요.
AdministratorSecurity
개인 및 서비스 계정 키는 로테이션하거나 철회할 수 있습니다. 새 API 키 또는 서비스 계정 사용자를 생성한 후, 스크립트가 새 키를 사용하도록 다시 설정하세요. 재설정한 후 프로필 또는 팀에서 기존 API 키를 제거합니다.
AlertsNotebooks
아니요. Run Finished 알림(사용자 설정의 Run Finished 설정으로 활성화)은 Python 스크립트에서만 작동하며, Jupyter Notebook 환경에서는 각 셀 실행마다 알림이 발생하는 것을 방지하기 위해 비활성화되어 있습니다.노트북 환경에서는 대신 run.alert()을 사용하세요.
Crashing And Hanging Runs
이는 연결 문제가 있음을 나타냅니다. 서버가 인터넷 연결을 잃고 W&B로 데이터 동기화가 중단되면, 짧은 재시도 기간 이후 시스템이 해당 run을 crashed로 표시합니다.
Anonymous
누군가가 anonymous="allow"로 스크립트를 실행하면:
  1. 임시 계정 자동 생성: W&B는 로그인된 계정이 있는지 확인합니다. 계정이 없으면 새 익명 계정을 만들고, 그 세션을 위한 API 키를 저장합니다.
  2. 결과를 빠르게 로깅: 사용자는 스크립트를 여러 번 실행하고 W&B 대시보드에서 즉시 결과를 볼 수 있습니다. 이렇게 소유자가 지정되지 않은 익명 run은 7일 동안 이용 가능합니다.
  3. 유용할 때 데이터 소유권 주장: 사용자가 W&B에서 가치 있는 결과를 찾으면, 페이지 상단 배너의 버튼을 클릭해 run 데이터를 실제 계정으로 저장할 수 있습니다. 소유권을 주장하지 않으면 run 데이터는 7일 후 삭제됩니다.
익명 run 링크는 민감합니다. 이 링크를 가진 누구나 7일 동안 실험 결과를 조회하고 소유권을 주장할 수 있으므로, 신뢰할 수 있는 사람에게만 링크를 공유하세요. 작성자 신원을 숨기면서 공개적으로 결과를 공유하려면 support@wandb.com으로 연락해 도움을 받으세요.
W&B 사용자가 스크립트를 찾아 실행하는 경우, 일반적인 run과 마찬가지로 해당 사용자의 계정으로 결과가 정상적으로 로깅됩니다.
Sweeps
SLURM 스케줄링 시스템에서 스윕을 사용할 때는 각 스케줄된 잡에서 wandb agent --count 1 SWEEP_ID를 실행하세요. 이 명령은 단일 트레이닝 잡을 실행한 다음 종료하므로, 하이퍼파라미터 검색의 병렬성을 활용하면서도 리소스 요청에 대한 실행 시간 예측을 용이하게 합니다.
Experiments
오프라인 머신에서 트레이닝이 수행되는 경우, 다음 단계를 통해 결과를 서버에 업로드하세요:
  1. 환경 변수 WANDB_MODE=offline을 설정하여 인터넷 연결 없이 메트릭을 로컬에 저장합니다.
  2. 업로드할 준비가 되면, 디렉터리에서 wandb init을 실행해 프로젝트 이름을 설정합니다.
  3. wandb sync YOUR_RUN_DIRECTORY를 사용해 메트릭을 클라우드 서비스로 전송하고, 호스팅된 웹 앱에서 결과에 접근합니다.
run이 오프라인인지 확인하려면, wandb.init() 실행 후 run.settings._offline 또는 run.settings.mode를 확인하세요.
ProjectsRuns
최적의 성능을 위해 프로젝트당 run 수를 대략 10,000개로 제한하세요.
Experiments
트레이닝 중에 머신이 인터넷 연결을 잃었을 가능성이 높습니다. wandb sync [PATH_TO_RUN]을 실행해 데이터를 복구하세요. run의 경로는 진행 중인 run의 Run ID와 일치하는, wandb 디렉터리 내의 폴더입니다.
Experiments
동일한 키로 서로 다른 데이터 타입을 로깅하면 데이터베이스에서 분리됩니다. 이로 인해 UI 드롭다운에 동일한 메트릭 이름이 여러 항목으로 표시됩니다. 그룹화되는 데이터 타입은 number, string, bool, other(주로 배열), 그리고 Histogram이나 Image와 같은 wandb 데이터 타입입니다. 이 문제를 방지하려면 키당 하나의 타입만 전송하세요.메트릭 이름은 대소문자를 구분하지 않습니다. "My-Metric""my-metric"처럼 대소문자만 다른 이름 사용은 피하세요.
Artifacts
wandb.init에서 save_code=True를 사용하면 run을 실행하는 메인 스크립트나 노트북이 저장됩니다. run의 모든 코드를 저장하려면 코드를 Artifacts로 버전 관리하세요. 다음 예시는 이 과정을 보여줍니다:
code_artifact = wandb.Artifact(type="code")
code_artifact.add_file("./train.py")
wandb.log_artifact(code_artifact)
Experiments
wandb.init이 호출되면, 시스템은 원격 리포지터리 링크와 최신 커밋의 SHA를 포함한 git 정보를 자동으로 수집합니다. 이 정보는 run 페이지에 표시됩니다. 이 정보를 보려면 스크립트를 실행할 때의 현재 작업 디렉터리가 git으로 관리되는 폴더 내부인지 확인하세요.git 커밋과 실험을 실행하는 데 사용한 커맨드는 해당 사용자에게만 보이며, 외부 사용자에게는 표시되지 않습니다. 공개 프로젝트에서도 이 세부 정보는 비공개로 유지됩니다.
ExperimentsEnvironment VariablesMetrics
기본적으로 wandb.init은 메트릭을 실시간으로 클라우드에 동기화하는 프로세스를 시작합니다. 오프라인으로 사용하려면, 오프라인 모드를 활성화하고 나중에 동기화할 수 있도록 두 개의 환경 변수를 설정하세요.다음 환경 변수를 설정합니다:
  1. WANDB_API_KEY=$KEY ($KEYUser Settings에서 생성한 API 키입니다).
  2. WANDB_MODE="offline".
다음은 이를 스크립트에서 구현하는 예시입니다:
import wandb
import os

os.environ["WANDB_API_KEY"] = "YOUR_KEY_HERE"
os.environ["WANDB_MODE"] = "offline"

config = {
    "dataset": "CIFAR10",
    "machine": "offline cluster",
    "model": "CNN",
    "learning_rate": 0.01,
    "batch_size": 128,
}

with wandb.init(project="offline-demo") as run:
    for i in range(100):
        run.log({"accuracy": i})
터미널 출력 예시는 아래와 같습니다:
오프라인 모드 터미널 출력
작업을 완료한 후, 다음 명령을 실행해 데이터를 클라우드에 동기화하세요:
wandb sync wandb/dryrun-folder-name
클라우드 동기화 터미널 출력
Administrator
조직 설정에서 조직에 저장된 바이트, 추적된 바이트, 추적 시간을 확인할 수 있습니다:
  1. https://wandb.ai/account-settings/<organization-name>/settings에서 조직 설정 페이지로 이동합니다.
  2. Billing 탭을 선택합니다.
  3. Usage this billing period 섹션에서 View usage 버튼을 선택합니다.
<>로 둘러싸인 값을 조직 이름으로 바꿔서 사용하세요.
ExperimentsMetrics
Step이 아닌 다른 X축에 대해 메트릭을 시각화할 때는 더 적은 데이터 포인트가 표시될 수 있습니다. 메트릭이 동기화된 상태를 유지하려면 동일한 Step에서 로그되어야 합니다. 샘플 간 보간을 수행할 때는 동일한 Step에서 로그된 메트릭만 샘플링됩니다.가이드라인메트릭은 하나의 log() 호출에 묶어서 기록하세요. 예를 들어, 다음과 같이 작성하는 대신:
import wandb
with wandb.init() as run:
    run.log({"Precision": precision})
    ...
    run.log({"Recall": recall})
다음과 같이 사용합니다:
import wandb
with wandb.init() as run:
    run.log({"Precision": precision, "Recall": recall})
step 파라미터를 수동으로 제어하려면, 다음과 같이 코드에서 메트릭을 동기화하세요:
with wandb.init() as run:
    step = 100  # 예시 step 값
    # 동일한 step에서 Precision과 Recall을 로그합니다
    run.log({"Precision": precision, "Recall": recall}, step=step)
메트릭이 동일한 step 아래에 로그되고 함께 샘플링되려면 두 log() 호출에서 step 값이 동일해야 합니다. 또한 step 값은 각 호출마다 단조 증가해야 합니다. 그렇지 않으면 step 값은 무시됩니다.
Alerts
Teams에서 W&B 알림을 받으려면 다음 단계를 따르세요:
  • Teams 채널용 이메일 주소를 설정합니다. 알림을 받고자 하는 Teams 채널에 사용할 이메일 주소를 생성합니다.
  • W&B 알림 이메일을 Teams 채널의 이메일 주소로 전달합니다. W&B에서 이메일을 통해 알림을 보내도록 설정한 다음, 이 이메일을 Teams 채널의 이메일 주소로 전달하도록 구성합니다.
Administrator
서비스 계정은 사람 사용자가 아닌 머신 ID(정체성)를 나타내며, 여러 팀과 프로젝트 전반의 공통 작업을 자동화할 수 있습니다. 서비스 계정은 CI/CD 파이프라인, 자동화된 트레이닝 작업, 기타 머신 간 워크플로에 적합합니다.서비스 계정의 주요 이점:
  • 라이선스 소모 없음: 서비스 계정은 사용자 좌석이나 라이선스를 소모하지 않습니다.
  • 전용 API 키: 자동화된 워크플로를 위한 보안 자격 증명을 제공합니다.
  • 사용자 귀속: 자동화된 run을 사람 사용자에게 선택적으로 귀속시킬 수 있습니다.
  • 엔터프라이즈급: 대규모 프로덕션 자동화를 위해 설계되었습니다.
  • 위임된 작업 수행: 서비스 계정은 이를 생성한 사용자 또는 조직을 대신해 작업을 수행합니다.
이 외에도 서비스 계정은 주기적인 재트레이닝, 야간 빌드 등 wandb에 기록되는 자동화 작업을 추적하는 데 유용합니다. 원한다면 environment variables WANDB_USERNAME 또는 WANDB_USER_EMAIL을 사용해 이러한 머신이 실행하는 run에 사용자 이름을 연결할 수 있습니다.베스트 프랙티스와 상세 설정 방법을 포함한 서비스 계정에 대한 종합적인 정보는 Use service accounts to automate workflows를 참고하세요. 팀 컨텍스트에서 서비스 계정이 어떻게 동작하는지에 대한 정보는 Team Service Account Behavior를 참고하세요.팀 단위의 새 서비스 계정과 API 키를 생성하려면:
  1. 팀 설정에서 Service Accounts를 클릭합니다.
  2. New Team Service Account를 클릭합니다.
  3. 서비스 계정 이름을 입력합니다.
  4. Authentication Method를 기본값인 Generate API key로 설정합니다. Federated Identity를 선택하면 이 서비스 계정은 API 키를 소유할 수 없습니다.
  5. Create를 클릭합니다.
  6. 방금 생성한 서비스 계정을 찾습니다.
  7. 작업 메뉴(...)를 클릭한 다음 Create API key를 클릭합니다.
  8. API 키 이름을 입력하고 Create를 클릭합니다.
  9. API 키를 복사하여 안전한 위치에 보관합니다.
  10. Done을 클릭합니다.
Built-in 서비스 계정 외에도, W&B는 identity federation for SDK and CLI를 사용하는 External service accounts도 지원합니다. JSON Web Token(JWT)을 발급할 수 있는, ID 프로바이더에서 관리되는 서비스 ID로 W&B 작업을 자동화하려는 경우 external service account를 사용하세요.
Charts
커스텀 차트 에디터의 “Other settings” 페이지에서 이 옵션을 활성화하세요. 쿼리를 summaryTable 대신 historyTable을 사용하도록 변경하면 커스텀 차트 에디터에서 “Show step selector” 옵션을 사용할 수 있습니다. 이 기능에는 step을 선택할 수 있는 슬라이더가 포함됩니다.
NotebooksEnvironment Variables
노트북에서 다음과 같은 로그 메시지를 숨기려면:
INFO SenderThread:11484 [sender.py:finish():979]
로그 레벨을 logging.ERROR로 설정해 에러만 표시하고, info 레벨 로그 출력은 숨기세요.
import logging

logger = logging.getLogger("wandb")
logger.setLevel(logging.ERROR)
로그 출력을 크게 줄이려면 WANDB_QUIET 환경 변수를 True로 설정하세요. 로그 출력을 완전히 끄려면 WANDB_SILENT 환경 변수를 True로 설정하세요. 노트북에서는 wandb.login을 실행하기 전에 WANDB_QUIET 또는 WANDB_SILENT를 설정해야 합니다:
%env WANDB_SILENT=True
Experiments
일반적인 사용 조건에서는 W&B가 트레이닝 성능에 미치는 영향이 매우 적습니다. 일반적인 사용에는 초당 한 번 미만의 빈도로 로깅하고, step당 데이터 양을 수 메가바이트 이하로 제한하는 경우가 포함됩니다. W&B는 별도 프로세스에서 논블로킹 함수 호출 방식으로 동작하므로, 짧은 네트워크 장애나 간헐적인 디스크 읽기/쓰기 문제로 인해 성능이 저하되지 않도록 합니다. 다만, 지나치게 많은 데이터를 로깅하면 디스크 I/O 문제가 발생할 수 있습니다. 추가 문의 사항이 있으면 지원팀에 연락하세요.
Security
W&B는 Auth0를 통해 멀티 테넌트 플랜에 대해 Single Sign-On(SSO)를 지원합니다. SSO 인테그레이션은 Okta, Azure AD 같은 모든 OIDC 호환 아이덴티티 제공자와 호환됩니다. OIDC 제공자를 설정하려면 다음 단계를 따르세요:
  • 아이덴티티 제공자에서 Single Page Application(SPA)를 생성합니다.
  • grant_typeimplicit 플로우로 설정합니다.
  • 콜백 URI를 https://wandb.auth0.com/login/callback으로 설정합니다.
W&B에 필요한 정보설정을 완료한 후, 애플리케이션의 Client IDIssuer URL을 고객 성공 매니저(CSM)에게 전달하세요. W&B는 이 정보를 사용해 Auth0 연결을 설정하고 SSO를 활성화합니다.
Environment Variables
환경 변수 WANDB_SILENTtrue로 설정하세요.
os.environ["WANDB_SILENT"] = "true"
Storage
  • 스토리지 사용량 미터는 처리 지연 때문에 run을 삭제한 직후에는 바로 업데이트되지 않습니다.
  • 백엔드 시스템이 사용량 변경 사항을 정확하게 반영하려면 동기화에 시간이 필요합니다.
  • 스토리지 미터가 아직 업데이트되지 않았다면, 변경 사항이 처리될 때까지 기다려 주세요.
Environment Variables
W&B는 이벤트를 메모리에 큐잉하고 비동기적으로 디스크에 기록하여 장애를 처리하고 WANDB_MODE=offline 설정을 지원합니다. 이를 통해 로깅 후 동기화가 가능합니다.터미널에서 로컬 run 디렉터리의 경로를 확인할 수 있습니다. 이 디렉터리에는 데이터 저장소 역할을 하는 .wandb 파일이 포함됩니다. 이미지 로깅의 경우 W&B는 이미지를 클라우드 스토리지에 업로드하기 전에 media/images 하위 디렉터리에 저장합니다.
SweepsAws
어떤 W&B Sweep 에이전트라도 sweep_id에 접근할 수 있도록 sweep_id를 게시하려면, 에이전트가 sweep_id를 읽고 실행할 수 있는 방법을 구현해야 합니다.예를 들어, Amazon EC2 인스턴스를 시작하고 그 위에서 wandb agent를 실행합니다. SQS 큐를 사용해 여러 EC2 인스턴스에 sweep_id를 브로드캐스트하세요. 각 인스턴스는 큐에서 sweep_id를 가져와 프로세스를 시작할 수 있습니다.
SweepsAws
W&B 인증을 설정하려면 다음 단계를 완료하세요. 기본 제공 Amazon SageMaker estimator를 사용하는 경우 requirements.txt 파일을 생성합니다. 인증 및 requirements.txt 파일 설정에 대한 자세한 내용은 SageMaker integration 가이드를 참조하세요.
전체 예시는 GitHub에서 확인할 수 있으며, 추가적인 인사이트는 블로그에서 확인하세요.
SageMaker와 W&B를 사용해 감성 분석기를 배포하는 방법은 Deploy Sentiment Analyzer Using SageMaker and W&B 튜토리얼을 참고하세요.
Environment Variables
하나의 머신에서 두 개의 W&B 계정을 관리하려면, 두 API 키를 모두 파일에 저장하세요. 그런 다음 리포지토리에서 아래 코드를 사용해 키를 안전하게 전환하고, 비밀 키가 소스 컨트롤에 커밋되지 않도록 하세요.
if os.path.exists("~/keys.json"):
    os.environ["WANDB_API_KEY"] = json.loads("~/keys.json")["work_account"]
Metrics
시스템 메트릭은 기본적으로 10초마다 수집됩니다. 더 높은 해상도의 메트릭이 필요하다면 contact@wandb.com으로 이메일을 보내 주세요.
Team Management
팀에 대한 추가 정보는 Teams 섹션을 참조하세요.
Artifacts
테스트 목적으로 W&B를 no-operation(NOOP)으로 설정하려면 wandb.init(mode="disabled")를 사용하거나 WANDB_MODE=disabled를 설정하세요.
wandb.init(mode="disabled")를 사용해도 W&B가 WANDB_CACHE_DIR에 아티팩트를 저장하는 것은 막지 못합니다.
Experiments
데이터셋을 트레이닝 run과 연결하려면 SHA 또는 고유 식별자를 wandb.Run.config.update(...)에 전달하세요. wandb.Run.save()가 로컬 파일 이름과 함께 호출되지 않는 한, W&B는 어떤 데이터도 저장하지 않습니다.
User ManagementTeam Management
사용 가능한 역할과 권한에 대한 개요는 Team roles and permissions 페이지를 참조하세요.
Billing
결제 수단을 업데이트하려면 다음 단계를 따르세요:
  1. 프로필 페이지로 이동: 먼저, 사용자 프로필 페이지로 이동합니다.
  2. 조직 선택: 계정 선택기에서 관련 조직을 선택합니다.
  3. 결제 설정으로 이동: Account 아래에서 Billing을 선택합니다.
  4. 새 결제 수단 추가:
    • Add payment method를 클릭합니다.
    • 새 카드 정보를 입력하고, 해당 카드를 primary 결제 수단으로 설정하는 옵션을 선택합니다.
Note: 결제를 관리하려면 조직의 billing admin으로 지정되어 있어야 합니다.
Reports
CSV를 report에 업로드하려면 wandb.Table 형식을 사용하세요. Python 스크립트에서 CSV를 로드한 후 wandb.Table 객체로 로그합니다. 그러면 report에서 데이터가 테이블로 렌더링됩니다.
Reports
새 줄에서 / 키를 누르고, Image 옵션까지 스크롤한 다음 이미지를 report로 드래그 앤 드롭합니다.
report에 이미지 추가하기
PrivacySecurity
W&B의 핵심 엔지니어와 지원 인력은 사용자의 허가를 받은 경우 디버깅 목적으로 로그된 값을 조회할 수 있습니다. 모든 데이터 저장소는 저장된 데이터를 암호화하며, 감사 로그에 접근 기록이 남습니다. W&B 직원으로부터 완전한 데이터 보안을 보장하려면, 자체 인프라 내에서 W&B 서버를 실행하는 Self-Managed 솔루션을 라이선스하여 사용하세요.
ConnectivityOutage
W&B status page에 방문하여 wandb.ai의 W&B Multi-tenant Cloud에 장애가 발생했는지 확인하세요.
Environment VariablesExperiments
트레이닝 스크립트에서 wandb.init()이 실행되면 API 호출을 통해 서버에 run 객체가 생성됩니다. 새로운 프로세스가 시작되어 메트릭을 스트리밍하고 수집하며, 그동안 메인 프로세스는 정상적으로 동작할 수 있습니다. 스크립트는 로컬 파일에 기록하고, 별도의 프로세스가 시스템 메트릭을 포함한 데이터를 서버로 스트리밍합니다. 스트리밍을 끄려면 트레이닝 디렉터리에서 wandb off를 실행하거나 WANDB_MODE 환경 변수를 offline으로 설정하세요.
Sweeps
스윕이 실행 중일 때:
  • 스윕에서 사용하는 train.py 스크립트가 변경되더라도, 스윕은 기존 train.py를 계속 사용합니다.
  • train.py 스크립트가 참조하는 파일(예: helper.py 스크립트의 헬퍼 함수)이 변경되면, 스윕은 변경된 helper.py를 사용하기 시작합니다.
ArtifactsEnvironment Variables
기본적으로 아티팩트는 artifacts/ 폴더에 다운로드됩니다. 위치를 변경하려면 다음을 수행하세요:
  • wandb.Artifact().download에 인자로 전달하세요:
    wandb.Artifact().download(root="<path_to_download>")
    
  • WANDB_ARTIFACT_DIR 환경 변수를 설정하세요:
    import os
    os.environ["WANDB_ARTIFACT_DIR"] = "<path_to_download>"
    
ExperimentsRuns
내보내기 제한 때문에 전체 run 이력을 CSV로 내보내거나 run.history API를 사용할 때 모두 내보내지 못할 수 있습니다. 전체 run 이력에 접근하려면, Parquet 형식으로 run history 아티팩트를 다운로드하세요:
import wandb
import pandas as pd

run = wandb.init()
artifact = run.use_artifact('<entity>/<project>/<run-id>-history:v0', type='wandb-history')
artifact_dir = artifact.download()
df = pd.read_parquet('<path to .parquet file>')
Python
이 라이브러리는 Python 2.7과 Python 3.6 이상을 지원합니다. 아키텍처는 다른 프로그래밍 언어와의 인테그레이션도 용이하게 합니다. 다른 언어를 모니터링하려면 contact@wandb.com으로 문의하세요.