메인 콘텐츠로 건너뛰기

주요 아티클

모든 카테고리에서 가장 자주 묻는 질문들입니다. 찾으시는 내용을 찾을 수 없다면, 아래의 인기 카테고리를 살펴보거나 카테고리별 아티클을 검색해 보세요.

여전히 찾으시는 내용을 찾을 수 없나요?

고객 지원팀에 문의하기
학생들은 다음 단계에 따라 아카데믹 플랜을 신청할 수 있습니다:
Artifacts는 상위 프로젝트로부터 엑세스 권한을 상속받습니다:
  • 프라이빗 프로젝트에서는 Teams 멤버들만 Artifacts에 엑세스할 수 있습니다.
  • 퍼블릭 프로젝트에서는 모든 Users가 Artifacts를 읽을 수 있으며, Teams 멤버들만 생성하거나 수정할 수 있습니다.
  • 오픈 프로젝트에서는 모든 Users가 Artifacts를 읽고 쓸 수 있습니다.

Artifacts 워크플로우

이 섹션에서는 Artifacts를 관리하고 편집하기 위한 워크플로우를 설명합니다. 많은 워크플로우가 W&B에 저장된 데이터에 엑세스할 수 있게 해주는 client library의 구성 요소인 W&B API를 활용합니다.
history 오브젝트는 wandb.log로 로그된 메트릭을 추적합니다. API를 사용하여 history 오브젝트에 엑세스하세요:
api = wandb.Api()
run = api.run("username/project/run_id")
print(run.history())
W&B Sweep이 시작되면 Sweep 설정을 변경할 수 없습니다. 하지만 테이블 뷰로 이동하여 체크박스로 Runs를 선택한 다음, Create sweep 메뉴 옵션을 선택하여 이전 Runs를 기반으로 새로운 Sweep 구성을 생성할 수 있습니다.
계정에 시트를 추가하려면 다음 단계를 따르세요:
  • 지원을 받으려면 어카운트 익제큐티브(Account Executive) 또는 지원팀 (support@wandb.com)에 문의하세요.
  • 조직 이름과 원하는 시트 수를 제공하세요.
Plotly 또는 Bokeh 피규어를 Tables에 직접 인테그레이션하는 것은 지원되지 않습니다. 대신 피규어를 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 피규어 경로 정의
    path_to_plotly_html = "./plotly_figure.html"

    # Plotly 피규어 생성
    fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])

    # Plotly 피규어를 HTML로 내보내기
    # auto_play를 False로 설정하면 애니메이션 Plotly 차트가 자동으로 재생되는 것을 방지합니다.
    fig.write_html(path_to_plotly_html, auto_play=False)

    # Plotly 피규어를 HTML 파일로 테이블에 추가
    table.add_data(wandb.Html(path_to_plotly_html))

    # 테이블 로그
    run.log({"test_table": table})

W&B에서 서비스 계정은 여러 팀에 추가될 수 없습니다. 각 서비스 계정은 특정 팀에 연결되어야 합니다.
여러 저자를 추가하여 Report의 모든 기여자에게 정확하게 크레딧을 부여하세요.여러 저자를 추가하려면 저자 이름 옆의 + 아이콘을 클릭하세요. 그러면 해당 Report에 엑세스할 수 있는 모든 Users가 포함된 드롭다운 메뉴가 열립니다. 저자로 추가하고 싶은 Users를 선택하세요.
여러 리포트 저자 추가하기
인스턴스의 관리자라면 사용자 관리 섹션에서 사용자 추가 및 Teams 생성에 대한 지침을 확인하세요.
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
설치 문제가 발생하면, 아나콘다의 패키지 관리 문서를 참조하여 도움을 받으세요.
  • 데이터 비영구성: 익명 계정의 Runs는 7일 동안만 저장됩니다. 익명 run 데이터를 실제 계정에 저장하여 소유권을 주장하세요.
익명 모드 인터페이스
  • Artifact 로깅 불가: 익명 run에 Artifact를 로그하려고 하면 커맨드라인에 경고가 나타납니다:
    wandb: WARNING Artifacts logged anonymously cannot be claimed and expire after 7 days.
    
  • 프로필 또는 설정 페이지 없음: 실제 계정에서만 유용한 특정 페이지들은 UI에 포함되지 않습니다.
두 Artifact 버전 간에 변경된 파일들만 스토리지 비용을 발생시킵니다.
Artifact 중복 제거
cat.pngdog.png라는 두 개의 이미지 파일을 포함하는 animals라는 이미지 Artifact를 가정해 보겠습니다:
images
|-- cat.png (2MB) # `v0`에서 추가됨
|-- dog.png (1MB) # `v0`에서 추가됨
이 Artifact는 버전 v0를 부여받습니다.새로운 이미지 rat.png를 추가하면, 다음과 같은 내용으로 새로운 Artifact 버전 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. 각기 다른 모델 아키텍처에 대해 새로운 Artifact를 생성합니다. run의 config를 사용하는 것과 유사하게, Artifact의 metadata 속성을 사용하여 아키텍처에 대한 상세 설명을 제공하세요.
  2. 각 모델에 대해 log_artifact를 사용하여 주기적으로 체크포인트를 로그합니다. W&B는 이러한 체크포인트의 이력을 구축하며, 가장 최근의 것에 latest 에일리어스를 라벨링합니다. architecture-name:latest를 사용하여 어떤 모델 아키텍처의 최신 체크포인트든 참조할 수 있습니다.
Sweep에서 모델을 로그하는 효과적인 한 가지 방법은 Sweep을 위한 모델 Artifact를 생성하는 것입니다. 각 버전은 Sweep의 서로 다른 run을 나타냅니다. 다음과 같이 구현하세요:
wandb.Artifact(name="sweep_name", type="model")
wandb.init(tags='your_tag')를 사용하여 고유한 태그를 설정하세요. 이를 통해 프로젝트 페이지의 Runs 테이블에서 해당 태그를 선택하여 프로젝트 Runs를 효율적으로 필터링할 수 있습니다.wandb.init()에 대한 자세한 내용은 wandb.init() 레퍼런스를 참조하세요.
Weights and Biases는 버그 바운티 프로그램을 운영하고 있습니다. 자세한 내용은 W&B 보안 포털을 확인하세요.
  • 지원팀 (support@wandb.com)에 문의하세요.
  • 조직 이름, 계정과 연결된 이메일, 그리고 사용자 이름을 제공하세요.
W&B에서 계정을 기업용에서 아카데믹용으로 변경하려면 다음 단계를 따르세요:
  1. 아카데믹 이메일 연결:
    • 계정 설정에 접속합니다.
    • 아카데믹 이메일을 추가하고 기본 이메일로 설정합니다.
  2. 아카데믹 플랜 신청:
청구 주소를 변경하려면 지원팀 (support@wandb.com)에 문의하세요.
환경 변수 WANDB_DIR을 설정하여 W&B run 데이터의 로깅 디렉토리를 구성하세요. 예시:
import os
os.environ["WANDB_DIR"] = os.path.abspath("your/directory")
API를 사용하여 완료된 run에 할당된 그룹을 변경할 수 있습니다. 이 기능은 웹 UI에는 나타나지 않습니다. 다음 코드를 사용하여 그룹을 업데이트하세요:
import wandb

