Skip to main content
wandb.init()에서 resume 매개변수를 설정하여 run이 중단되거나 크래시가 발생했을 때 W&B가 어떻게 대응할지 지정하세요. run을 초기화하면 W&B는 run ID가 이미 존재하는지 확인하고 resume 값에 정의된 동작을 적용합니다. 다음 table은 resume 매개변수에 전달된 인수와 run ID의 존재 여부에 따른 W&B의 동작을 설명합니다.
auto와 allow의 사용 시점W&B는 resume="allow"를 사용하고 재개하려는 run ID를 명시적으로 지정할 것을 권장합니다.resume="auto" 옵션은 run ID를 지정할 필요가 없지만, 동일한 디렉터리에서 여러 run이 실패하거나 파일 디렉터리 구조가 변경되면 예기치 않은 동작이 발생할 수 있습니다. 또한 resume="auto"를 사용할 때는 실패한 프로세스와 동일한 디렉터리에서 run을 다시 시작해야 합니다.
아래의 모든 예시에서 <>로 둘러싸인 값을 자신의 값으로 바꾸세요.

동일한 run ID를 사용해야 하는 run 재개

run이 중단되거나 크래시 또는 실패한 경우, 동일한 run ID를 사용하여 재개할 수 있습니다. 이를 위해 run을 초기화하고 다음을 지정하세요:
  • resume 매개변수를 "must"로 설정하세요 (resume="must")
  • 중단되었거나 크래시된 run의 run ID를 제공하세요
다음 코드 스니펫은 W&B Python SDK로 이를 수행하는 방법을 보여줍니다:
여러 프로세스가 동일한 id를 동시에 사용하면 예기치 않은 결과가 발생합니다.여러 프로세스를 관리하는 방법에 대한 자세한 내용은 분산 트레이닝 실험 로깅을 참조하세요.

기존 run을 덮어쓰지 않고 run 재개

중단되었거나 크래시된 run을 기존 run을 덮어쓰지 않고 재개하세요. 프로세스가 성공적으로 종료되지 않는 경우 특히 유용합니다. 다음에 W&B를 시작하면 W&B는 마지막 step부터 로깅을 시작합니다. W&B로 run을 초기화할 때 resume 매개변수를 "allow" (resume="allow")로 설정하세요. 중단되었거나 크래시된 run의 run ID를 제공하세요. 다음 코드 스니펫은 W&B Python SDK로 이를 수행하는 방법을 보여줍니다:

run 자동 재개 활성화

다음 코드 스니펫은 Python SDK 또는 환경 변수를 사용하여 run 자동 재개를 활성화하는 방법을 보여줍니다.
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에 대한 자세한 내용은 “run이란?” 페이지의 맞춤형 run ID 섹션을 참조하세요.

선점 가능한 스윕 run 재개

선점 시그널을 처리하면 W&B가 중단된 스윕 run을 자동으로 다시 큐에 들어가게 해 다른 에이전트에 할당할 수 있습니다. 이 패턴은 스윕 에이전트가 SLURM 선점 가능 큐, Amazon EC2 Spot 인스턴스 또는 Google Cloud 선점형 VM과 같은 선점 가능한 컴퓨팅 리소스에서 실행될 때 유용합니다. 아래 지침은 wandb agent CLI로 스윕 에이전트를 시작하는 경우에 적용됩니다. CLI는 트레이닝 프로그램을 하위 프로세스로 시작합니다. Python API wandb.agent()만 사용하는 경우에는 이 지침이 완전히 적용되지는 않습니다. Python API는 트레이닝 함수를 스레드에서 실행하므로 OS 시그널 전달 및 전달 방식이 CLI 에이전트의 동작과 다릅니다.

선점 시그널 처리

스케줄러 또는 플랫폼이 선점을 알리는 데 사용하는 시그널(예: SIGUSR1 또는 SIGTERM)에 대한 handler를 등록하세요. handler에서는 다음을 수행합니다:
  1. run이 active일 때 mark_preempting()을 호출합니다.
  2. checkpoint 저장과 같은 필요한 cleanup을 수행합니다.
  3. 0이 아닌 상태 코드로 종료합니다. 시그널 종료에 대한 일반적인 규칙은 128 + signum입니다.
wandb.init() 직후에 mark_preempting()을 무조건 호출하지 마십시오. 그렇게 하면 코드 bug를 포함한 모든 실패가 선점으로 표시되어 run이 반복적으로 다시 큐에 들어갈 수 있습니다. 실행 가능한 예시, CLI 에이전트의 --forward-signals, mark_preempting()의 다양한 사용에 대한 전체 레퍼런스 table은 시그널 handling and sweep runs를 참조하세요. 해당 패턴을 따를 경우 W&B는 run 상태를 대략 다음과 같이 기록합니다:
스윕 에이전트가 선점된 run을 가져올 때 트레이닝 프로세스는 60분 이내에 wandb.init()을 호출해야 합니다. run을 가져온 후 wandb.init()을 호출하기 전에 프로세스가 실패하는 경우와 같이 초기화가 발생하지 않으면 W&B는 60분 lease가 만료될 때까지 run을 다른 에이전트에서 사용 가능하게 만들지 않습니다.
스윕 에이전트는 스윕 검색 알고리즘에서 새로운 하이퍼파라미터 조합을 요청하기 전에 다시 큐에 들어간 run을 처리합니다. 큐가 비워진 후 스윕은 정상적인 scheduling을 재개합니다.
마지막 수정일 2026년 9월 30일