명령줄에서 스윕을 초기화하고 스윕 에이전트를 시작하려면 YAML 파일에 스윕 설정을 정의하세요. Python 스크립트 또는 노트북 안에서 스윕 초기화와 시작을 모두 수행한다면 Python 딕셔너리로 스윕을 정의하세요.
기본 구조
스윕 설정은 YAML 또는 Python 딕셔너리로 정의하며, 키-값 쌍과 중첩 구조로 구성됩니다. 스윕 설정의 최상위 키를 사용하여 스윕name, 검색할 parameters, 검색 method 등 스윕 검색의 특성을 정의하세요.
예를 들어, 다음 코드 스니펫은 동일한 스윕 설정을 YAML 파일과 Python 딕셔너리로 각각 정의한 것입니다. 이 스윕 설정에는 program, name, method, metric, parameters의 다섯 가지 최상위 키가 지정되어 있습니다.
- CLI
- Python script or notebook
명령줄에서 대화형으로 스윕을 관리하려면 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 딕셔너리 두 가지 형식으로 보여 줍니다.
- CLI
- Python script or notebook
스윕 설정 템플릿
새 스윕 설정을 작성할 때 이 템플릿을 기본 틀로 활용하세요. 이 템플릿에는 가장 일반적인 매개변수 패턴과 조기 종료 패턴이 나와 있습니다.hyperparameter_name을 사용할 하이퍼파라미터 이름으로 바꾸고, 대괄호로 묶인 값도 모두 알맞게 바꾸세요.
config.yaml
!!float 연산자를 추가하세요. 예: min: !!float 1e-5. 자세한 내용은 매크로 및 맞춤형 명령 인수 예시를 참조하세요.
스윕 설정 예시
다음 스윕 설정 예시는 일반적인 시나리오를 보여 줍니다. 자신의 트레이닝 스크립트에 맞게 스윕을 조정할 때 참고하세요.- CLI
- Python script or notebook
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
run.py에서 argparse 모듈을 사용해 이 명령줄 인수를 파싱할 수 있습니다.
run.py
Boolean 인수
스윕에서 명령 인수로 boolean 플래그를 전달하는 경우,argparse는 기본적으로 boolean 문자열을 해석하지 않으므로 트레이닝 스크립트에서 이를 별도로 처리해야 합니다.
argparse 모듈은 기본적으로 boolean 인수를 지원하지 않습니다. boolean 인수를 정의하려면 action 매개변수를 사용하거나, boolean 값을 나타내는 문자열을 boolean 유형으로 변환하는 맞춤형 함수를 사용하세요.
예를 들어, 다음 코드 스니펫으로 boolean 인수를 정의할 수 있습니다. ArgumentParser에 store_true 또는 store_false를 인수로 전달하세요.
str2bool 함수를 정의합니다.