api = wandb.Api()
run = api.run("<ENTITY>/<PROJECT>/<RUN_ID>")
run.group = "NEW-GROUP-NAME"
run.update()
계정 생성 후 사용자 이름을 변경하는 것은 불가능합니다. 대신 원하는 사용자 이름으로 새 계정을 생성하세요.
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입니다.
W&B 클라이언트 라이브러리는 버전 0.11까지 Python 3.5를 지원했습니다. Python 3.5 지원은 해당 수명 종료와 일치하는 버전 0.12에서 종료되었습니다. 자세한 내용은 버전 0.12 릴리스 노트를 방문하세요.
이미지 패널을 확장하고 스텝 슬라이더를 사용하여 서로 다른 스텝의 이미지를 탐색하세요. 이 프로세스는 트레이닝 중에 모델의 출력 변화를 쉽게 비교할 수 있게 해줍니다.
트레이닝 스크립트 시작 부분에서 실험 이름과 함께 wandb.init을 호출하세요. 예: wandb.init(name="my_awesome_run").
상단의 메시지를 통해 Report 변환이 이루어진 경우, 빨간색 “Revert” 버튼을 클릭하여 이전 상태로 복구하세요. 변환 후에 이루어진 모든 변경 사항은 손실된다는 점에 유의하세요.단일 Markdown 블록이 변환된 경우, cmd+z를 사용하여 실행 취소하세요.세션이 닫혀서 되돌리기 옵션을 사용할 수 없는 경우, 초안을 폐기하거나 마지막으로 저장된 버전에서 편집하는 것을 고려해 보세요. 둘 다 작동하지 않으면 W&B 지원팀에 문의하세요.
트레이닝 run에 간섭을 피하는 것이 중요합니다. W&B는 별도의 프로세스에서 작동하므로 W&B에 충돌이 발생하더라도 트레이닝은 계속됩니다. 인터넷 연결이 끊기는 경우에도 W&B는 wandb.ai로 데이터를 보내기 위해 계속해서 재시도합니다.
삭제된 계정과 이전에 연결되었던 이메일을 사용하여 새 계정을 생성할 수 있습니다.
역할 및 권한에 대한 자세한 내용은 다음 링크를 참조하세요: 팀 역할 및 권한.
트레이닝 설정이 커맨드라인 인수를 전달하는 경우 W&B Sweeps에서 커스텀 CLI 커맨드를 사용할 수 있습니다.아래 예시에서 코드 조각은 사용자가 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} 키는 Sweep 구성의 모든 파라미터로 확장되며, 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}
다크 모드는 베타 버전이며 접근성에 최적화되어 있지 않습니다. 다크 모드를 활성화하려면:
  1. W&B 계정 설정으로 이동합니다.
  2. Public preview features 섹션으로 스크롤합니다.
  3. UI Display에서 드롭다운 메뉴를 통해 Dark mode를 선택합니다.
wandb: Network error (ConnectionError), entering retry loop와 같은 SSL 또는 네트워크 오류가 발생하면 다음 해결 방법을 사용하세요:
  1. SSL 인증서를 업그레이드합니다. Ubuntu 서버에서는 update-ca-certificates를 실행하세요. 보안 위험을 완화하고 트레이닝 로그를 동기화하기 위해 유효한 SSL 인증서가 필수적입니다.
  2. 네트워크 연결이 불안정한 경우, 선택적 환경 변수 WANDB_MODEoffline으로 설정하여 오프라인 모드에서 작업하고, 나중에 인터넷 연결이 가능한 장치에서 파일을 동기화하세요.
  3. 로컬에서 실행되어 클라우드 서버와의 동기화를 피할 수 있는 W&B Private Hosting 사용을 고려해 보세요.
SSL CERTIFICATE_VERIFY_FAILED 오류의 경우, 회사 방화벽으로 인해 발생할 수 있습니다. 로컬 CA를 구성하고 다음을 실행하세요:export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
커스텀 차트 에디터에 접속하세요. 현재 선택된 차트 유형을 클릭하여 모든 프리셋이 표시되는 메뉴를 엽니다. 삭제할 프리셋 위에 마우스를 올린 다음 휴지통 아이콘을 클릭하세요.
차트 프리셋 삭제하기
조직 계정을 삭제하려면 다음 단계를 따르거나 지원팀 (support@wandb.com)에 문의하세요.
패널 그리드를 선택하고 delete 또는 backspace 키를 누르세요. 패널 그리드를 선택하려면 오른쪽 상단의 드래그 핸들을 클릭하세요.
계정에서 팀을 삭제하려면:
  • 관리자 권한으로 팀 설정에 접속합니다.
  • 페이지 하단의 Delete 버튼을 클릭합니다.
run의 이름을 명시적으로 지정하지 않으면, W&B는 프로젝트 내에서 이를 식별하기 위해 랜덤한 이름을 할당합니다. 랜덤 이름의 예로는 pleasant-flower-4misunderstood-glade-2 등이 있습니다.
summary는 테이블에 표시되는 반면, log는 향후 플로팅을 위해 모든 값을 저장합니다.예를 들어 정확도가 변경될 때마다 run.log()를 호출합니다. 기본적으로 run.log()는 해당 메트릭에 대해 수동으로 설정하지 않는 한 summary 값을 업데이트합니다.산점도(scatterplot)와 평행 좌표계 플롯(parallel coordinate plots)은 summary 값을 사용하고, 라인 플롯(line plot)은 run.log에 기록된 모든 값을 표시합니다.일부 사용자들은 가장 최근에 로그된 정확도 대신 최적의 정확도를 반영하기 위해 summary를 수동으로 설정하는 것을 선호합니다.
팀은 동일한 프로젝트에서 작업하는 사용자들이 협업하는 워크스페이스 역할을 합니다. 엔티티는 사용자 이름(username) 또는 팀 이름을 나타냅니다. W&B에서 Runs를 로그할 때 wandb.init(entity="example-team")을 사용하여 엔티티를 개인 계정 또는 팀 계정으로 설정하세요.
팀은 동일한 프로젝트에서 작업하는 사용자들이 협업하는 워크스페이스 역할을 합니다. 조직은 여러 팀을 포함할 수 있는 상위 수준의 엔티티로, 주로 결제 및 계정 관리와 관련됩니다.
다음 모드들을 사용할 수 있습니다:
  • online (기본값): 클라이언트가 데이터를 wandb 서버로 보냅니다.
  • offline: 클라이언트가 데이터를 wandb 서버로 보내는 대신 로컬 머신에 저장합니다. 나중에 wandb sync 커맨드를 사용하여 데이터를 동기화하세요.
  • disabled: 클라이언트가 mocked 오브젝트를 반환하여 작동을 시뮬레이션하고 모든 네트워크 통신을 차단합니다. 모든 로깅은 꺼지지만, 모든 API 메소드 스텁(stubs)은 계속 호출 가능합니다. 이 모드는 주로 테스트용으로 사용됩니다.
W&B는 TensorBoard와 인테그레이션되며 실험 추적 툴을 개선합니다. 창업자들은 TensorBoard 사용자들이 겪는 공통적인 불만을 해결하기 위해 W&B를 만들었습니다. 주요 개선 사항은 다음과 같습니다:
  1. 모델 재현성(Model Reproducibility): W&B는 실험, 탐색 및 모델 재현을 촉진합니다. 메트릭, 하이퍼파라미터, 코드 버전을 캡처하고 모델 체크포인트를 저장하여 재현성을 보장합니다.
  2. 자동 정리: W&B는 시도된 모든 모델에 대한 개요를 제공하여 프로젝트 인수인계 및 휴가 시 워크플로우를 간소화하며, 오래된 실험의 재실행을 방지하여 시간을 절약해 줍니다.
  3. 빠른 인테그레이션: 5분 만에 프로젝트에 W&B를 인테그레이션하세요. 무료 오픈 소스 Python 패키지를 설치하고 코드 몇 줄만 추가하면 됩니다. 로그된 메트릭과 기록은 각 모델 run과 함께 나타납니다.
  4. 중앙 집중식 대시보드: 트레이닝이 로컬, 연구소 클러스터, 또는 클라우드 스팟 인스턴스 중 어디서 이루어지든 일관된 대시보드에 엑세스하세요. 여러 머신에서 TensorBoard 파일을 관리할 필요가 없습니다.
  5. 강력한 필터링 테이블: 다양한 모델의 결과를 효율적으로 검색, 필터링, 정렬 및 그룹화하세요. 대규모 프로젝트에서 TensorBoard가 어려움을 겪는 영역인 다양한 작업별 최적의 모델을 쉽게 식별할 수 있습니다.
  6. 협업 툴: W&B는 복잡한 기계학습 프로젝트를 위한 협업을 강화합니다. 프로젝트 링크를 공유하고 결과 공유를 위해 프라이빗 팀을 활용하세요. 업무 로그나 프레젠테이션을 위해 인터랙티브 시각화와 마크다운 설명이 포함된 Reports를 생성하세요.
