Create sweeps with W&B Launch
5 minute read
W&B Launch를 사용하여 하이퍼파라미터 튜닝 작업( Sweeps)을 생성합니다. Launch에서 Sweeps를 사용하면 스윕 스케줄러가 스윕할 지정된 하이퍼파라미터와 함께 Launch Queue로 푸시됩니다. 스윕 스케줄러는 에이전트가 선택함에 따라 시작되어 선택한 하이퍼파라미터로 스윕 run을 동일한 Queue로 시작합니다. 이는 스윕이 완료되거나 중지될 때까지 계속됩니다.
기본 W&B 스윕 스케줄링 엔진을 사용하거나 자체 사용자 정의 스케줄러를 구현할 수 있습니다.
- 표준 스윕 스케줄러: W&B Sweeps를 제어하는 기본 W&B 스윕 스케줄링 엔진을 사용합니다. 친숙한
bayes
,grid
및random
메소드를 사용할 수 있습니다. - 사용자 정의 스윕 스케줄러: 스윕 스케줄러가 작업으로 실행되도록 구성합니다. 이 옵션을 사용하면 완벽하게 사용자 정의할 수 있습니다. 표준 스윕 스케줄러를 확장하여 더 많은 로깅을 포함하는 방법의 예는 아래 섹션에서 찾을 수 있습니다.
W&B 표준 스케줄러로 스윕 생성
Launch로 W&B Sweeps를 생성합니다. W&B App을 사용하여 대화식으로 또는 W&B CLI를 사용하여 프로그래밍 방식으로 스윕을 생성할 수 있습니다. 스케줄러를 사용자 정의하는 기능을 포함하여 Launch 스윕의 고급 구성은 CLI를 사용하십시오.
W&B App을 사용하여 대화식으로 스윕을 생성합니다.
- W&B App에서 W&B 프로젝트로 이동합니다.
- 왼쪽 패널에서 스윕 아이콘(빗자루 이미지)을 선택합니다.
- 다음으로 스윕 생성 버튼을 선택합니다.
- Launch 구성 🚀 버튼을 클릭합니다.
- 작업 드롭다운 메뉴에서 스윕을 생성할 작업 이름과 작업 버전을 선택합니다.
- Queue 드롭다운 메뉴를 사용하여 스윕을 실행할 Queue를 선택합니다.
- 작업 우선 순위 드롭다운을 사용하여 Launch 작업의 우선 순위를 지정합니다. Launch Queue가 우선 순위 지정을 지원하지 않으면 Launch 작업의 우선 순위가 “보통"으로 설정됩니다.
- (선택 사항) Run 또는 스윕 스케줄러에 대한 재정의 인수를 구성합니다. 예를 들어 스케줄러 재정의를 사용하여 스케줄러가 관리하는 동시 Run 수를
num_workers
를 사용하여 구성합니다. - (선택 사항) 대상 프로젝트 드롭다운 메뉴를 사용하여 스윕을 저장할 프로젝트를 선택합니다.
- 저장을 클릭합니다.
- 스윕 시작을 선택합니다.

