wandb.Run.config 속성을 사용하면 실험을 쉽게 분석하고, 나중에 작업을 재현할 수 있습니다. W&B App에서 설정 값으로 그룹화할 수 있고, 여러 W&B run의 설정을 비교하며, 각 트레이닝 설정이 출력에 어떤 영향을 미치는지 평가할 수 있습니다. config 속성은 여러 사전과 유사한 객체를 조합해 만들 수 있는, 사전과 유사한 객체입니다.
loss와 accuracy 같은 출력 메트릭이나 종속 변수를 저장하려면 wandb.Run.log()를 wandb.Run.config 대신 사용하세요.
설정은 일반적으로 트레이닝 스크립트의 시작 부분에서 정의합니다. 하지만 머신러닝 워크플로는 다양하기 때문에, 트레이닝 스크립트의 시작 부분에서 설정을 정의해야만 하는 것은 아닙니다.config 변수 이름에서는 마침표(.) 대신 대시(-) 또는 밑줄(_)을 사용하세요.스크립트에서 루트 레벨 아래에 있는 wandb.Run.config 키에 접근하는 경우에는, 속성 접근 구문 config.key.value 대신 사전 접근 구문 ["key"]["value"]를 사용하세요.다음 섹션에서는 실험 설정을 정의하는 여러 가지 일반적인 시나리오를 설명합니다.
스크립트의 시작 부분에서 wandb.init() API를 호출할 때 사전을 전달하여, 백그라운드 프로세스를 생성해 데이터를 W&B Run에 동기화하고 로깅하도록 합니다.다음 코드 스니펫은 설정 값을 가진 Python 사전을 정의하는 방법과, W&B Run을 초기화할 때 그 사전을 인수로 전달하는 방법을 보여 줍니다.
잘못된 코드 신고
복사
AI에게 묻기
import wandb# config 사전 객체 정의config = { "hidden_layer_sizes": [32, 64], "kernel_sizes": [3], "activation": "ReLU", "pool_sizes": [2], "dropout": 0.5, "num_classes": 10,}# W&B 초기화 시 config 사전 전달with wandb.init(project="config_example", config=config) as run: ...
중첩된 사전을 config로 전달하면, W&B는 점(.)을 사용해 키 이름을 평탄화합니다.Python에서 다른 사전에 접근하듯이 이 사전의 값에도 접근할 수 있습니다:
잘못된 코드 신고
복사
AI에게 묻기
# 키를 인덱스 값으로 사용하여 값에 접근hidden_layer_sizes = run.config["hidden_layer_sizes"]kernel_sizes = run.config["kernel_sizes"]activation = run.config["activation"]# Python 사전 get() 메서드hidden_layer_sizes = run.config.get("hidden_layer_sizes")kernel_sizes = run.config.get("kernel_sizes")activation = run.config.get("activation")
Developer Guide 전체와 예제에서 설정값을 별도의 변수에 복사합니다. 이 단계는 선택 사항이며, 가독성을 높이기 위한 것입니다.
argparse 객체를 사용해 설정을 지정할 수 있습니다. argparse는 argument parser의 줄임말로, Python 3.2 이상에서 사용할 수 있는 표준 라이브러리 모듈이며, 커맨드 라인 인자의 유연함과 강력함을 손쉽게 활용하는 스크립트를 작성할 수 있게 해 줍니다.이는 커맨드 라인에서 실행되는 스크립트의 결과를 추적하는 데 유용합니다.다음 Python 스크립트는 parser 객체를 정의해 실험 설정을 정의하고 적용하는 방법을 보여 줍니다. train_one_epoch와 evaluate_one_epoch 함수는 이 데모를 위해 트레이닝 루프를 시뮬레이션하는 목적으로 제공됩니다:
W&B Public API를 사용하여 완료된 run의 설정을 업데이트합니다.API에 entity, 프로젝트 이름, 그리고 run ID를 제공해야 합니다. 이러한 정보는 Run 객체 또는 W&B App에서 확인할 수 있습니다:
잘못된 코드 신고
복사
AI에게 묻기
with wandb.init() as run: ...# 현재 스크립트 또는 노트북에서 run이 시작된 경우 Run 객체에서 다음 값을 찾거나,# W&B App UI에서 복사할 수 있습니다.username = run.entityproject = run.projectrun_id = run.id# api.run()은 wandb.init()과 다른 타입의 객체를 반환한다는 점에 유의하세요.api = wandb.Api()api_run = api.run(f"{username}/{project}/{run_id}")api_run.config["bar"] = 32api_run.update()
run 스크립트와 같은 디렉터리에 config-defaults.yaml이라는 파일을 두면, run이 파일에 정의된 키-값 쌍을 자동으로 불러와 wandb.Run.config에 전달합니다.다음 코드 스니펫은 config-defaults.yaml YAML 파일의 예시를 보여 줍니다:
잘못된 코드 신고
복사
AI에게 묻기
batch_size: desc: 각 미니배치의 크기 value: 32
wandb.init의 config 인수에 변경된 값을 설정하면 config-defaults.yaml에서 자동으로 로드되는 기본값을 재정의할 수 있습니다. 예를 들어:
잘못된 코드 신고
복사
AI에게 묻기
import wandb# 사용자 정의 값을 전달하여 config-defaults.yaml 덮어쓰기with wandb.init(config={"epochs": 200, "batch_size": 64}) as run: ...
config-defaults.yaml이 아닌 다른 설정 파일을 로드하려면 --configs 커맨드라인 인자를 사용하고 파일 경로를 지정하세요.