인테그레이션 설계
라이브러리에 W&B를 추가하기 전에 다음 사항을 결정하세요:- wandb를 필수 의존성으로 할지 선택 종속성으로 할지.
- 사용자가 W&B 데이터를 저장하거나 업로드하지 않고 라이브러리를 실행할 수 있도록 할지.
- 라이브러리에서 어떤 설정 값, 메트릭, 아티팩트를 로깅할지.
- W&B Sweeps를 통한 하이퍼파라미터 튜닝을 지원할지.
- 조직의 레지스트리를 통해 모델 및 데이터셋과 같은 아티팩트를 공유할지.
- 라이브러리에서 분산 트레이닝과 여러 프로세스를 어떻게 처리할지.
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
사용자 인증
W&B는 API 키를 사용하여 사용자와 머신을 인증합니다. 라이브러리에서 run을 로깅하려면 먼저 API 키를 생성하고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과 같은 다른 값을 기준으로 메트릭을 표시하세요.
다음 예시는 x_axis_squared를 validation_loss의 x축으로 정의합니다. 루프가 반복될 때마다 x_axis_squared는 인덱스 i의 제곱이고, validation_loss는 무작위로 생성된 값입니다:
Python
아티팩트로 모델과 데이터셋 추적하기
메트릭 외에도 라이브러리가 생성하거나 사용하는 모델과 데이터셋을 보존하여 사용자와 팀 구성원이 run을 재현하고 비교할 수 있습니다. 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 출력 추적
run의 출력으로 아티팩트를 로깅하려면wandb.Run.log_artifact()를 사용하세요.
wandb.Artifact()로 아티팩트를 생성하세요.- 아티팩트에 하나 이상의 파일을 추가하세요.
wandb.Run.log_artifact()로 아티팩트를 로깅하세요.
아티팩트 다운로드
W&B Public API를 사용하면 run을 생성하거나 run 입력 관계를 기록하지 않고 아티팩트를 다운로드할 수 있습니다.아티팩트를 레지스트리에 연결하기
레지스트리를 사용하여 팀 간에 아티팩트 버전을 공유하고 관리하세요. 아티팩트 버전을 연결하기 전에 다음을 결정하세요.대상 레지스트리가 미리 생성되어 있어야 합니다.
하이퍼파라미터 튜닝
라이브러리가 하이퍼파라미터 튜닝을 지원한다면 W&B Sweeps를 통합하여 그리드, 무작위 또는 베이지안 탐색을 실행하세요. 자세한 내용은 Sweeps를 참조하세요.분산 트레이닝 지원
라이브러리가 여러 프로세스나 머신을 지원하는 경우, run을 생성하고 데이터를 로깅할 프로세스를 정의하세요. 일반적인 접근 방식은 다음과 같습니다:- 메인 프로세스에서만 로깅합니다. 이 방식은 메트릭과 아티팩트의 중복을 방지합니다.
- 각 프로세스에 대해 하나의 run을 생성하고 공통
group값으로 run을 그룹화합니다.