인테그레이션 설계
라이브러리에 W&B를 추가하기 전에 다음 사항을 결정하세요.- wandb를 필수 종속성으로 할지 선택 종속성으로 할지
- 사용자가 W&B 데이터를 저장하거나 업로드하지 않고도 라이브러리를 실행할 수 있도록 할지
- 라이브러리에서 로깅할 설정 값, 메트릭, 아티팩트
- W&B Sweeps를 사용한 하이퍼파라미터 튜닝을 지원할지
- 모델 및 데이터셋 같은 아티팩트를 조직의 W&B 레지스트리를 통해 공유할지
- 라이브러리에서 분산 트레이닝과 여러 프로세스를 처리하는 방식
W&B 설치 방식 결정
라이브러리와 함께 W&B를 자동으로 설치할지, 선택 기능으로 제공할지 결정하세요.W&B를 의존성으로 추가
W&B가 라이브러리의 핵심인 경우wandb를 의존성에 추가하세요.
requirements.txt 파일의 경우:
requirements.txt
pyproject.toml 파일의 경우:
pyproject.toml
W&B를 선택 종속성으로 지정
W&B가 선택적 특성인 경우wandb 없이도 라이브러리를 설치할 수 있게 하세요.
pyproject.toml에서 W&B를 선택 종속성으로 선언합니다.
pyproject.toml
사용자 인증
wandb 클라이언트에서 이를 사용할 수 있게 해야 합니다.
W&B는 CLI, 환경 변수 및 wandb.login()을 통한 인증을 지원합니다.
API 키 생성
더 간편하게 하려면 User Settings로 이동해 API 키를 생성하세요. API 키는 즉시 복사해 비밀번호 관리자와 같은 안전한 위치에 저장하세요.
명령줄에서 인증하기
터미널에서 다음을 실행하세요:WANDB_API_KEY 환경 변수를 설정하세요:
Python에서 인증
대화형 Python 환경 또는 노트북에서 다음을 호출하세요:wandb.login()을 자동으로 호출하면 비대화형 워크플로가 중단될 수 있으므로 피하세요.
W&B 로깅을 선택적으로 사용
W&B에서 run 데이터를 저장하거나 업로드할지 선택합니다.
run 데이터를 저장하지 않으려면
disabled를 사용합니다. 나중에 업로드할 데이터를 로컬에 저장하려면 offline를 사용합니다.
disabled 모드 사용
wandb.init()에 mode="disabled"를 전달하세요:
WANDB_MODE를 설정합니다:
offline 모드 사용
wandb.init()에 mode="offline"을 전달하세요:
WANDB_MODE를 설정하세요:
wandb.init()를 호출하기 전에 환경 변수를 설정하세요:
run 초기화
인증 후 run을 초기화하여 라이브러리의 메트릭, 설정 값, 아티팩트를 로깅합니다.wandb.init()을 호출하고 프로젝트와 팀 entity를 지정합니다. 프로젝트를 생략하면 W&B는 기본 "uncategorized" 프로젝트에 run을 저장합니다.
트레이닝 루프를 wandb.init() 컨텍스트 관리자 안에서 사용합니다. 블록을 벗어나면 프로세스가 종료되기 전에 W&B가 run을 종료하고 보류 중인 데이터를 처리합니다.
예를 들어, 라이브러리에 다음 트레이닝 루프가 있다고 가정합니다.
Python
wandb.init()에 전달한 다음, wandb.Run.log()로 메트릭을 로깅하세요:
Python
설정 및 메트릭 로깅
설정 값과 메트릭을 W&B에 로깅하면 본인과 팀 구성원이 실험을 비교, 필터링, 그룹화, 재현할 수 있습니다.설정 값 기록
하이퍼파라미터와 기타 메타데이터를 기록하려면 설정 딕셔너리를wandb.init()에 전달하세요.
설명적인 키와 JSON 직렬화 가능한 값을 사용하세요:
wandb.init()에 전달하세요:
wandb.Run.config.update()를 사용해 추가하세요:
메트릭 로깅
트레이닝 중에 손실이나 정확도 등의 메트릭을 로깅합니다. 각 키는 메트릭 이름이고 각 값은 메트릭 값인 딕셔너리를 만듭니다. 이 딕셔너리를wandb.Run.log()에 전달합니다.
다음 코드 스니펫은 트레이닝 및 검증 메트릭을 W&B에 로깅합니다:
Python
train/, val/과 같은 접두사를 사용하여 관련 메트릭을 그룹화하세요.
지원되는 데이터 유형 로깅, 자동 추적되는 데이터 및 권장 사항에 대한 자세한 내용은 메트릭 및 데이터 로깅을 참조하세요.
모델과 데이터셋을 추적하려면 아티팩트로 모델 및 데이터셋 추적 섹션을 참조하세요.
맞춤형 로깅 축 정의
기본적으로 W&B는 로깅된 메트릭을 자동으로 증가하는 step을 기준으로 플롯합니다.wandb.Run.log()를 호출할 때마다 step이 증가합니다.
wandb.Run.define_metric()을 사용하면 에포크나 전역 step과 같은 다른 값을 기준으로 메트릭을 플롯할 수 있습니다.
다음 예시에서는 validation_loss의 x축으로 x_axis_squared를 정의합니다. 각 루프 반복에서 x_axis_squared는 인덱스 i의 제곱이며, validation_loss는 무작위로 생성된 값입니다:
Python
아티팩트를 사용해 모델과 데이터셋 추적하기
메트릭 외에도, 본인과 팀 구성원이 Runs를 재현하고 비교할 수 있도록 라이브러리가 생성하거나 사용하는 모델과 데이터셋을 저장할 수 있습니다. W&B Artifacts를 사용해 라이브러리가 생성하거나 사용하는 모델, 데이터셋 및 기타 파일을 버전 관리하세요. 아티팩트 지원을 추가하기 전에 다음을 결정하세요:- 로깅할 파일
- 아티팩트 로깅을 선택 사항으로 제공할지 여부
- 체크포인트를 로깅할 빈도
- 아티팩트와 별칭의 이름을 지정하는 방법
- 어떤 아티팩트가 run 입력 및 출력을 나타내는지
모델 체크포인트 로깅
모델 체크포인트를 아티팩트로 로깅하면 학습된 가중치를 복구하고, 버전을 관리하고, 공유할 수 있습니다. 각 체크포인트를 해당 원본 run과 연결하려면 아티팩트 이름에 run ID를 포함하세요. 다음 예시는 10 에포크마다 체크포인트를 로깅합니다. run ID가 포함된 이름으로 아티팩트를 만들고, 로컬 디렉터리의 모델 가중치를 추가한 다음, 맞춤형 별칭과 함께 아티팩트를 로깅합니다.Python
run 입력 추적
데이터셋이나 모델 체크포인트처럼 run에서 아티팩트를 사용할 때는wandb.Run.use_artifact()를 사용하세요. W&B는 해당 아티팩트를 run의 입력으로 기록합니다.
아티팩트 이름과 선택적 별칭을 지정하여 해당 아티팩트의 특정 버전을 참조하세요. 아티팩트 이름은 artifact_name:version 또는 artifact_name:alias 형식입니다.
Python
run 출력 추적
wandb.Run.log_artifact()를 사용하여 아티팩트를 run의 출력으로 로깅하세요.
wandb.Artifact()로 아티팩트를 생성합니다.- 아티팩트에 하나 이상의 파일을 추가합니다.
wandb.Run.log_artifact()로 아티팩트를 로깅합니다.
아티팩트 다운로드
W&B Public API를 사용하여 run을 생성하거나 run 입력 관계를 기록하지 않고 아티팩트를 다운로드할 수 있습니다.아티팩트를 W&B 레지스트리에 연결하기
W&B Registry를 사용하여 여러 팀에서 아티팩트 버전을 공유하고 관리하세요. 아티팩트 버전을 연결하기 전에 다음을 결정하세요.대상 레지스트리가 이미 존재해야 합니다.
하이퍼파라미터 튜닝
라이브러리에서 하이퍼파라미터 튜닝을 지원하는 경우 W&B Sweeps를 통합하여 그리드, 무작위 또는 베이지안 탐색을 실행하세요. 자세한 내용은 Sweeps를 참조하세요.분산 트레이닝 지원
라이브러리가 여러 프로세스 또는 머신을 지원하는 경우, 어떤 프로세스에서 run을 생성하고 데이터를 로깅할지 정의하세요. 일반적인 방법은 다음과 같습니다:- 메인 프로세스에서만 로깅합니다. 이 방법은 중복된 메트릭과 아티팩트를 방지합니다.
- 각 프로세스에 대해 하나의 run을 생성하고 공유
group값으로 run을 그룹화합니다.