커맨드라인에서 스윕을 초기화하고 스윕 에이전트를 시작하려면 YAML 파일에서 스윕 구성을 정의하십시오. Python 스크립트 또는 Jupyter notebook 내에서 스윕을 초기화하고 완전히 시작하려면 Python dictionary에서 스윕을 정의하십시오.
기본 구조
두 가지 스윕 구성 형식 옵션(YAML 및 Python dictionary) 모두 키-값 쌍과 중첩 구조를 활용합니다. 스윕 구성 내에서 최상위 키를 사용하여 스윕 이름(name
키), 검색할 파라미터(parameters
키), 파라미터 공간을 검색하는 방법(method
키) 등과 같은 스윕 검색의 품질을 정의합니다.
예를 들어, 다음 코드 조각은 YAML 파일과 Python dictionary 내에서 정의된 동일한 스윕 구성을 보여줍니다. 스윕 구성 내에는 program
, name
, method
, metric
및 parameters
의 5가지 최상위 키가 지정되어 있습니다.
- CLI
- Python script or Jupyter notebook
커맨드라인 (CLI)에서 스윕을 대화형으로 관리하려면 YAML 파일에서 스윕 구성을 정의하십시오.
config.yaml
parameters
키 내에는 learning_rate
, batch_size
, epoch
및 optimizer
키가 중첩되어 있습니다. 중첩된 각 키에 대해 하나 이상의 값, 분포, 확률 등을 제공할 수 있습니다. 자세한 내용은 스윕 구성 옵션의 파라미터 섹션을 참조하십시오.
이중 중첩 파라미터
스윕 구성은 중첩된 파라미터를 지원합니다. 중첩된 파라미터를 구분하려면 최상위 파라미터 이름 아래에 추가parameters
키를 사용하십시오. 스윕 구성은 다단계 중첩을 지원합니다.
베이지안 또는 랜덤 하이퍼파라미터 검색을 사용하는 경우 랜덤 변수에 대한 확률 분포를 지정하십시오. 각 하이퍼파라미터에 대해:
- 스윕 구성에 최상위
parameters
키를 만듭니다. parameters
키 내에서 다음을 중첩합니다.- 최적화하려는 하이퍼파라미터의 이름을 지정합니다.
distribution
키에 사용할 분포를 지정합니다. 하이퍼파라미터 이름 아래에distribution
키-값 쌍을 중첩합니다.- 탐색할 하나 이상의 값을 지정합니다. 값은 분포 키와 일치해야 합니다.
- (선택 사항) 최상위 파라미터 이름 아래에 추가 parameters 키를 사용하여 중첩된 파라미터를 구분합니다.
스윕 구성에 정의된 중첩된 파라미터는 W&B run 구성에 지정된 키를 덮어씁니다.예를 들어, W&B run이 초기화될 때 전달되는
train.py
Python 스크립트에서 다음 구성으로 W&B run을 초기화한다고 가정합니다 (1-2행 참조). 다음으로 sweep_configuration
이라는 dictionary에 스윕 구성을 정의합니다 (4-13행 참조). 그런 다음 스윕 구성 dictionary를 wandb.sweep
에 전달하여 스윕 구성을 초기화합니다 (16행 참조).train.py
nested_param.manual_key
에는 액세스할 수 없습니다. run.config
는 스윕 구성 dictionary에 정의된 키-값 쌍만 보유합니다.스윕 구성 템플릿
다음 템플릿은 파라미터를 구성하고 검색 제약 조건을 지정하는 방법을 보여줍니다.hyperparameter_name
을 하이퍼파라미터 이름으로 바꾸고 <>
로 묶인 모든 값을 바꿉니다.
config.yaml
스윕 구성 예제
- CLI
- Python script or Jupyter notebook
config.yaml
Bayes hyperband 예제
early_terminate
에 대한 최소 또는 최대 반복 횟수를 지정하는 방법을 보여줍니다.
- Maximum number of iterations
- Minimum number of iterations
이 예제의 대괄호는
[3, 3*eta, 3*eta*eta, 3*eta*eta*eta]
이며, 이는 [3, 9, 27, 81]
과 같습니다.커맨드 예제
- Unix
- Windows
- Set Python interpreter
- Add extra parameters
- Omit arguments
- Hydra
{$interpreter}
매크로를 제거하고 값을 명시적으로 제공하여 Python 인터프리터를 하드 코딩하십시오. 예를 들어, 다음 코드 조각은 이를 수행하는 방법을 보여줍니다.