Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-docs-2661.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
이 페이지에서는 W&B Launch로 하이퍼파라미터 튜닝 작업(sweeps)을 만들어, 다른 Launch 작업을 실행하는 동일한 인프라에서 하이퍼파라미터 탐색을 자동화하는 방법을 설명합니다. Launch에서 스윕을 사용하면, 스윕할 하이퍼파라미터가 지정된 스윕 스케줄러가 Launch Queue에 푸시됩니다. 스윕 스케줄러는 에이전트가 가져가는 즉시 시작되며, 선택된 하이퍼파라미터로 동일한 큐에 스윕 run을 실행합니다. 이 과정은 스윕이 완료되거나 중지될 때까지 계속됩니다.
기본 W&B Sweep 스케줄링 엔진을 사용할 수도 있고, 직접 맞춤형 스케줄러를 구현할 수도 있습니다:
- 표준 스윕 스케줄러: W&B Sweeps를 제어하는 기본 W&B Sweep 스케줄링 엔진을 사용합니다. 익숙한
bayes, grid, random 방법을 사용할 수 있습니다.
- 맞춤형 스윕 스케줄러: 스윕 스케줄러를 작업으로 실행되도록 설정합니다. 이 옵션을 사용하면 완전히 맞춤 설정할 수 있습니다. 다음 섹션에서는 표준 스윕 스케줄러를 확장해 logging을 더 포함하는 예시를 보여줍니다.
이 가이드는 W&B Launch가 이미 설정되어 있다고 가정합니다. W&B Launch가 설정되어 있지 않다면 Launch 문서의 시작하기 섹션을 참조하세요.
Launch에서 스윕을 처음 사용하는 사용자라면 basic 방법으로 스윕을 만드는 것을 권장합니다. 표준 W&B 스케줄링 엔진이 요구 사항을 충족하지 못하는 경우에는 Launch의 맞춤형 스윕 스케줄러를 사용하세요.
이 섹션에서는 표준 스케줄링 엔진을 사용해 Launch로 W&B Sweeps를 만드는 방법을 설명합니다. W&B App에서 대화형으로 스윕을 만들거나, W&B CLI를 사용해 프로그래밍 방식으로 만들 수 있습니다. 스케줄러 사용자 지정 기능을 포함한 Launch 스윕의 고급 설정은 CLI를 사용하세요.
W&B Launch로 스윕을 만들기 전에 먼저 스윕할 작업을 생성해야 합니다. 자세한 내용은 Create a Job 페이지를 참조하세요.
W&B App에서 대화형으로 스윕을 만드세요.
- W&B App에서 W&B 프로젝트로 이동합니다.
- 프로젝트 사이드바에서 Sweeps 아이콘(빗자루 모양)을 선택합니다.
- Create Sweep 버튼을 선택합니다.
- Configure Launch 버튼을 클릭합니다.
- Job 드롭다운 메뉴에서 작업 이름과 스윕을 생성할 작업 버전을 선택합니다.
- Queue 드롭다운 메뉴에서 스윕을 실행할 큐를 선택합니다.
- Job Priority 드롭다운에서 Launch 작업의 우선순위를 지정합니다. Launch queue가 우선순위 지정을 지원하지 않으면 Launch 작업 우선순위는 “Medium”으로 설정됩니다.
- 선택 사항: run 또는 스윕 스케줄러의 override 인수를 설정합니다. 예를 들어 scheduler override를 사용해
num_workers로 스케줄러가 관리할 동시 run 수를 설정할 수 있습니다.
- 선택 사항: Destination Project 드롭다운 메뉴에서 스윕을 저장할 프로젝트를 선택합니다.
- Save를 클릭합니다.
- Launch Sweep을 선택합니다.
W&B CLI를 사용해 Launch로 W&B Sweep을 프로그래밍 방식으로 만드세요.
- Sweep 설정을 만듭니다.
- Sweep 설정에 전체 작업 이름을 지정합니다.
- 스윕 에이전트를 초기화합니다.
1단계와 3단계는 일반적으로 W&B Sweep을 만들 때 수행하는 단계와 동일합니다.
예를 들어, 다음 코드 스니펫은 작업 값으로 'wandb/jobs/Hello World 2:latest'를 지정합니다.# launch-sweep-config.yaml
job: 'wandb/jobs/Hello World 2:latest'
description: launch jobs를 사용하는 sweep 예시
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 매개변수:
# scheduler:
# num_workers: 1 # 동시 sweep run
# docker_image: [BASE-IMAGE-FOR-THE-SCHEDULER]
# resource: [RESOURCE-TYPE-FOR-EXAMPLE-LOCAL-CONTAINER]
# resource_args: # runs에 전달되는 resource 인수
# env:
# - WANDB_API_KEY
# Optional Launch Params
# launch:
# registry: [REGISTRY-FOR-IMAGE-PULLING]
Sweep 설정을 만드는 방법에 대한 자세한 내용은 Define sweep configuration 페이지를 참조하세요.
- 스윕을 초기화합니다. 설정 파일 경로, 작업 큐 이름, W&B entity, 프로젝트 이름을 지정합니다.
wandb launch-sweep [PATH-TO-YAML-FILE] --queue [QUEUE-NAME] --entity [YOUR-ENTITY] --project [PROJECT-NAME]
W&B Sweeps에 대한 자세한 내용은 Tune Hyperparameters 장을 참조하세요.
이 섹션에서는 표준 스케줄링 엔진이 요구 사항을 충족하지 못할 때 맞춤형 스윕 스케줄러를 만드는 방법을 설명합니다. W&B 스케줄러 또는 맞춤형 스케줄러를 사용해 맞춤형 스윕 스케줄러를 만드세요.
스케줄러 작업을 사용하려면 wandb CLI 버전이 0.15.4 이상이어야 합니다
W&B 스케줄러
맞춤형 스케줄러
Optuna 스케줄러
W&B 스윕 스케줄링 로직을 작업으로 사용해 Launch 스윕을 생성하세요.
- 공개
wandb/sweep-jobs 프로젝트에서 W&B 스케줄러 작업을 찾거나, 작업 이름
'wandb/sweep-jobs/job-wandb-sweep-scheduler:latest'을 사용하세요.
- 다음 예시와 같이 이 이름을 가리키는
job 키가 포함된 scheduler 블록을 추가한 설정 YAML을 작성하세요.
- 새 설정으로
wandb launch-sweep 명령어를 사용하세요.
예시 설정:# launch-sweep-config.yaml
description: Launch sweep config using a scheduler job
scheduler:
job: wandb/sweep-jobs/job-wandb-sweep-scheduler:latest
num_workers: 8 # 동시에 8개의 스윕 run 허용
# 스윕 run이 실행할 트레이닝/튜닝 작업
job: wandb/sweep-jobs/job-fashion-MNIST-train:latest
method: grid
parameters:
learning_rate:
min: 0.0001
max: 0.1
scheduler-job를 만들어 맞춤형 스케줄러를 생성하세요. 이 가이드에서는 더 자세한 로깅을 제공하도록 WandbScheduler를 수정합니다.
wandb/launch-jobs 리포지토리(구체적으로는 wandb/launch-jobs/jobs/sweep_schedulers)를 클론하세요.
- 원하는 만큼 로깅이 더 상세해지도록
wandb_scheduler.py를 수정하세요. 예시: _poll 함수에 로깅을 추가합니다. 이 함수는 새 스윕 run이 시작되기 전에 각 폴링 주기(시간은 설정 가능)마다 한 번 호출됩니다.
- 수정한 파일을 실행하여 작업을 생성하세요:
python wandb_scheduler.py --project [PROJECT] --entity [ENTITY] --name CustomWandbScheduler
- 생성된 작업 이름을 파악하세요. UI 또는 이전 호출의 출력에서 확인할 수 있으며, 달리 명시되지 않는 한 이 작업은 code-artifact 작업입니다.
- 스케줄러가 새 작업을 가리키도록 스윕 설정을 생성하세요.
...
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: A basic Optuna scheduler
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 스텝 동안 pruning 비활성화
parameters:
learning_rate:
min: 0.0001
max: 0.1
- 마지막으로,
launch-sweep 명령을 사용해 스윕을 활성 큐로 실행하세요:
wandb launch-sweep [CONFIG-YAML] -q [QUEUE] -p [PROJECT] -e [ENTITY]
Optuna 스윕 스케줄러 작업의 정확한 구현은 wandb/launch-jobs에서 확인하세요. Optuna 스케줄러로 할 수 있는 작업에 대한 더 많은 예시는 wandb/examples에서 확인하세요.
맞춤형 스윕 스케줄러 작업의 예시는 wandb/launch-jobs 리포지토리의 jobs/sweep_schedulers 아래에서 확인할 수 있습니다. 이 가이드에서는 공개적으로 사용 가능한 W&B Scheduler Job을 사용하는 방법을 보여주고, 맞춤형 스윕 스케줄러 작업을 만드는 과정을 설명합니다.
이 섹션에서는 이전에 실행한 스윕에서 launch-sweep을 재개하는 방법을 설명합니다. 업데이트된 스케줄러 설정이나 다른 큐에서 탐색을 계속하려는 경우에 유용합니다. 하이퍼파라미터와 트레이닝 작업은 변경할 수 없지만, 스케줄러별 파라미터와 해당 작업이 푸시되는 큐는 변경할 수 있습니다.
초기 스윕이 latest 같은 alias가 붙은 트레이닝 작업을 사용한 경우, 마지막 run 이후 최신 작업 버전이 변경되었다면 재개 시 결과가 달라질 수 있습니다.
- 이전에 실행한 launch 스윕의 스윕 이름/ID를 파악합니다. 스윕 ID는 8자 문자열(예:
hhd16935)이며 W&B App의 프로젝트에서 찾을 수 있습니다.
- 스케줄러 파라미터를 변경하는 경우 업데이트된 설정 파일을 작성합니다.
- 터미널에서 다음 명령어를 실행합니다.
[ 및 ]로 감싼 내용을 사용자 정보로 바꾸세요.
wandb launch-sweep [OPTIONAL-CONFIG-YAML] --resume_id [SWEEP-ID] --queue [QUEUE-NAME]