wandb agent --count 1 SWEEP_ID를 실행하세요. 에이전트는 하나의 트레이닝 run을 실행한 뒤 종료하므로 리소스 추정이 더 쉬워지고, SLURM 스케줄러가 여러 작업에 걸쳐 하이퍼파라미터 검색을 병렬화할 수 있습니다.
멀티 GPU 또는 분산 트레이닝 작업에는 추가로 적용되는 규칙이 있습니다. 각 SLURM 작업에서는 프로세스 하나만 wandb.agent()를 호출해야 합니다. 모든 rank가 에이전트를 호출하면 각 rank가 스윕 컨트롤러에서 각자의 하이퍼파라미터 설정을 가져오게 되므로, rank들이 더 이상 동일한 모델을 트레이닝하지 않게 됩니다.
아래 섹션에서는 단일 프로세스 작업의 제출 command, 분산 트레이닝이 포함된 멀티 GPU 작업의 rank 게이팅 패턴, global rank와 local rank 중 어느 것을 기준으로 게이트해야 하는지, 그리고 rank 0이 아닌 rank에서 로그를 기록하는 방법을 설명합니다.
단일 프로세스 또는 단일 GPU 작업
분산 트레이닝을 사용하는 멀티 GPU 작업
--gpus-per-node를 사용하는 멀티 GPU 작업)과 함께 W&B 스윕을 실행할 때는 SLURM_PROCID 환경 변수를 사용해 wandb.agent()가 하나의 rank에서만 실행되도록 하세요. 다른 rank에서는 스윕 에이전트나 wandb.init()를 호출하지 말고 분산 트레이닝만 실행해야 합니다. 분산 트레이닝에서 W&B를 사용하는 일반적인 방법은 분산 트레이닝 실험 로깅을 참조하세요.
- 각 SLURM 작업이 스윕 컨트롤러에 정확히 하나의 run만 등록합니다.
- rank-0이 아닌 rank는 중복되거나 분리된 run을 생성하지 않고 분산 트레이닝에서 자신의 부분을 실행합니다.
- 스윕 컨트롤러가 진행 상황을 올바르게 추적하고 새로운 하이퍼파라미터 설정을 올바르게 스케줄링합니다.
submitit 또는 이와 유사한 런처를 사용하는 경우, wandb.agent()를 호출하기 전에 트레이닝 진입점에서 동일한 검사를 적용하세요.
SLURM_PROCID와 SLURM_LOCALID 중에서 선택하기
SLURM_PROCID는 전체 SLURM 작업에서의 전역 rank입니다. 분산 그룹 전체에 대해 에이전트를 정확히 하나만 두려면 SLURM_PROCID == 0일 때만 실행되도록 설정하세요. 이는 Sweeps에서 일반적인 방식입니다.
SLURM_LOCALID는 단일 노드 내에서의 rank입니다. 노드마다 에이전트를 하나씩 두려면 SLURM_LOCALID == 0일 때만 실행되도록 설정하세요. 예를 들어, 노드별로 독립적인 스윕 run을 병렬로 시작할 때 이렇게 설정할 수 있습니다.
rank-0이 아닌 rank에서 로그 기록
스윕 Experiments