메인 콘텐츠로 건너뛰기
wandb.init()에서 resume 매개변수를 설정하여 run이 중단되거나 크래시될 때 W&B가 어떻게 처리할지 지정하세요. run을 초기화하면 W&B는 run ID가 이미 존재하는지 확인하고, resume 값에 정의된 동작을 적용합니다. 다음 표는 resume 매개변수에 전달한 인수와 run ID 존재 여부에 따라 W&B가 어떻게 동작하는지 보여줍니다.
ArgumentDescriptionRun ID existsRun ID does not existUse case
"must"W&B는 run ID로 지정한 run을 반드시 재개해야 합니다.W&B는 동일한 run ID로 run을 재개합니다. 마지막 step부터 이어서 실행합니다.W&B는 오류를 발생시킵니다.동일한 run ID를 반드시 사용해야 하는 run을 재개할 때 사용합니다.
"allow"run ID가 존재하면 W&B가 run을 재개하도록 허용합니다.W&B는 동일한 run ID로 run을 재개합니다. 마지막 step부터 이어서 실행합니다.W&B는 지정한 run ID로 새 run을 초기화합니다.기존 run을 덮어쓰지 않고 run을 재개할 때 사용합니다.
"never"W&B가 run ID로 지정한 run을 재개하지 않도록 합니다.지정한 ID를 가진 run이 이미 존재하면 오류를 발생시킵니다.W&B는 지정한 run ID로 새 run을 초기화합니다.
"auto"run ID가 존재하면 W&B가 자동으로 run 재개를 시도하도록 허용합니다. 실패한 프로세스와 동일한 디렉터리에서 run을 다시 시작합니다.W&B는 동일한 run ID로 run을 재개합니다.W&B는 지정한 run ID로 새 run을 초기화합니다.run이 자동으로 재개되도록 설정할 때 사용합니다.
autoallow를 언제 사용해야 하나요?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를 사용해 이를 수행하는 방법을 보여줍니다:
with wandb.init(entity="<entity>", project="<project>", resume="must") as run:
        # 트레이닝 코드를 여기에 작성하세요
여러 프로세스가 동일한 id를 동시에 사용하면 예상치 못한 결과가 발생할 수 있습니다.여러 프로세스를 관리하는 방법에 대한 자세한 내용은 분산 트레이닝 실험 로깅을 참조하세요.

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

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

with wandb.init(entity="<entity>", project="<project>", id="<run ID>", resume="allow") as run:
        # 트레이닝 코드를 여기에 작성하세요

run이 자동으로 재개되도록 설정하기

다음 코드 스니펫은 Python SDK 또는 환경 변수를 사용하여 run이 자동으로 재개되도록 설정하는 방법을 보여줍니다.
run을 초기화할 때 resume 매개변수에 인수로 auto를 전달하세요. 실패한 프로세스와 동일한 디렉터리에서 run을 다시 시작해야 합니다.다음 코드 스니펫을 복사하여 붙여넣으세요. <>로 둘러싸인 값은 사용자의 값으로 바꾸세요.
with wandb.init(entity="<entity>", project="<project>", id="<run ID>", resume="auto") as 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 재개

선점을 올바르게 처리하면 중단된 스윕 run을 자동으로 다시 큐에 넣어 다른 에이전트가 가져가도록 할 수 있습니다. 이 패턴은 스윕 에이전트가 선점형 환경(예: 선점형 큐의 SLURM 작업, EC2 Spot 인스턴스, Google Cloud 선점형 VM)에서 실행될 때 특히 유용합니다. 아래 동작은 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 상태
run이 exit code 0으로 정상 종료됨FINISHED
run이 0이 아닌 exit code로 실패함FAILED
run이 처리되지 않은 시그널(예: SIGKILL)을 받음약 5분 후 CRASHED
run이 처리된 선점 시그널(예: SIGTERM 또는 SIGUSR1)을 받고, 핸들러가 mark_preempting()을 호출한 뒤 프로세스가 0이 아닌 값으로 종료됨PREEMPTED; run이 다음 에이전트 요청을 위해 큐에 등록됨
스윕 에이전트는 스윕이 검색 알고리즘에서 새 하이퍼파라미터 조합을 생성하기 전에 먼저 run 큐를 비웁니다. 큐가 비면 스윕은 정상 스케줄링을 재개합니다.