Skip to main content
이 가이드는 하이퍼파라미터 검색 최적화를 위해 Python 트레이닝 스크립트 또는 노트북에 W&B를 통합하는 방법을 권장합니다. 이러한 권장 사항을 따르면 W&B Sweeps를 사용하여 하이퍼파라미터 값을 탐색하고, 트레이닝 및 검증 메트릭을 로깅하고, 우수한 모델 성능을 내는 설정을 파악할 수 있습니다. 이 가이드는 이미 Python 트레이닝 스크립트가 있고 하이퍼파라미터 스윕 지원을 추가하려는 머신 러닝 실무자를 대상으로 합니다. 다음 섹션에서는 트레이닝 스크립트 예시를 살펴본 후, W&B Sweeps와 함께 작동하도록 수정하는 방법을 설명합니다.

원본 트레이닝 스크립트

모델을 트레이닝하는 Python 스크립트가 있다고 가정해 보겠습니다(아래 코드 참조). 목표는 검증 정확도(val_acc)를 최대화하는 하이퍼파라미터를 찾는 것입니다. Python 스크립트에는 train_one_epoch와 evaluate_one_epoch라는 두 함수를 정의합니다. train_one_epoch 함수는 한 에포크 동안의 트레이닝을 시뮬레이션하고 트레이닝 정확도와 손실을 반환합니다. evaluate_one_epoch 함수는 검증 데이터셋으로 모델을 평가하는 과정을 시뮬레이션하고 검증 정확도와 손실을 반환합니다. 학습률, 배치 크기, 에포크 수 등의 하이퍼파라미터 값을 담은 config라는 설정 딕셔너리를 정의합니다. 이 설정 딕셔너리의 값에 따라 트레이닝 과정이 제어됩니다. 다음으로, 일반적인 트레이닝 루프를 흉내 내는 main 함수를 정의합니다. 스크립트는 에포크마다 트레이닝 데이터셋과 검증 데이터셋의 정확도와 손실을 계산합니다.
이 코드는 모의 트레이닝 스크립트입니다. 실제로 모델을 트레이닝하지는 않으며, 무작위 정확도 및 손실 값을 생성하여 트레이닝 과정을 시뮬레이션합니다. 이 코드는 트레이닝 스크립트에 W&B를 통합하는 방법을 보여주기 위한 것입니다.
다음 섹션에서는 Python 스크립트에 W&B를 추가하여 트레이닝 중 하이퍼파라미터와 메트릭을 추적하는 방법을 보여줍니다. W&B를 사용하여 검증 정확도(val_acc)를 최대화하는 최적의 하이퍼파라미터를 찾고자 합니다.

트레이닝 스크립트에 W&B 추가하기

이 섹션에서는 스윕 에이전트가 각 run에 하이퍼파라미터 값을 전달하고 W&B가 결과 메트릭을 기록할 수 있도록 원본 트레이닝 스크립트를 수정하는 방법을 설명합니다. Python 스크립트나 노트북에 W&B를 통합하는 방법은 스윕을 관리하는 방식에 따라 달라집니다. W&B Python SDK를 사용하여 스윕을 시작, 중지, 관리하려면 Python script or notebook 탭의 지침을 따르세요. 대신 W&B CLI를 사용하려면 CLI 탭의 지침을 따르세요.
스윕 설정이 포함된 YAML 설정 파일을 만드세요. 설정 파일에는 스윕에서 탐색할 하이퍼파라미터가 포함됩니다. 다음 예시에서 스윕은 각 run마다 batch_size, epochs, lr 하이퍼파라미터를 변경합니다.
자세한 내용은 스윕 설정 정의를 참조하세요.YAML 파일의 program 키에 Python 스크립트의 이름을 지정해야 합니다.다음으로, 코드 예제에 다음 내용을 추가하세요.
  1. W&B Python SDK(wandb)와 PyYAML(yaml)을 임포트하세요. PyYAML은 YAML 설정 파일을 읽어 들이는 데 사용합니다.
  2. 설정 파일을 읽어 들이세요.
  3. wandb.init()을 사용하여 데이터를 동기화하고 W&B Run으로 로깅하는 백그라운드 프로세스를 시작하세요. config 객체를 config 매개변수에 전달하세요.
  4. 하드코딩된 값 대신 wandb.Run.config에서 하이퍼파라미터 값을 가져와 정의하세요.
  5. wandb.Run.log()를 사용하여 최적화하려는 메트릭을 로깅하세요. 설정에 정의된 메트릭은 반드시 로깅해야 합니다. 이 예제에서는 설정 딕셔너리(sweep_configuration)에서 val_acc 값을 최대화하도록 스윕을 정의합니다.
트레이닝 스크립트를 업데이트한 후 CLI에서 스윕을 초기화하고 시작하세요:
  1. wandb sweep 명령으로 스윕을 초기화하세요. YAML 파일 이름을 지정하세요. 선택적으로 --project 플래그에 프로젝트 이름을 설정하세요:
    이 명령은 스윕 ID를 반환합니다. 자세한 내용은 스윕을 초기화를 참조하세요.
  2. 스윕 ID를 복사하여 다음 명령의 [SWEEP-ID]를 바꾸고, wandb agent 명령으로 스윕 작업을 시작하세요. [YOUR-ENTITY]를 W&B entity 이름으로 바꾸세요. 선택적으로 --count를 설정하여 에이전트가 시도할 run 수를 제한하세요(이 예제에서는 5로 설정합니다):
스윕 에이전트는 YAML 설정에 있는 하이퍼파라미터 값을 매번 다른 조합으로 사용하여 트레이닝 스크립트를 반복 실행하고, 결과를 W&B에 로깅합니다. 자세한 내용은 스윕 작업 시작을 참조하세요.
스윕에서 W&B에 메트릭 로깅하기스윕 설정에서 정의하고 최적화 대상으로 지정한 메트릭은 wandb.Run.log()로도 로깅해야 합니다. 예를 들어 스윕 설정에서 최적화할 메트릭을 val_acc로 정의했다면, W&B에도 val_acc를 로깅해야 합니다. 메트릭을 로깅하지 않으면 W&B가 최적화를 수행할 수 없습니다.
다음은 W&B에 메트릭을 로깅하는 올바르지 않은 예시입니다. 스윕 설정은 val_acc를 최적화하지만, 코드는 validation 키 아래의 중첩 딕셔너리 안에 val_acc를 로깅합니다. 메트릭은 중첩 딕셔너리 안이 아니라 직접 로깅해야 합니다.
마지막 수정일 2026년 9월 30일