> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-hivemind-launch.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 원본 데이터를 잃지 않고 run의 이력을 바로잡거나 수정하기 위해 run을 되감습니다.

# run 되감기

run의 이력을 수정하려면 run을 되감으세요. run을 되감으면 W\&B는 동일한 run ID를 유지한 채 run의 상태를 지정한 step으로 재설정합니다.

<Warning>
  run 되감기 옵션은 비공개 프리뷰로 제공되며 현재 활발히 개발 중입니다. 되감기의 알려진 성능 제한으로 인해, W\&B는 일반적으로 대안으로 [Forking](./forking)을 권장합니다.

  현재 W\&B는 다음 기능을 지원하지 않습니다:

  * **로그 되감기**: 새 run 세그먼트에서 로그가 재설정됩니다.
  * **시스템 메트릭 되감기**: W\&B는 되감기 지점 이후의 새 시스템 메트릭만 로깅합니다.
  * **artifact 연결**: W\&B는 artifact를 생성한 원본 run에 artifact를 연결합니다.

  이 기능에 대한 액세스를 요청하려면 [support@wandb.com](mailto:support@wandb.com)으로 W\&B 지원팀에 문의하세요.
</Warning>

W\&B는 새로 로깅된 이력을 기준으로 되감은 run의 summary 메트릭을 다시 계산합니다. 이는 다음과 같은 동작을 의미합니다:

* **이력 잘라내기**: W\&B는 이력을 되감기 지점에서 잘라 새 데이터를 로깅할 수 있게 합니다.
* **summary 메트릭**: 새로 로깅된 이력을 기준으로 다시 계산됩니다.
* **설정 보존**: W\&B는 원래 설정을 유지하며, 새 설정을 병합할 수 있습니다.

<Note>
  **되감기와 포크의 호환성**

  포크는 되감기 기능을 보완합니다.

  run에서 포크하면 W\&B는 특정 시점의 run을 기준으로 새 분기를 만들어, 다른 매개변수나 모델을 사용해 볼 수 있게 합니다.

  run을 되감으면 W\&B에서 run 이력 자체를 바로잡거나 수정할 수 있습니다.
</Note>

<div id="prerequisites">
  ## 사전 요구 사항
</div>

run을 되감기 전에 다음 사전 요구 사항을 충족하는지 확인하세요.

* run을 되감으려면 [W\&B Python SDK](https://pypi.org/project/wandb/) 버전이 `0.17.1` 이상이어야 합니다.
* step은 단조 증가해야 합니다. [`define_metric()`](/ko/models/ref/python/experiments/run#define_metric)으로 정의한 비단조 step에서는 작동하지 않습니다. run 이력과 시스템 메트릭에 필요한 시간순 순서가 깨지기 때문입니다.

<div id="rewind-a-run">
  ## run 되감기
</div>

특정 step부터 run을 되감고 그 시점부터 새 데이터를 로깅합니다. [`wandb.init()`](/ko/models/ref/python/functions/init)의 `resume_from` 파라미터에 되감을 run ID와 되감기를 시작할 step을 인수로 함께 전달하세요. `resume_from` 파라미터는 `<run ID>?_step=<step>` 형식의 문자열을 받습니다. 여기서 `<run ID>`는 되감으려는 run의 run ID이고, `<step>`은 되감기를 시작할 step입니다.

300 step 동안 직선을 기록한다고 가정해 보겠습니다:

```python theme={null}
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까지의 선형 플롯이 표시됩니다:

<img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/R2JcDHqq5H9e7IgE/images/runs/rewind_run_original.png?fit=max&auto=format&n=R2JcDHqq5H9e7IgE&q=85&s=b82135ff80e2d43e030fff5c1bcb0a75" alt="원래 run의 선형 플롯" width="2014" height="1024" data-path="images/runs/rewind_run_original.png" />

나중에 step 200부터 run을 되감은 다음, step 200부터 step 300까지 `i*1.1`을 로깅하는 `additional_metric`이라는 새 메트릭을 로깅하려고 합니다. step 250부터는 직선 대신 새로운 미세한 물결 패턴(`i**2 + 2*sin(i/3)`)을 로깅하려고 합니다:

```python theme={null}
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` 레이블의 새 플롯(오른쪽 플롯)을 생성했습니다.

<img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/R2JcDHqq5H9e7IgE/images/runs/rewind_run_step200_wmetric.png?fit=max&auto=format&n=R2JcDHqq5H9e7IgE&q=85&s=51c161d2587d9027cf327d29837edc64" alt="왼쪽부터 오른쪽까지: 원래 직선과 추가 metric" width="3266" height="1057" data-path="images/runs/rewind_run_step200_wmetric.png" />

<div id="view-an-archived-run">
  ## 아카이브된 run 보기
</div>

run을 되감은 후에는 W\&B App에서 원래 아카이브된 run을 확인할 수 있습니다. 아카이브된 run을 보려면 다음 단계를 따르세요:

1. **Overview 탭에 액세스:** run 페이지의 [**Overview** 탭](./#overview-tab)으로 이동합니다. 이 탭에서는 run의 세부 정보와 이력을 전체적으로 확인할 수 있습니다.
2. **Forked From 필드 찾기:** **Overview** 탭에서 `Forked From` 필드를 찾습니다. 이 필드에는 재개 이력이 기록됩니다. **Forked From** 필드에는 원본 run으로 연결되는 링크가 포함되어 있어, 원래 run까지 거슬러 올라가 전체 되감기 이력을 파악할 수 있습니다.

`Forked From` 필드를 사용하면 아카이브된 재개 트리를 손쉽게 따라가며 각 되감기의 순서와 출발점을 파악할 수 있습니다.

<div id="fork-from-a-run-that-you-rewind">
  ## 되감기한 run에서 포크하기
</div>

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

```python theme={null}
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()
```