구독 플랜을 다운그레이드하려면 현재 플랜 세부 정보와 원하는 플랜을 포함하여 support@wandb.com 지원팀에 문의하세요.
개인의 프라이빗 프로젝트 내에서 생성된 Reports는 해당 사용자에게만 표시됩니다. 사용자는 자신의 프로젝트를 팀이나 대중에게 공유할 수 있습니다.팀 프로젝트에서 관리자나 Reports를 생성한 멤버는 다른 팀 멤버들을 위해 편집 권한과 보기 권한 사이를 전환할 수 있습니다. 팀 멤버들은 Reports를 공유할 수 있습니다.Report를 공유하려면 오른쪽 상단의 Share 버튼을 선택하세요. 이메일 주소를 입력하거나 매직 링크를 복사하세요. 이메일로 초대된 Users는 Report를 보려면 W&B에 로그인해야 하지만, 매직 링크를 가진 Users는 로그인할 필요가 없습니다.공유된 Reports는 뷰 전용(view-only) 엑세스 권한을 유지합니다.
임베딩을 통해 Report를 공유할 수 있습니다. Report 상단 오른쪽의 Share 버튼을 클릭한 다음, 팝업 창 하단에서 임베드 코드를 복사하세요.
리포트 임베딩하기
Sweeps에서 코드 로깅을 활성화하려면 W&B Run을 초기화한 후 wandb.log_code()를 추가하세요. W&B 프로필 설정에서 코드 로깅이 활성화되어 있더라도 이 작업이 필요합니다. 고급 코드 로깅에 대해서는 여기의 wandb.log_code() 문서를 참조하세요.
wandb.init에 전달된 인수는 환경 변수보다 우선합니다. 환경 변수가 설정되지 않았을 때 시스템 기본값 이외의 기본 디렉토리를 설정하려면, wandb.init(dir=os.getenv("WANDB_DIR", my_default_override))를 사용하세요.
W&B는 이산적인 검색 공간(discrete search space)으로 W&B Sweep을 생성할 때 생성될 예상 Runs의 수를 제공합니다. 이 총합은 검색 공간의 데카르트 곱(cartesian product)을 반영합니다.예를 들어, 다음과 같은 검색 공간을 가정해 보겠습니다:
예상 runs 컬럼
이 경우, 데카르트 곱은 9가 됩니다. W&B는 앱 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}")
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']])
필요에 따라 출력을 저장하도록 스크립트를 수정하세요.
Artifact 참조가 W&B에 로그되고 버킷에서 버전 관리가 활성화된 경우, Amazon S3 UI에 버전 ID가 나타납니다. W&B에서 이러한 버전 ID와 ETag를 가져오려면 Artifact를 패치하고 해당 매니페스트 항목에 엑세스하세요. 예시:
artifact = run.use_artifact("my_table:latest")
for entry in artifact.manifest.entries.values():
    versionID = entry.extra.get("versionID")
    etag = entry.extra.get("etag")
문제가 발생한 run의 경우, 코드가 실행 중인 디렉토리의 wandb/run-<date>_<time>-<run-id>/logs에 있는 debug.logdebug-internal.log를 확인하세요.
W&B에서 “Filestream rate limit exceeded” 오류를 해결하려면 다음 단계를 따르세요:로깅 최적화:
  • API 요청을 줄이기 위해 로깅 빈도를 줄이거나 로그를 배치(batch) 처리합니다.
  • 동시 API 요청을 피하기 위해 실험 시작 시간을 시차를 두고 배치합니다.
서비스 중단 확인:
  • W&B 상태 업데이트를 확인하여 문제가 일시적인 서버 측 문제에서 발생한 것이 아닌지 확인합니다.
지원팀 문의:
  • 속도 제한 상향을 요청하려면 실험 설정 세부 정보와 함께 W&B 지원팀 (support@wandb.com)에 연락하세요.
검색창을 사용하여 Reports 리스트를 필터링하세요. 원치 않는 Report를 선택하여 개별적으로 삭제하거나, 모든 Reports를 선택하고 ‘Delete Reports’를 클릭하여 프로젝트에서 제거하세요.
원치 않는 리포트 및 초안 삭제
In Dedicated Cloud and Self-Managed:
  • Organization admins can find or list API keys for all organization users and service accounts.
  • Team admins can find or list API keys for service accounts in teams they administer.
  • Non-admin users can find or list their own API keys.
To find an API key, select the Personal API key or Service Account API key tab for details.
To find a personal API key owned by your user ID:
  1. Log in to W&B, click your user profile icon, then click User Settings.
  2. Scroll to the API Keys section.
The API keys table shows the key ID (the first part of each API key) for identification purposes. The full secret API key is only displayed once when you create it. If you need to use an existing key but do not have the full secret stored, you must create a new API key.
Sweep에서 가장 성능이 좋은 run의 Artifacts를 가져오려면 다음 코드를 사용하세요:
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)
W&B는 각 run에 의해 로그된 Artifacts와 Artifact 그래프를 구축하기 위해 각 run에서 사용된 Artifacts를 추적합니다. 이 그래프는 노드가 Runs와 Artifacts를 나타내는 이분, 유향, 비순환 그래프(DAG)입니다. 예시는 여기에서 볼 수 있습니다 (그래프를 확장하려면 “Explode”를 클릭하세요).Public API를 사용하여 Artifact 또는 run에서 시작하여 프로그래밍 방식으로 그래프를 탐색하세요.
api = wandb.Api()

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

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

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

api = wandb.Api()
runs = api.runs('<entity>/<project>')
for run in runs:
    if <condition>:
        run.delete()
사용자 설정에서 Delete account를 클릭하여 사용자 계정을 삭제하세요. 이 작업은 되돌릴 수 없으며 즉시 적용됩니다.
시스템 메트릭 로깅을 비활성화하려면 _disable_statsTrue로 설정하세요:
wandb.init(settings=wandb.Settings(x_disable_stats=True))
다음 방법 중 하나로 로그인 URL을 설정하세요:
  • 환경 변수 WANDB_BASE_URL을 Server URL로 설정합니다.
  • wandb login--host 플래그를 Server URL로 설정합니다.
이전 단계의 로그를 덮어쓰려면 forkingrewind를 사용하세요.
시스템 메트릭 로깅 빈도를 구성하려면 _stats_sampling_interval을 초 단위 숫자(float)로 설정하세요. 기본값은 10.0입니다.
wandb.init(settings=wandb.Settings(x_stats_sampling_interval=30.0))
Python에서 wandb를 임포트할 때 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
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()
resume='must' but run (<run_id>) doesn't exist 오류가 발생하면, 재개하려는 run이 프로젝트 또는 엔티티 내에 존재하지 않는 것입니다. 올바른 인스턴스에 로그인되어 있는지, 프로젝트와 엔티티가 설정되어 있는지 확인하세요:
wandb.init(entity=<entity>, project=<project>, id=<run-id>, resume='must')
wandb login --relogin을 실행하여 인증되었는지 확인하세요.
LaTeX는 Reports에 원활하게 통합됩니다. LaTeX를 추가하려면 새 Report를 생성하고 리치 텍스트 영역에 입력을 시작하여 노트를 작성하고 커스텀 시각화와 테이블을 저장하세요.새 줄에서 /를 누르고 인라인 수식 탭으로 이동하여 LaTeX 콘텐츠를 삽입하세요.
401 Invalid Authentication 오류는 API 키가 유효하지 않거나 W&B 프로젝트 엔티티/이름이 올바르지 않음을 의미합니다.

API 키 확인

  1. 사용자 설정에서 새 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>"

흔한 실수들

  • 팀 이름 대신 개인 엔티티 사용
  • 팀 또는 프로젝트 이름 오타
  • 팀과 프로젝트 사이의 슬래시(/) 누락
  • 만료되거나 삭제된 API 키 사용

여전히 문제가 발생하나요?

  • W&B 계정에 해당 팀과 프로젝트가 존재하는지 확인하세요
  • 지정된 팀에 대한 엑세스 권한이 있는지 확인하세요
  • 현재 API 키가 작동하지 않는다면 새 키를 생성해 보세요