W&B CLI를 사용하여 프로그래밍 방식으로 Launch로 W&B 스윕을 생성합니다.
- 스윕 구성을 만듭니다.
- 스윕 구성 내에서 전체 작업 이름을 지정합니다.
- 스윕 에이전트를 초기화합니다.
예를 들어 다음 코드 조각에서는 작업 값으로 'wandb/jobs/Hello World 2:latest'
를 지정합니다.
# launch-sweep-config.yaml
job: 'wandb/jobs/Hello World 2:latest'
description: launch jobs를 사용한 스윕 예제
method: bayes
metric:
goal: minimize
name: loss_metric
parameters:
learning_rate:
max: 0.02
min: 0
distribution: uniform
epochs:
max: 20
min: 0
distribution: int_uniform
# 선택적 스케줄러 파라미터:
# scheduler:
# num_workers: 1 # 동시 스윕 Runs
# docker_image: <스케줄러의 기본 이미지>
# resource: <예: local-container...>
# resource_args: # Runs에 전달되는 리소스 인수
# env:
# - WANDB_API_KEY
# 선택적 Launch 파라미터
# launch:
# registry: <이미지 풀링 레지스트리>
스윕 구성 생성 방법에 대한 자세한 내용은 스윕 구성 정의 페이지를 참조하십시오.
- 다음으로 스윕을 초기화합니다. 구성 파일의 경로, 작업 Queue 이름, W&B 엔티티 및 프로젝트 이름을 제공합니다.
wandb launch-sweep <path/to/yaml/file> --queue <queue_name> --entity <your_entity> --project <project_name>
W&B Sweeps에 대한 자세한 내용은 하이퍼파라미터 튜닝 챕터를 참조하십시오.
사용자 정의 스윕 스케줄러 생성
W&B 스케줄러 또는 사용자 정의 스케줄러로 사용자 정의 스윕 스케줄러를 생성합니다.
0.15.4
가 필요합니다.W&B 스윕 스케줄링 로직을 작업으로 사용하여 Launch 스윕을 생성합니다.
- 공개 wandb/sweep-jobs 프로젝트에서 Wandb 스케줄러 작업을 식별하거나 작업 이름을 사용합니다.
'wandb/sweep-jobs/job-wandb-sweep-scheduler:latest'
- 아래 예와 같이 이 이름을 가리키는
job
키가 포함된 추가scheduler
블록이 있는 구성 yaml을 구성합니다. - 새 구성으로
wandb launch-sweep
명령을 사용합니다.
예제 구성:
# launch-sweep-config.yaml
description: 스케줄러 작업을 사용하여 Launch 스윕 구성
scheduler:
job: wandb/sweep-jobs/job-wandb-sweep-scheduler:latest
num_workers: 8 # 8개의 동시 스윕 Runs를 허용합니다.
# 스윕 Runs가 실행할 트레이닝/튜닝 작업
job: wandb/sweep-jobs/job-fashion-MNIST-train:latest
method: grid
parameters:
learning_rate:
min: 0.0001
max: 0.1
사용자 정의 스케줄러는 스케줄러 작업을 만들어 생성할 수 있습니다. 이 가이드에서는 로깅을 더 많이 제공하기 위해 WandbScheduler
를 수정합니다.
wandb/launch-jobs
리포지토리를 복제합니다(특히:wandb/launch-jobs/jobs/sweep_schedulers
).- 이제
wandb_scheduler.py
를 수정하여 원하는 로깅 증가를 달성할 수 있습니다. 예: 함수_poll
에 로깅을 추가합니다. 이는 새 스윕 Runs를 시작하기 전에 폴링 주기(구성 가능한 타이밍)마다 한 번씩 호출됩니다. - 수정된 파일을 실행하여 작업을 만듭니다.
python wandb_scheduler.py --project <project> --entity <entity> --name CustomWandbScheduler
- UI 또는 이전 호출의 출력에서 생성된 작업의 이름을 식별합니다. 이는 코드 아티팩트 작업입니다(달리 지정하지 않은 경우).
- 이제 스케줄러가 새 작업을 가리키는 스윕 구성을 만듭니다.
...
scheduler:
job: '<entity>/<project>/job-CustomWandbScheduler:latest'
...
Optuna는 주어진 모델에 대한 최상의 하이퍼파라미터를 찾기 위해 다양한 알고리즘을 사용하는 하이퍼파라미터 최적화 프레임워크입니다(W&B와 유사). 샘플링 알고리즘 외에도 Optuna는 성능이 낮은 Runs를 조기에 종료하는 데 사용할 수 있는 다양한 가지치기 알고리즘도 제공합니다. 이는 많은 수의 Runs를 실행할 때 특히 유용하며 시간과 리소스를 절약할 수 있습니다. 클래스는 고도로 구성 가능하며 구성 파일의 scheduler.settings.pruner/sampler.args
블록에서 예상되는 파라미터를 전달하기만 하면 됩니다.
Optuna의 스케줄링 로직을 작업과 함께 사용하여 Launch 스윕을 생성합니다.
-
먼저 자신의 작업을 만들거나 미리 빌드된 Optuna 스케줄러 이미지 작업을 만듭니다.
- 자신의 작업을 만드는 방법에 대한 예는
wandb/launch-jobs
리포지토리를 참조하십시오. - 미리 빌드된 Optuna 이미지를 사용하려면
wandb/sweep-jobs
프로젝트에서job-optuna-sweep-scheduler
로 이동하거나 작업 이름wandb/sweep-jobs/job-optuna-sweep-scheduler:latest
를 사용할 수 있습니다.
- 자신의 작업을 만드는 방법에 대한 예는
-
작업을 만든 후 스윕을 만들 수 있습니다. Optuna 스케줄러 작업을 가리키는
job
키가 있는scheduler
블록이 포함된 스윕 구성을 만듭니다(아래 예제).
# optuna_config_basic.yaml
description: 기본 Optuna 스케줄러
job: wandb/sweep-jobs/job-fashion-MNIST-train:latest
run_cap: 5
metric:
name: epoch/val_loss
goal: minimize
scheduler:
job: wandb/sweep-jobs/job-optuna-sweep-scheduler:latest
resource: local-container # 이미지에서 제공되는 스케줄러 작업에 필요합니다.
num_workers: 2
# optuna 특정 설정
settings:
pruner:
type: PercentilePruner
args:
percentile: 25.0 # Runs의 75% 종료
n_warmup_steps: 10 # 처음 x단계에서는 가지치기가 꺼집니다.
parameters:
learning_rate:
min: 0.0001
max: 0.1
- 마지막으로 launch-sweep 명령으로 활성 Queue에 스윕을 시작합니다.
wandb launch-sweep <config.yaml> -q <queue> -p <project> -e <entity>
Optuna 스윕 스케줄러 작업의 정확한 구현은 wandb/launch-jobs를 참조하십시오. Optuna 스케줄러로 가능한 작업에 대한 자세한 예는 wandb/examples를 확인하십시오.
사용자 정의 스윕 스케줄러 작업으로 가능한 작업의 예는 jobs/sweep_schedulers
아래의 wandb/launch-jobs 리포지토리에서 확인할 수 있습니다. 이 가이드에서는 공개적으로 사용 가능한 Wandb 스케줄러 작업을 사용하는 방법과 사용자 정의 스윕 스케줄러 작업을 생성하는 프로세스를 보여줍니다.
Launch에서 스윕을 재개하는 방법
이전에 시작된 스윕에서 Launch 스윕을 재개할 수도 있습니다. 하이퍼파라미터와 트레이닝 작업은 변경할 수 없지만 스케줄러별 파라미터와 푸시되는 Queue는 변경할 수 있습니다.
- 이전에 실행한 Launch 스윕의 스윕 이름/ID를 식별합니다. 스윕 ID는 W&B App의 프로젝트에서 찾을 수 있는 8자 문자열입니다(예:
hhd16935
). - 스케줄러 파라미터를 변경하는 경우 업데이트된 구성 파일을 구성합니다.
- 터미널에서 다음 명령을 실행합니다.
<
와>
로 묶인 내용을 정보로 바꿉니다.
wandb launch-sweep <optional config.yaml> --resume_id <sweep id> --queue <queue_name>
[i18n] feedback_title
[i18n] feedback_question
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.