Skip to main content
스윕은 하이퍼파라미터 값을 탐색하는 전략과 그 값을 평가하는 코드를 결합한 것입니다. 전략은 모든 옵션을 하나씩 사용해 보는 단순한 방식일 수도 있고, Bayesian Optimization and Hyperband(BOHB)처럼 복잡한 방식일 수도 있습니다. 이 가이드에서는 검색할 하이퍼파라미터, 사용할 검색 전략, 각 run의 평가 방법을 지정하는 스윕 설정을 정의하는 방법을 설명합니다. 새 스윕을 설정하거나 기존 설정을 다른 검색 방법이나 매개변수 공간에 맞게 조정할 때 이 가이드를 참고하세요. 스윕 설정은 Python 딕셔너리 또는 YAML 파일로 정의합니다. 어떤 방식을 사용할지는 스윕을 관리하려는 방식에 따라 달라집니다.
명령줄에서 스윕을 초기화하고 스윕 에이전트를 시작하려면 YAML 파일에 스윕 설정을 정의하세요. Python 스크립트 또는 노트북 안에서 스윕 초기화와 시작을 모두 수행한다면 Python 딕셔너리로 스윕을 정의하세요.
다음 섹션에서는 스윕 설정의 형식을 작성하는 방법을 설명합니다. 최상위 스윕 설정 키의 전체 목록은 Sweep configuration options을 참조하세요.

기본 구조

스윕 설정은 YAML 또는 Python 딕셔너리로 정의하며, 키-값 쌍과 중첩 구조로 구성됩니다. 스윕 설정의 최상위 키를 사용하여 스윕 name, 검색할 parameters, 검색 method 등 스윕 검색의 특성을 정의하세요. 예를 들어, 다음 코드 스니펫은 동일한 스윕 설정을 YAML 파일과 Python 딕셔너리로 각각 정의한 것입니다. 이 스윕 설정에는 program, name, method, metric, parameters의 다섯 가지 최상위 키가 지정되어 있습니다.
명령줄에서 대화형으로 스윕을 관리하려면 YAML 파일에 스윕 설정을 정의하세요.
config.yaml
최상위 parameters 키 아래에는 learning_rate, batch_size, epochs, optimizer 키가 중첩되어 있습니다. 각 중첩 키에는 하나 이상의 값, 분포, 확률 등을 지정할 수 있습니다. 자세한 내용은 Sweep configuration options의 parameters 섹션을 참조하세요.

이중 중첩 매개변수

관련된 하이퍼파라미터를 하나로 묶으려는 경우나 트레이닝 코드가 중첩된 설정 구조를 요구하는 경우 중첩 매개변수를 사용하세요. 중첩 매개변수를 정의하려면 최상위 매개변수 이름 아래에 parameters 키를 하나 더 추가하세요. 다음 예시는 nested_category_1, nested_category_2, nested_category_3라는 중첩 매개변수가 포함된 스윕 설정으로, 각 중첩 매개변수에는 momentum과 weight_decay 매개변수가 추가로 들어 있습니다. 다음 코드 예시에서는 같은 설정을 YAML 파일과 Python 딕셔너리 두 가지 형식으로 보여 줍니다.
스윕 설정에 정의된 중첩 매개변수는 W&B run 설정에 지정된 키를 덮어씁니다.예를 들어, 중첩된 기본값으로 run을 초기화하는 train.py 스크립트가 있다고 가정해 보겠습니다.
스윕 설정에서는 최상위 "parameters" 키 아래에 중첩 매개변수를 정의합니다.
스윕 run이 실행되는 동안 run.config["nested_param"]에는 스윕 설정에 정의된 하위 트리(learning_rate 및 double_nested_param)가 반영됩니다. wandb.init(config=...)에 정의된 manual_key는 포함되지 않습니다.

스윕 설정 템플릿

새 스윕 설정을 작성할 때 이 템플릿을 기본 틀로 활용하세요. 이 템플릿에는 가장 일반적인 매개변수 패턴과 조기 종료 패턴이 나와 있습니다. hyperparameter_name을 사용할 하이퍼파라미터 이름으로 바꾸고, 대괄호로 묶인 값도 모두 알맞게 바꾸세요.
config.yaml
과학적 표기법으로 숫자 값을 표현하려면 값을 부동 소수점 숫자로 변환하는 YAML !!float 연산자를 추가하세요. 예: min: !!float 1e-5. 자세한 내용은 매크로 및 맞춤형 명령 인수 예시를 참조하세요.

스윕 설정 예시

다음 스윕 설정 예시는 일반적인 시나리오를 보여 줍니다. 자신의 트레이닝 스크립트에 맞게 스윕을 조정할 때 참고하세요.
config.yaml

Bayes hyperband 예시

다음 예시는 베이지안 탐색과 Hyperband 조기 종료를 결합해 성능이 낮은 run을 조기에 중단하고, 더 유망한 설정에 리소스를 확보해 둡니다.
다음 탭에서는 early_terminate에 최소 또는 최대 반복 횟수를 지정하는 방법을 보여줍니다.
이 예제의 브래킷은 [3, 3*eta, 3*eta*eta, 3*eta*eta*eta], 즉 [3, 9, 27, 81]입니다.

매크로 및 맞춤형 명령 인수 예제

이 예제에서는 기본 호출보다 더 세밀한 제어가 필요할 때 스윕 에이전트가 각 trial에서 실행할 명령을 구성하는 방법을 보여 줍니다. 더 복잡한 명령줄 인수가 필요하다면 매크로를 사용하여 환경 변수, Python 인터프리터, 추가 인수를 전달할 수 있습니다. W&B는 사전 정의된 매크로를 지원하며, 스윕 설정에서 지정할 수 있는 맞춤형 명령줄 인수도 지원합니다. 예를 들어 다음 스윕 설정(sweep.yaml)은 Python 스크립트(run.py)를 실행하는 명령을 정의합니다. 스윕이 실행되면 ${env}, ${interpreter}, ${program} 매크로가 적절한 값으로 대체됩니다. --batch_size=${batch_size}, --test=True, --optimizer=${optimizer} 인수는 맞춤형 매크로를 사용하여 스윕 설정에 정의된 batch_size, test, optimizer 매개변수의 값을 전달합니다.
sweep.yaml
그러면 해당 Python 스크립트 run.py에서 argparse 모듈을 사용해 이 명령줄 인수를 파싱할 수 있습니다.
run.py
스윕 설정에서 사용할 수 있는 사전 정의 매크로 목록은 Sweep configuration options의 Command macros 섹션을 참조하세요.

Boolean 인수

스윕에서 명령 인수로 boolean 플래그를 전달하는 경우, argparse는 기본적으로 boolean 문자열을 해석하지 않으므로 트레이닝 스크립트에서 이를 별도로 처리해야 합니다. argparse 모듈은 기본적으로 boolean 인수를 지원하지 않습니다. boolean 인수를 정의하려면 action 매개변수를 사용하거나, boolean 값을 나타내는 문자열을 boolean 유형으로 변환하는 맞춤형 함수를 사용하세요. 예를 들어, 다음 코드 스니펫으로 boolean 인수를 정의할 수 있습니다. ArgumentParser에 store_true 또는 store_false를 인수로 전달하세요.
boolean 값의 문자열 표현을 boolean 유형으로 변환하는 맞춤형 함수를 직접 정의할 수도 있습니다. 예를 들어, 다음 코드 스니펫은 문자열을 boolean 값으로 변환하는 str2bool 함수를 정의합니다.
마지막 수정일 2026년 9월 30일