신뢰할 수 있는 애플리케이션을 유지하기 위해 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. 지수 백오프(exponential backoff)와 함께 재시도 로직 사용

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("API 키와 프로젝트 구성을 확인하세요")
    elif "402" in error_str:
        # 크레딧 부족
        raise ValueError("크레딧이 부족합니다")
    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초 타임아웃
)

추가 팁

  • 디버깅을 위해 타임스탬프와 함께 오류를 로그하세요
  • 더 나은 동시성 처리를 위해 비동기(async) 작업을 사용하세요
  • 프로덕션 시스템을 위해 서킷 브레이커(circuit breakers)를 구현하세요
  • API 호출을 줄이기 위해 적절한 경우 응답을 캐싱하세요
쿼터 부족 오류(402)는 플랜에 남은 크레딧이 없을 때 발생합니다.오류: “You exceeded your current quota, please check your plan and billing details”해결 방법:
  • W&B Billing 페이지에서 크레딧 잔액을 확인하세요
  • 크레딧을 추가 구매하거나 플랜을 업그레이드하세요
  • 지원팀에 한도 상향을 요청하세요
“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 주소 위치에 의해 결정됩니다.
속도 제한 오류(429)는 동시성 제한을 초과했을 때 발생합니다.오류: “Concurrency limit reached for requests”해결 방법:
  • 병렬 요청 수를 줄이세요
  • 요청 사이에 지연 시간을 추가하세요
  • 지수 백오프를 구현하세요
  • 참고: 속도 제한은 W&B 프로젝트별로 적용됩니다

속도 제한을 피하기 위한 모범 사례

  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 페이지에서 사용량 모니터링

기본 지출 캡(spending caps)

  • Pro 계정: $6,000/월
  • Enterprise 계정: $700,000/년
한도를 조정하려면 어카운트 익제큐티브 또는 지원팀에 문의하세요.
서버 오류는 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 엔티티 및 프로젝트 이름
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를 검사합니다.
이 오류는 라이브러리가 서버로 데이터를 동기화하는 프로세스를 실행하는 중에 문제에 직면했음을 의미합니다.다음 해결 방법들이 특정 환경에서 문제를 해결할 수 있습니다:
wandb.init(settings=wandb.Settings(start_method="fork"))
테이블은 Markdown 기능 중 직접적인 WYSIWYG 대응 기능이 없는 유일한 기능입니다. 테이블을 추가하려면 Markdown 블록을 삽입하고 그 안에 테이블을 생성하세요.
wandb를 설치할 때 다음과 같은 오류가 발생하는 경우:
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
사전 빌드된 휠(wheel)에서 psutil을 직접 설치하세요. https://pywharf.github.io/pywharf-pkg-repo/psutil에서 Python 버전과 운영 체제를 확인하세요.예를 들어, 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 설치를 완료하세요.
W&B는 업로드할 파일이나 데이터를 명시적으로 지정할 수 있게 함으로써 스칼라 값만 로그하는 프로젝트도 지원합니다. 이미지를 사용하지 않고 로깅하는 방법을 보여주는 PyTorch 예시를 참조하세요.
라이브러리가 인터넷에 연결할 수 없는 경우, 재시도 루프에 진입하여 네트워크가 복구될 때까지 계속해서 메트릭 스트리밍을 시도합니다. 이 동안 프로그램은 계속 실행됩니다.인터넷이 없는 머신에서 실행하려면 WANDB_MODE=offline을 설정하세요. 이 구성은 메트릭을 하드 드라이브에 로컬로 저장합니다. 나중에 wandb sync DIRECTORY를 호출하여 데이터를 서버로 스트리밍하세요.
팀에 합류하려면 다음 단계를 따르세요:
  • 팀 관리자나 관리 권한이 있는 사람에게 연락하여 초대를 요청하세요.
  • 이메일에서 초대장을 확인하고 안내에 따라 팀에 합류하세요.
기본적으로 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를 토글하여 끕니다.
네. run 이름을 run ID로 덮어쓰려면 다음 코드 조각을 사용하세요:
import wandb

with wandb.init() as run:
   run.name = run.id
   run.save()
W&B가 적용된 스크립트를 중단하려면 키보드에서 Ctrl+D를 누르세요.
단일 스크립트 내에서 여러 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"로 지정하여 동시에 여러 개의 활성 run을 생성할 수 있습니다.
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"에 대한 자세한 정보는 프로세스당 여러 run 실행을 참조하세요.
Debug Bundle을 확인하세요. 관리자는 /system-admin 페이지에서 오른쪽 상단의 W&B 아이콘을 선택한 다음 Debug Bundle을 선택하여 이를 가져올 수 있습니다.
Debug Bundle 다운로드
시스템 설정
실험을 관리하는 몇 가지 방법이 있습니다.복잡한 워크플로우의 경우, 여러 Runs를 사용하고 wandb.init()의 그룹 파라미터를 단일 실험 내의 모든 프로세스에 대해 고유한 값으로 설정하세요. Runs이 그룹 ID별로 테이블을 묶어 시각화가 제대로 작동하도록 보장합니다. 이 접근 방식은 동시 실험과 트레이닝 Runs를 한 곳에서 결과를 로그하면서 가능하게 합니다.더 간단한 워크플로우의 경우, resume=Trueid=UNIQUE_ID와 함께 wandb.init()을 호출한 다음, 동일한 id=UNIQUE_ID로 다시 wandb.init()을 호출하세요. run.log() 또는 run.summary()를 사용하여 정상적으로 로그하면 run 값이 그에 따라 업데이트됩니다.
가끔 이전에 로그된 run의 출력물로 Artifact를 표시해야 할 때가 있습니다. 이 경우 기존 run을 다시 초기화하고 다음과 같이 새 Artifacts를 로그하세요:
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)
W&B에 로그를 남기는 자동화 테스트나 내부 툴을 실행하려면 팀 설정 페이지에서 Service Account를 생성하세요. 이 작업을 통해 지속적 통합(CI)을 통해 실행되는 작업을 포함한 자동화 작업에 서비스 API 키를 사용할 수 있습니다. 서비스 계정 작업을 특정 사용자에게 귀속시키려면 WANDB_USERNAME 또는 WANDB_USER_EMAIL 환경 변수를 설정하세요.
서비스 계정 생성하기
이 예시들은 wandb.Run.log()를 사용하여 손실값(losses)을 로그하는 두 가지 다른 방법을 보여줍니다.
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)})
더 자세한 내용은 로깅 문서를 참조하세요.
run.log({'final_accuracy': 0.9})를 사용하면 최종 정확도가 올바르게 업데이트됩니다. 기본적으로 run.log({'final_accuracy': <value>})run.settings['final_accuracy']를 업데이트하며, 이는 runs 테이블의 값을 반영합니다.
각 배치에서 특정 메트릭을 로그하고 플롯을 표준화하려면, 메트릭과 함께 원하는 x축 값을 로그하세요. 커스텀 플롯에서 편집(edit)을 클릭하고 커스텀 x축을 선택합니다.
import wandb

with wandb.init() as run:
    run.log({"batch": batch_idx, "loss": 0.3})
    run.log({"epoch": epoch, "val_acc": 0.94})
