메인 콘텐츠로 건너뛰기
run의 이력을 수정하려면 run을 되감으세요. run을 되감으면 W&B는 동일한 run ID를 유지한 채 run의 상태를 지정한 step으로 재설정합니다.
run 되감기 옵션은 비공개 프리뷰로 제공되며 현재 활발히 개발 중입니다. 되감기의 알려진 성능 제한으로 인해, W&B는 일반적으로 대안으로 Forking을 권장합니다.현재 W&B는 다음 기능을 지원하지 않습니다:
  • 로그 되감기: 새 run 세그먼트에서 로그가 재설정됩니다.
  • 시스템 메트릭 되감기: W&B는 되감기 지점 이후의 새 시스템 메트릭만 로깅합니다.
  • artifact 연결: W&B는 artifact를 생성한 원본 run에 artifact를 연결합니다.
이 기능에 대한 액세스를 요청하려면 support@wandb.com으로 W&B 지원팀에 문의하세요.
W&B는 새로 로깅된 이력을 기준으로 되감은 run의 summary 메트릭을 다시 계산합니다. 이는 다음과 같은 동작을 의미합니다:
  • 이력 잘라내기: W&B는 이력을 되감기 지점에서 잘라 새 데이터를 로깅할 수 있게 합니다.
  • summary 메트릭: 새로 로깅된 이력을 기준으로 다시 계산됩니다.
  • 설정 보존: W&B는 원래 설정을 유지하며, 새 설정을 병합할 수 있습니다.
되감기와 포크의 호환성포크는 되감기 기능을 보완합니다.run에서 포크하면 W&B는 특정 시점의 run을 기준으로 새 분기를 만들어, 다른 매개변수나 모델을 사용해 볼 수 있게 합니다.run을 되감으면 W&B에서 run 이력 자체를 바로잡거나 수정할 수 있습니다.

사전 요구 사항

run을 되감기 전에 다음 사전 요구 사항을 충족하는지 확인하세요.
  • run을 되감으려면 W&B Python SDK 버전이 0.17.1 이상이어야 합니다.
  • step은 단조 증가해야 합니다. define_metric()으로 정의한 비단조 step에서는 작동하지 않습니다. run 이력과 시스템 메트릭에 필요한 시간순 순서가 깨지기 때문입니다.

run 되감기

특정 step부터 run을 되감고 그 시점부터 새 데이터를 로깅합니다. wandb.init()resume_from 파라미터에 되감을 run ID와 되감기를 시작할 step을 인수로 함께 전달하세요. resume_from 파라미터는 <run ID>?_step=<step> 형식의 문자열을 받습니다. 여기서 <run ID>는 되감으려는 run의 run ID이고, <step>은 되감기를 시작할 step입니다. 300 step 동안 직선을 기록한다고 가정해 보겠습니다:
import wandb

# 첫 번째 run을 초기화하고 메트릭을 기록합니다
with wandb.init(project="<project>", entity="wandb") as run:
    for i in range(300):
        # 선형 그래프를 그립니다
        run.log({"metric": i, "step": i})
프로젝트의 Workspace 내에서 step 0부터 step 300까지의 선형 플롯이 표시됩니다: 원래 run의 선형 플롯 나중에 step 200부터 run을 되감은 다음, step 200부터 step 300까지 i*1.1을 로깅하는 additional_metric이라는 새 메트릭을 로깅하려고 합니다. step 250부터는 직선 대신 새로운 미세한 물결 패턴(i**2 + 2*sin(i/3))을 로깅하려고 합니다:
import math

run_ID = "<run_ID>" # 되감기할 run의 run ID로 교체하세요

# 첫 번째 run의 특정 step에서 되감기하고 step 200부터 metric을 기록합니다
with wandb.init(project="<project>", entity="wandb", resume_from=f"{run_ID}?_step=200") as run:

    # 처음 몇 step은 run의 metric을 그대로 기록합니다
    # step 250 이후부터 파형 패턴을 기록하기 시작합니다
    for i in range(200, 300):
        if i < 250:
            run.log({"metric": i, "step": i})  # 파형 없이 run에서 계속 기록합니다
        else:
            # step 250부터 파형 동작을 도입합니다
            subtle_wave = i + (2 * math.sin(i / 3.0))  # 미묘한 파형 패턴을 적용합니다
            run.log({"metric": subtle_wave, "step": i})
        # 모든 step에서 새 metric을 추가로 기록합니다
        run.log({"additional_metric": i * 1.1, "step": i})
다음 이미지는 업데이트된 프로젝트의 Workspace를 보여줍니다. 되감기 후 플롯에서 다음과 같은 변경 사항을 확인할 수 있습니다:
  • 선형 플롯은 step 0부터 step 200까지의 원래 직선을 보여주고, 새로운 옅은 물결 패턴은 step 250부터 시작합니다(왼쪽 이미지).
  • W&B는 step 200부터 시작하는 additional_metric 레이블의 새 플롯(오른쪽 플롯)을 생성했습니다.
왼쪽부터 오른쪽까지: 원래 직선과 추가 metric

아카이브된 run 보기

run을 되감은 후에는 W&B App에서 원래 아카이브된 run을 확인할 수 있습니다. 아카이브된 run을 보려면 다음 단계를 따르세요:
  1. Overview 탭에 액세스: run 페이지의 Overview으로 이동합니다. 이 탭에서는 run의 세부 정보와 이력을 전체적으로 확인할 수 있습니다.
  2. Forked From 필드 찾기: Overview 탭에서 Forked From 필드를 찾습니다. 이 필드에는 재개 이력이 기록됩니다. Forked From 필드에는 원본 run으로 연결되는 링크가 포함되어 있어, 원래 run까지 거슬러 올라가 전체 되감기 이력을 파악할 수 있습니다.
Forked From 필드를 사용하면 아카이브된 재개 트리를 손쉽게 따라가며 각 되감기의 순서와 출발점을 파악할 수 있습니다.

되감기한 run에서 포크하기

되감기한 run에서 포크하려면 wandb.init()fork_from 인자를 사용해 원본 run ID와 포크를 시작할 원본 run의 step을 지정하세요:
import wandb

# 특정 step에서 run을 포크합니다
forked_run = wandb.init(
    project="<project>",
    entity="<entity>",
    fork_from=f"{rewind_run.id}?_step=500",
)

# 새 run에서 logging을 계속합니다
for i in range(500, 1000):
    forked_run.log({"metric": i*3})
forked_run.finish()