wandb.init()에서 resume 매개변수를 설정하여 run이 중단되거나 크래시될 때 W&B가 어떻게 처리할지 지정하세요. run을 초기화하면 W&B는 run ID가 이미 존재하는지 확인하고, resume 값에 정의된 동작을 적용합니다.
다음 표는 resume 매개변수에 전달한 인수와 run ID 존재 여부에 따라 W&B가 어떻게 동작하는지 보여줍니다.
auto와 allow를 언제 사용해야 하나요?W&B는 resume="allow"를 사용하고 재개하려는 특정 run ID를 지정할 것을 권장합니다.resume="auto" 옵션은 run ID를 지정할 필요가 없지만, 동일한 디렉터리에서 여러 run이 실패했거나 파일 디렉터리 구조가 변경된 경우 예기치 않은 동작이 발생할 수 있습니다. 또한 resume="auto"를 사용할 때는 실패한 프로세스와 동일한 디렉터리에서 run을 다시 시작해야 합니다.<>로 둘러싸인 값을 자신의 값으로 바꾸세요.
동일한 run ID를 사용해야 하는 run 재개
resume매개변수를"must"로 설정하세요 (resume="must")- 중단되었거나 크래시된 run의 run ID를 지정하세요
기존 run을 덮어쓰지 않고 run 재개
resume 매개변수를 "allow" (resume="allow")로 설정하세요. 중단되었거나 크래시된 run의 run ID를 지정하세요. 다음 코드 스니펫은 W&B Python SDK를 사용해 이를 수행하는 방법을 보여줍니다.
run이 자동으로 재개되도록 설정하기
- W&B Python SDK
- 셸 스크립트
run을 초기화할 때
resume 매개변수에 인수로 auto를 전달하세요. 실패한 프로세스와 동일한 디렉터리에서 run을 다시 시작해야 합니다.다음 코드 스니펫을 복사하여 붙여넣으세요. <>로 둘러싸인 값은 사용자의 값으로 바꾸세요.Users/AwesomeEmployee/Desktop/ImageClassify/training/라는 디렉터리에서 train.py라는 Python 스크립트를 실행한다고 가정해 보겠습니다. train.py에서 이 스크립트는 자동 재개를 활성화하는 run을 생성합니다. 이후 트레이닝 스크립트가 중지되었다고 가정해 보겠습니다. 이 run을 재개하려면 Users/AwesomeEmployee/Desktop/ImageClassify/training/에서 train.py 스크립트를 다시 시작해야 합니다.
파일 시스템을 공유할 수 없는 경우
WANDB_RUN_ID 환경 변수를 지정하거나 W&B Python SDK로 run ID를 전달하세요. run ID에 대한 자세한 내용은 “What are runs?” 페이지의 맞춤형 run IDs 섹션을 참조하세요.선점형 스윕 run 재개
wandb agent CLI로 스윕 에이전트를 실행할 때 적용되며, 이 방식은 트레이닝 프로그램을 하위 프로세스로 시작합니다. Python API wandb.agent()만 사용하는 경우에는 완전히 동일하게 적용되지 않습니다. 이 경로는 별도 프로세스가 아니라 스레드에서 트레이닝 함수를 실행하므로, OS 시그널의 전달 및 포워딩 방식이 CLI 에이전트 모델과 일치하지 않기 때문입니다.
권장 패턴: 스케줄러나 플랫폼에서 사용하는 선점 시그널(예: SIGUSR1 또는 SIGTERM)에 대한 시그널 핸들러를 등록하세요. 핸들러에서는 활성 run이 있을 때 mark_preempting()을 호출하고, 필요한 정리 작업(예: checkpoint 저장)을 수행한 다음, 0이 아닌 코드로 종료하세요(시그널 종료에는 일반적으로 128 + signum 관례를 사용합니다). wandb.init() 직후에 조건 없이 즉시 mark_preempting()을 호출하지 마세요. 그렇게 하면 코드 bug를 포함한 모든 실패가 선점으로 표시되어 run이 반복해서 다시 큐에 들어갈 수 있습니다.
실행 가능한 예제, CLI 에이전트의 --forward-signals, 그리고 mark_preempting()의 다양한 사용 방식에 대한 전체 레퍼런스 표는 시그널 처리와 스윕 run을 참조하세요.
이 패턴을 따르면 W&B는 run 상태를 대략 다음과 같이 기록합니다:
스윕 에이전트는 스윕이 검색 알고리즘에서 새 하이퍼파라미터 조합을 생성하기 전에 먼저 run 큐를 비웁니다. 큐가 비면 스윕은 정상 스케줄링을 재개합니다.