예를 들어, 배치당 트레이닝 정확도와 에포크당 검증 정확도를 로그하고 싶습니다.네, 메트릭과 함께 batchepoch 같은 인덱스를 로그하세요. 한 단계에서는 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")
전송되는 포인트의 수는 UI에서 그래프 로딩 시간에 영향을 줍니다. 1,000 포인트를 초과하는 라인의 경우, 백엔드에서 브라우저로 보내기 전에 데이터를 1,000 포인트로 다운샘플링합니다. 이 샘플링은 비결정적이어서 페이지를 새로 고칠 때마다 샘플링된 포인트가 달라질 수 있습니다.메트릭당 10,000 포인트 미만으로 로그하세요. 한 라인에 100만 포인트 이상을 로그하면 페이지 로드 시간이 크게 증가합니다. 이 Colab에서 정확도를 희생하지 않으면서 로깅 풋프린트를 최소화하는 전략을 살펴보세요. 구성(config) 및 요약(summary) 메트릭이 500개 컬럼을 초과하면 테이블에는 500개만 표시됩니다.
2024년 5월 21일 이후에 생성된 계정에서는 개인 엔티티를 사용할 수 없습니다. W&B는 결과 공유를 활성화하기 위해 모든 Users가 새로운 프로젝트를 팀(Team)으로 로그하도록 권장합니다.
공유 머신을 사용할 때, 인증을 위해 WANDB_API_KEY 환경 변수를 설정하여 Runs가 올바른 WandB 계정으로 로그되도록 하세요. 환경에서 소스화된 경우, 이 변수는 로그인 시 올바른 자격 증명을 제공합니다. 또는 스크립트에서 환경 변수를 직접 설정하세요.X를 API 키로 바꾸어 export WANDB_API_KEY=X 커맨드를 실행하세요. API 키는 wandb.ai/settings에서 생성할 수 있습니다.
“로깅 기능이 지연 처리(lazy)되나요? 로컬 작업을 실행하는 동안 서버로 결과를 보내기 위해 네트워크에 의존하고 싶지 않습니다.”wandb.log 함수는 로컬 파일에 한 줄을 작성하며 네트워크 호출을 방해하지 않습니다. wandb.init을 호출할 때 동일한 머신에서 새로운 프로세스가 시작됩니다. 이 프로세스는 파일 시스템의 변경 사항을 수신 대기하고 웹 서비스와 비동기적으로 통신하므로 로컬 작업이 중단 없이 계속될 수 있습니다.
wandb offline 커맨드는 환경 변수 WANDB_MODE=offline을 설정하여 데이터가 원격 W&B 서버와 동기화되는 것을 방지합니다. 이 작업은 모든 프로젝트에 영향을 미쳐 W&B 서버로의 데이터 로깅을 중단합니다.경고 메시지를 억제하려면 다음 코드를 사용하세요:
import logging

logger = logging.getLogger("wandb")
logger.setLevel(logging.WARNING)
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" 사용
더 자세한 정보는 메트릭 명명 제약 사항을 참조하세요.
Teams 플랜은 월간 구독 옵션을 제공하지 않습니다. 이 구독은 연 단위로 청구됩니다.
다음 단계에 따라 run을 한 프로젝트에서 다른 프로젝트로 옮길 수 있습니다:
  • 이동할 run이 있는 프로젝트 페이지로 이동합니다.
  • Runs 탭을 클릭하여 runs 테이블을 엽니다.
  • 이동할 Runs를 선택합니다.
  • Move 버튼을 클릭합니다.
  • 대상 프로젝트를 선택하고 작업을 확인합니다.
W&B는 UI를 통한 run 이동은 지원하지만, run 복제는 지원하지 않습니다. Runs와 함께 로그된 Artifacts는 새 프로젝트로 전송되지 않습니다. Artifacts를 run의 새 위치로 수동으로 옮기려면, wandb artifact get SDK 커맨드나 Api.artifact API를 사용하여 Artifact를 다운로드한 후, wandb artifact put 또는 Api.artifact API를 사용하여 run의 새 위치로 업로드할 수 있습니다.
W&B Reports에서 다음 단계를 따르세요:
  1. 여러 개의 패널 그리드를 생성합니다.
  2. 각 패널 그리드에 대해 원하는 run 세트를 선택하기 위해 필터를 적용합니다.
  3. 패널 그리드 내에 원하는 차트를 생성합니다.
트레이닝 프로그램이 여러 프로세스를 사용하는 경우, wandb.init()이 없는 프로세스에서 wandb 메소드를 호출하지 않도록 프로그램을 구성하세요.다음 접근 방식들을 사용하여 멀티프로세스 트레이닝을 관리하세요:
  1. 모든 프로세스에서 wandb.init을 호출하고 group 키워드 인수를 사용하여 공유 그룹을 생성합니다. 각 프로세스는 자체 wandb run을 가지며 UI는 트레이닝 프로세스들을 함께 그룹화합니다.
  2. 하나의 프로세스에서만 wandb.init을 호출하고 멀티프로세싱 큐를 통해 로그할 데이터를 전달합니다.
Torch DDP 코드 예시를 포함한 이러한 접근 방식의 자세한 설명은 분산 트레이닝 가이드를 참조하세요.
네, 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를 실행할 때 필수적입니다.
사전처럼 작동하는 (run.config())를 사용하여 Sweep 구성에서 하이퍼파라미터 이름과 값에 엑세스하세요.Sweep 외부의 Runs의 경우, wandb.init()config 인수에 사전을 전달하여 wandb.Run.config() 값을 설정하세요. Sweep에서는 wandb.init()에 제공된 모든 구성이 기본값 역할을 하며, Sweep이 이를 덮어쓸 수 있습니다.명시적인 행동을 위해 run.config.setdefaults()를 사용하세요. 다음 코드 조각은 두 가지 방법을 모두 보여줍니다:
# 하이퍼파라미터 기본값 설정
config_defaults = {"lr": 0.1, "batch_size": 256}

# run 시작 및 Sweep이 덮어쓸 수 있는
# 기본값 제공
with wandb.init(config=config_defaults) as run:
    # 여기에 트레이닝 코드 추가
    ...
단일 run에서 여러 메트릭을 최적화하려면 개별 메트릭의 가중치 합(weighted sum)을 사용하세요.
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
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 설정에서, 첫 번째 세그먼트 또는 /로 구분된 모든 세그먼트를 기준으로 패널 그룹화를 조정할 수 있습니다.
이 오류를 해결하려면 URL 끝에 ?workspace=clear를 추가하고 Enter를 누르세요. 이 작업은 프로젝트 페이지 워크스페이스의 클리어된 버전으로 안내합니다.
클래스 속성을 wandb.Run.log()에 전달하는 것을 피하세요. 네트워크 호출이 실행되기 전에 속성이 변경될 수 있습니다. 메트릭을 클래스 속성으로 저장할 때는 wandb.Run.log() 호출 시점의 속성값과 로그된 메트릭이 일치하도록 딥 카피(deep copy)를 사용하세요.
메트릭의 산점도를 생성하세요. Edit 메뉴를 열고 Annotations를 선택합니다. 거기서 값들의 러닝 맥시멈(running maximum)을 플로팅하세요.
wandb.plot.line_series()로 멀티라인 커스텀 차트를 생성하세요. 라인 차트를 보려면 프로젝트 페이지로 이동하세요. 레전드를 추가하려면 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 탭에서 확인하세요.
wandb.Run.name 속성에 다음과 같이 엑세스할 수 있습니다:
import wandb

with wandb.init() as run:
   run_name = run.name
   print(f"The human-readable run name is: {run_name}")
프로젝트의 프라이버시(공개 범위)를 변경하려면:
  1. W&B 앱에서 프로젝트의 아무 페이지에서나 왼쪽 내비게이션의 Overview를 클릭합니다.
  2. 오른쪽 상단에서 Edit을 클릭합니다.
  3. Project visibility에 대해 새로운 값을 선택합니다:
    • Team (기본값): 팀원만 프로젝트를 보고 편집할 수 있습니다.
    • Restricted: 초대된 멤버만 프로젝트에 엑세스할 수 있으며 퍼블릭 엑세스는 차단됩니다.
    • Open: 누구나 Runs를 제출하거나 Reports를 생성할 수 있지만 편집은 팀원만 가능합니다. 강의 환경, 공개 벤치마크 경진대회 또는 기타 비영구적인 맥락에만 적합합니다.
    • Public: 누구나 프로젝트를 볼 수 있지만 편집은 팀원만 가능합니다.
      W&B 관리자가 Public 공개 범위를 비활성화한 경우 선택할 수 없습니다. 대신 보기 전용 W&B Report를 공유하거나 W&B 조직 관리자에게 도움을 요청하세요.
  4. Save를 클릭합니다.
프로젝트를 더 엄격한 프라이버시 설정으로 업데이트하는 경우, 개별 사용자들의 프로젝트 엑세스 능력을 복구하기 위해 다시 초대해야 할 수도 있습니다.
"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"
현재 run을 저장하려면 run 오브젝트의 .save() 메소드를 호출하세요. run 오브젝트의 name 속성을 사용하여 이름을 가져옵니다.
run을 삭제할 때 관련 Artifacts도 삭제할지 묻는 프롬프트가 나타납니다. 이 옵션을 선택하면 Artifacts가 영구적으로 제거되어 나중에 run 자체를 복구하더라도 복구가 불가능해집니다.
삭제된 Runs를 복구하려면 다음 단계를 완료하세요:
  • Project Overview 페이지로 이동합니다.
  • 오른쪽 상단의 점 세 개를 클릭합니다.
  • Undelete recently deleted runs를 선택합니다.
참고:
  • 최근 7일 이내에 삭제된 Runs만 복구할 수 있습니다.
  • 복구가 옵션이 아닌 경우 W&B API를 사용하여 로그를 수동으로 업로드할 수 있습니다.
Workspaces는 업데이트된 데이터를 자동으로 로드합니다. 자동 새로고침은 Reports에 적용되지 않습니다. Report 데이터를 새로 고치려면 페이지를 다시 로드하세요.
비밀번호 재설정 이메일을 받을 수 없어 계정 엑세스를 되찾아야 하는 경우:
  1. 스팸 또는 정크 폴더 확인: 이메일이 필터링되지 않았는지 확인하세요.
  2. 이메일 확인: 계정과 연결된 이메일이 정확한지 확인하세요.
  3. SSO 옵션 확인: 사용 가능하다면 “Sign in with Google” 같은 서비스를 사용해 보세요.
  4. 지원팀 문의: 문제가 지속되면 사용자 이름과 이메일을 포함하여 지원팀 (support@wandb.com)에 도움을 요청하세요.
관리자 권한 없이 팀 공간에서 프로젝트를 제거하려면 다음 옵션을 따르세요:
  • 현재 관리자에게 프로젝트 제거를 요청하세요.
  • 관리자에게 프로젝트 관리를 위한 임시 엑세스 권한 부여를 요청하세요.
관리자와 연락이 닿지 않는 경우, 결제 관리자나 조직 내 다른 권한 있는 사용자에게 도움을 요청하세요.
프로젝트 이름을 변경하려면:
  • Project overview로 이동합니다.
  • Edit Project를 클릭합니다.
참고:
  • model-registry와 같이 보호된 프로젝트 이름은 변경할 수 없습니다. 보호된 이름에 대한 도움이 필요하면 지원팀에 문의하세요.
만료된 라이선스를 갱신하려면 support@wandb.com 지원팀에 연락하여 갱신 프로세스에 대한 도움을 받고 새로운 라이선스 키를 받으세요.
WYSIWYG로 전환한 후에도 원래의 모습을 유지하는 것이 목표이지만, 변환 프로세스가 완벽하지는 않습니다. 상당한 차이가 발생하는 경우 평가를 위해 보고해 주세요. Users는 편집 세션이 종료될 때까지 이전 상태로 되돌릴 수 있습니다.
오래된 하드웨어나 매우 큰 Report의 경우 성능 문제가 발생할 수 있습니다. 이를 완화하려면 현재 사용하지 않는 Report 섹션을 접어두세요.
네. 문서 아무 곳에나 “/mark”를 입력하고 엔터를 누르면 Markdown 블록이 삽입됩니다. 이를 통해 이전처럼 Markdown으로 편집할 수 있습니다.
W&B 계정을 삭제하려면 User settings 페이지로 이동하여 하단으로 스크롤한 후 Delete Account 버튼을 클릭하세요.
로그인 문제를 해결하려면 다음 단계를 따르세요:
  • 엑세스 확인: 올바른 이메일이나 사용자 이름을 사용하고 있는지 확인하고 관련 팀이나 프로젝트의 멤버십을 확인하세요.
  • 브라우저 트러블슈팅:
    • 캐시 데이터 간섭을 피하기 위해 시크릿 창을 사용하세요.
    • 브라우저 캐시를 지우세요.
    • 다른 브라우저나 기기에서 로그인을 시도하세요.
  • SSO 및 권한:
    • ID 제공업체(IdP) 및 Single Sign-On (SSO) 설정을 확인하세요.
    • SSO를 사용하는 경우 적절한 SSO 그룹에 포함되어 있는지 확인하세요.
  • 기술적 문제:
    • 추가 트러블슈팅을 위해 특정 오류 메시지를 기록해 두세요.
    • 문제가 지속되면 추가 지원을 위해 지원팀에 연락하세요.
W&B 엔티티에 run을 로그할 때 발생하는 권한 오류를 해결하려면 다음 단계를 따르세요:
  • 엔티티 및 프로젝트 이름 확인: 코드에서 W&B 엔티티와 프로젝트 이름의 철자와 대소문자 구분이 정확한지 확인하세요.
  • 권한 확인: 관리자에 의해 필요한 권한이 부여되었는지 확인하세요.
  • 로그인 자격 증명 확인: 올바른 W&B 계정에 로그인했는지 확인하세요. 다음 코드로 run을 생성하여 테스트해 보세요:
    import wandb
    
    run = wandb.init(entity="your_entity", project="your_project")
    run.log({'example_metric': 1})
    run.finish()
    
  • API 키 설정: WANDB_API_KEY 환경 변수를 사용하세요:
    export WANDB_API_KEY='your_api_key'
    
  • 호스트 정보 확인: 커스텀 배포의 경우 호스트 URL을 설정하세요:
    wandb login --relogin --host=<host-url>
    export WANDB_BASE_URL=<host-url>
    
W&B에서 resume 파라미터를 사용하려면 entity, project, id가 지정된 wandb.init()에서 resume 인수를 설정하세요. resume 인수는 "must" 또는 "allow" 값을 받습니다.
run = wandb.init(entity="your-entity", project="your-project", id="your-run-id", resume="must")
Sweep을 재개하려면 sweep_idwandb.agent() 함수에 전달하세요.
import wandb

sweep_id = "your_sweep_id"

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

wandb.agent(sweep_id=sweep_id, function=train)
민감한 데이터를 포함하는 Artifacts를 관리하거나 Artifact 버전의 삭제 일정을 잡으려면 TTL (time-to-live) 정책을 설정하세요. 자세한 지침은 TTL 가이드를 참조하세요.
개인 및 서비스 계정 키는 로테이트하거나 해지할 수 있습니다. 새로운 API 키나 서비스 계정 사용자를 생성한 다음, 새 키를 사용하도록 스크립트를 재구성하세요. 재구성 후 프로필이나 팀에서 이전 API 키를 제거하세요.
아니요. Run Finished 알림(사용자 설정의 Run Finished 설정으로 활성화됨)은 Python 스크립트에서만 작동하며, 각 셀 실행마다 알림이 가는 것을 방지하기 위해 주피터 노트북 환경에서는 꺼져 있습니다.노트북 환경에서는 대신 run.alert()를 사용하세요.
이는 연결 문제를 나타냅니다. 서버가 인터넷 엑세스를 잃고 데이터가 W&B로 동기화되는 것이 중단되면, 시스템은 짧은 재시도 기간 후에 해당 run을 crashed로 표시합니다.
누군가 anonymous="allow"로 스크립트를 실행하면:
  1. 임시 계정 자동 생성: W&B는 로그인된 계정이 있는지 확인합니다. 계정이 없으면 W&B는 새로운 익명 계정을 생성하고 해당 세션의 API 키를 저장합니다.
  2. 빠른 결과 로깅: Users는 반복적으로 스크립트를 실행하고 W&B 대시보드에서 즉시 결과를 볼 수 있습니다. 이러한 소유권이 주장되지 않은 익명 Runs는 7일 동안 유지됩니다.
  3. 유용할 때 데이터 소유권 주장: 사용자가 W&B에서 가치 있는 결과를 식별하면, 페이지 상단의 배너에 있는 버튼을 클릭하여 해당 run 데이터를 실제 계정에 저장할 수 있습니다. 소유권을 주장하지 않으면 run 데이터는 7일 후 삭제됩니다.
익명 run 링크는 민감합니다. 이 링크들은 누구나 7일 동안 실험 결과를 보고 소유권을 주장할 수 있게 하므로, 신뢰할 수 있는 개인하고만 링크를 공유하세요. 저자의 정체성을 숨기면서 공개적으로 결과를 공유하려면 support@wandb.com으로 도움을 요청하세요.
W&B 사용자가 스크립트를 찾아 실행하면, 일반적인 run과 마찬가지로 결과가 해당 사용자의 계정에 올바르게 로그됩니다.
SLURM 스케줄링 시스템과 함께 Sweeps를 사용할 때, 예약된 각 작업에서 wandb agent --count 1 SWEEP_ID를 실행하세요. 이 커맨드는 단일 트레이닝 작업을 실행한 후 종료되므로, 하이퍼파라미터 검색의 병렬성을 활용하면서 리소스 요청을 위한 런타임 예측을 용이하게 합니다.
오프라인 머신에서 트레이닝이 이루어지는 경우, 다음 단계에 따라 결과를 서버에 업로드하세요:
  1. 인터넷 연결 없이 메트릭을 로컬에 저장하려면 환경 변수 WANDB_MODE=offline을 설정하세요.
  2. 업로드할 준비가 되면 디렉토리에서 wandb init을 실행하여 프로젝트 이름을 설정합니다.
  3. wandb sync YOUR_RUN_DIRECTORY를 사용하여 메트릭을 클라우드 서비스로 전송하고 호스팅된 웹 앱에서 결과에 엑세스하세요.
run이 오프라인인지 확인하려면 wandb.init() 실행 후 run.settings._offline 또는 run.settings.mode를 확인하세요.
최적의 성능을 위해 각 프로젝트의 Runs를 약 10,000개로 제한하세요.
트레이닝 중에 머신과의 연결이 끊겼을 가능성이 큽니다. wandb sync [PATH_TO_RUN]를 실행하여 데이터를 복구하세요. run의 경로는 wandb 디렉토리 내에서 진행 중인 run의 Run ID와 일치하는 폴더입니다.
동일한 키 아래에 다양한 데이터 유형을 로그하면 데이터베이스에서 분리됩니다. 이로 인해 UI 드롭다운에 동일한 메트릭 이름이 여러 개 입력될 수 있습니다. 그룹화되는 데이터 유형은 number, string, bool, other (주로 배열), 그리고 Histogram이나 Image 같은 wandb 데이터 유형입니다. 이 문제를 방지하려면 키당 하나의 유형만 보내세요.메트릭 이름은 대소문자를 구분하지 않습니다. "My-Metric""my-metric"처럼 대소문자만 다른 이름의 사용을 피하세요.
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)
wandb.init이 호출되면 시스템은 원격 리포지토리 링크와 최신 커밋의 SHA를 포함한 git 정보를 자동으로 수집합니다. 이 정보는 run 페이지에 나타납니다. 이 정보를 보려면 스크립트를 실행할 때의 현재 작업 디렉토리가 git으로 관리되는 폴더 내에 있어야 합니다.사용자에게는 git 커밋과 실험 실행에 사용된 커맨드가 계속 보이지만, 외부 사용자에게는 숨겨집니다. 퍼블릭 프로젝트에서도 이러한 세부 정보는 프라이빗하게 유지됩니다.
기본적으로 wandb.init은 메트릭을 클라우드에 실시간으로 동기화하는 프로세스를 시작합니다. 오프라인 사용을 위해 두 개의 환경 변수를 설정하여 오프라인 모드를 활성화하고 나중에 동기화하세요.다음 환경 변수를 설정하세요:
  1. WANDB_API_KEY=$KEY, 여기서 $KEY사용자 설정에서 생성된 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
클라우드 동기화 터미널 출력
조직 설정 내에서 조직의 저장된 바이트, 추적된 바이트 및 추적된 시간을 확인할 수 있습니다:
  1. https://wandb.ai/account-settings/<organization-name>/settings에서 조직 설정으로 이동합니다.
  2. Billing 탭을 선택합니다.
  3. Usage this billing period 섹션 내에서 View usage 버튼을 선택합니다.
<>로 둘러싸인 값들을 조직 이름으로 바꾸어 입력하세요.
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)
log() 호출에서 step 값이 동일해야 메트릭이 동일한 스텝 아래에 기록되고 함께 샘플링됩니다. step 값은 각 호출에서 단조롭게 증가해야 합니다. 그렇지 않으면 step 값은 무시됩니다.
Teams에서 W&B 알림을 받으려면 다음 단계를 따르세요:
  • Teams 채널의 이메일 주소를 설정합니다. 알림을 받고 싶은 Teams 채널의 이메일 주소를 생성합니다.
  • W&B 알림 이메일을 Teams 채널의 이메일 주소로 포워딩합니다. W&B가 이메일로 알림을 보내도록 구성한 다음, 이 이메일들을 Teams 채널 이메일로 포워딩하세요.
**서비스 계정(service account)**은 팀과 프로젝트 전반에서 일반적인 작업들을 자동화할 수 있는 비인적(non-human) 또는 기계 ID를 나타냅니다. 서비스 계정은 CI/CD 파이프라인, 자동화된 트레이닝 작업 및 기타 기계 간(machine-to-machine) 워크플로우에 이상적입니다.서비스 계정의 주요 이점:
  • 라이선스 미소비: 서비스 계정은 사용자 시트나 라이선스를 소비하지 않습니다
  • 전용 API 키: 자동화된 워크플로우를 위한 보안 자격 증명
  • 사용자 귀속: 선택적으로 자동화된 Runs를 실제 사용자에게 귀속 가능
  • 엔터프라이즈급: 대규모 프로덕션 자동화를 위해 구축됨
  • 위임된 작업: 서비스 계정은 해당 계정을 생성한 사용자나 조직을 대신하여 작동합니다
무엇보다도 서비스 계정은 정기적인 재학습, 나이틀리 빌드(nightly builds) 등 wandb에 로그되는 자동화된 작업을 추적하는 데 유용합니다. 원하신다면 환경 변수 WANDB_USERNAME 또는 WANDB_USER_EMAIL을 사용하여 이러한 기계 실행 run 중 하나에 사용자 이름을 연결할 수 있습니다.모범 사례와 상세 설정 지침을 포함한 서비스 계정에 대한 종합적인 정보는 서비스 계정을 사용한 워크플로우 자동화를 참조하세요. 팀 문맥에서 서비스 계정이 어떻게 작동하는지에 대한 정보는 팀 서비스 계정 행동을 참조하세요.To create a new team-scoped service account and API key:
  1. In your team’s settings, click Service Accounts.
  2. Click New Team Service Account.
  3. Provide a name for the service account.
  4. Set Authentication Method to Generate API key (default). If you select Federated Identity, the service account cannot own API keys.
  5. Click Create.
  6. Find the service account you just created.
  7. Click the action menu (...), then click Create API key.
  8. Provide a name for the API key, then click Create.
  9. Copy the API key and store it securely.
  10. Click Done.
Built-in 서비스 계정 외에도, W&B는 SDK 및 CLI용 ID 페더레이션을 사용하는 External service accounts도 지원합니다. JSON Web Tokens (JWT)를 발행할 수 있는 ID 제공업체에서 관리되는 서비스 ID를 사용하여 W&B 작업을 자동화하려는 경우 외부 서비스 계정을 사용하세요.
커스텀 차트 에디터의 “Other settings” 페이지에서 이 옵션을 활성화하세요. 쿼리를 summaryTable 대신 historyTable을 사용하도록 변경하면 커스텀 차트 에디터에서 “Show step selector” 옵션이 제공됩니다. 이 기능에는 스텝 선택을 위한 슬라이더가 포함됩니다.
노트북에서 다음과 같은 로그 메시지를 억제하려면:
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
W&B는 일반적인 사용 조건에서 트레이닝 성능에 미치는 영향이 최소화되어 있습니다. 일반적인 사용이란 초당 1회 미만의 로깅 빈도와 단계당 수 메가바이트로 데이터를 제한하는 것을 의미합니다. W&B는 논블로킹(non-blocking) 함수 호출을 사용하는 별도의 프로세스에서 작동하므로, 일시적인 네트워크 장애나 간헐적인 디스크 읽기/쓰기 문제가 성능을 방해하지 않도록 보장합니다. 과도한 양의 데이터를 로깅하면 디스크 I/O 문제가 발생할 수 있습니다. 추가 문의 사항은 지원팀에 연락하세요.
W&B는 Auth0를 통해 멀티 테넌트 제품에 대한 Single Sign-On (SSO)을 지원합니다. SSO 인테그레이션은 Okta나 Azure AD와 같이 OIDC를 준수하는 모든 ID 제공업체와 호환됩니다. OIDC 제공업체를 구성하려면 다음 단계를 따르세요:
  • ID 제공업체에서 싱글 페이지 애플리케이션 (SPA)을 생성합니다.
  • grant_typeimplicit 플로우로 설정합니다.
  • 콜백 URI를 https://wandb.auth0.com/login/callback으로 설정합니다.
W&B를 위한 요구 사항설정을 완료한 후, 해당 애플리케이션의 Client IDIssuer URL을 고객 성공 매니저 (CSM)에게 전달하세요. W&B는 이 세부 정보를 사용하여 Auth0 연결을 구축하고 SSO를 활성화할 것입니다.
환경 변수 WANDB_SILENTtrue로 설정하세요.
os.environ["WANDB_SILENT"] = "true"
  • 스토리지 미터는 처리 지연으로 인해 Runs를 삭제한 즉시 업데이트되지 않습니다.
  • 백엔드 시스템이 사용량 변화를 정확하게 동기화하고 반영하는 데 시간이 필요합니다.
  • 스토리지 미터가 업데이트되지 않았다면 변경 사항이 처리될 때까지 기다려 주세요.
W&B는 장애를 관리하고 WANDB_MODE=offline 구성을 지원하기 위해 이벤트를 메모리에 큐잉하고 비동기적으로 디스크에 기록하여 로깅 후 동기화를 가능하게 합니다.터미널에서 로컬 run 디렉토리 경로를 확인하세요. 이 디렉토리에는 데이터 저장소 역할을 하는 .wandb 파일이 포함되어 있습니다. 이미지 로깅의 경우, W&B는 이미지를 클라우드 스토리지에 업로드하기 전에 media/images 하위 디렉토리에 저장합니다.
어떤 W&B Sweep 에이전트든 접근할 수 있도록 sweep_id를 게시하려면, 이러한 에이전트들이 sweep_id를 읽고 실행할 수 있는 메소드를 구현하세요.예를 들어, Amazon EC2 인스턴스를 시작하고 거기서 wandb agent를 실행하세요. SQS 큐를 사용하여 여러 EC2 인스턴스에 sweep_id를 브로드캐스트합니다. 그러면 각 인스턴스는 큐에서 sweep_id를 가져와 프로세스를 시작할 수 있습니다.
W&B 인증을 위해 다음 단계를 완료하세요: 기본 제공되는 Amazon SageMaker 에스티메이터를 사용하는 경우 requirements.txt 파일을 생성하세요. 인증 및 requirements.txt 파일 설정에 대한 자세한 내용은 SageMaker 인테그레이션 가이드를 참조하세요.
GitHub에서 전체 예시를 확인하고, 블로그에서 추가 통찰을 얻으세요.
SageMaker와 W&B를 사용하여 감성 분석기를 배포하는 방법은 Deploy Sentiment Analyzer Using SageMaker and W&B 튜토리얼을 확인하세요.
동일한 머신에서 두 개의 W&B 계정을 관리하려면, 두 API 키를 파일에 저장하세요. 비밀 키가 소스 제어에 체크인되지 않도록 보안을 유지하면서 키를 전환하기 위해 리포지토리에서 다음 코드를 사용하세요.
if os.path.exists("~/keys.json"):
    os.environ["WANDB_API_KEY"] = json.loads("~/keys.json")["work_account"]
메트릭은 기본적으로 10초마다 수집됩니다. 더 높은 해상도의 메트릭을 원하시면 contact@wandb.com으로 이메일을 보내주세요.
팀에 대한 추가 정보는 팀 섹션을 방문하세요.
테스트 목적으로 W&B를 무작동(NOOP) 상태로 구성하려면 wandb.init(mode="disabled")를 사용하거나 WANDB_MODE=disabled를 설정하세요.
wandb.init(mode="disabled")를 사용해도 W&B가 WANDB_CACHE_DIR에 Artifacts를 저장하는 것은 방지되지 않습니다.
데이터셋을 트레이닝 run과 연관시키려면 wandb.Run.config.update(...)에 SHA 또는 고유 식별자를 전달하세요. W&B는 wandb.Run.save()가 로컬 파일 이름과 함께 호출되지 않는 한 데이터를 저장하지 않습니다.
사용 가능한 역할과 권한에 대한 개요는 팀 역할 및 권한 페이지를 방문하세요.
결제 수단을 업데이트하려면 다음 단계를 따르세요:
  1. 프로필 페이지로 이동: 먼저 사용자 프로필 페이지로 이동합니다.
  2. 조직 선택: Account 선택기에서 관련 조직을 선택합니다.
  3. 결제 설정 접속: Account 아래에서 Billing을 선택합니다.
  4. 새 결제 수단 추가:
    • Add payment method를 클릭합니다.
    • 새 카드 세부 정보를 입력하고 이를 기본(primary) 결제 수단으로 만드는 옵션을 선택합니다.
참고: 결제를 관리하려면 조직의 결제 관리자(billing admin)로 지정되어 있어야 합니다.
Report에 CSV를 업로드하려면 wandb.Table 형식을 사용하세요. Python 스크립트에서 CSV를 로드하고 이를 wandb.Table 오브젝트로 로그하세요. 이 작업은 데이터를 Report에서 테이블로 렌더링합니다.
새 줄에서 /를 누르고 Image 옵션으로 스크롤한 다음, 이미지를 Report로 드래그 앤 드롭하세요.
리포트에 이미지 추가하기
W&B의 핵심 엔지니어와 지원 스태프는 사용자 권한이 있는 경우 디버깅 목적으로 로그된 값에 엑세스합니다. 모든 데이터 저장소는 유휴 데이터를 암호화하며, 감사 로그는 엑세스 기록을 남깁니다. W&B 직원으로부터 완벽한 데이터 보안을 원하신다면, 자신의 인프라 내에서 W&B 서버를 실행할 수 있는 Self-Managed 솔루션 라이선스를 받으세요.
wandb.ai의 W&B 멀티 테넌트 클라우드에 서비스 중단이 발생했는지 확인하려면 https://status.wandb.com에서 W&B 상태 페이지를 방문하세요.
트레이닝 스크립트에서 wandb.init()이 실행되면 API 호출이 서버에 run 오브젝트를 생성합니다. 메트릭을 스트리밍하고 수집하기 위해 새로운 프로세스가 시작되어 메인 프로세스가 정상적으로 기능할 수 있게 합니다. 스크립트가 로컬 파일에 기록하는 동안 별도의 프로세스가 시스템 메트릭을 포함한 데이터를 서버로 스트리밍합니다. 스트리밍을 끄려면 트레이닝 디렉토리에서 wandb off를 실행하거나 WANDB_MODE 환경 변수를 offline으로 설정하세요.
Sweep이 실행 중일 때:
  • Sweep이 사용하는 train.py 스크립트가 변경되어도, Sweep은 원래의 train.py를 계속 사용합니다.
  • train.py 스크립트가 참조하는 파일(예: helper.py 스크립트의 헬퍼 함수)이 변경되면, Sweep은 업데이트된 helper.py를 사용하기 시작합니다.
기본적으로 Artifacts는 artifacts/ 폴더에 다운로드됩니다. 위치를 변경하려면:
  • wandb.Artifact().download에 경로를 전달하세요:
    wandb.Artifact().download(root="<path_to_download>")
    
  • WANDB_ARTIFACT_DIR 환경 변수를 설정하세요:
    import os
    os.environ["WANDB_ARTIFACT_DIR"] = "<path_to_download>"
    
내보내기 제한으로 인해 전체 run 이력이 CSV로 내보내지거나 run.history API를 통해 제공되지 않을 수 있습니다. 전체 run 이력에 엑세스하려면 Parquet 형식을 사용하여 run history Artifact를 다운로드하세요:
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 2.7 이상 및 Python 3.6 이상을 지원합니다. 아키텍처는 다른 프로그래밍 언어와의 인테그레이션을 용이하게 하도록 설계되었습니다. 다른 언어 모니터링에 대해서는 contact@wandb.com으로 문의하세요.