> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

> 원본 데이터를 잃지 않고 run을 되감아 이력을 수정하거나 변경하세요.

# run 되감기

run을 되감으면 run의 이력을 수정할 수 있습니다. run을 되감으면 W\&B는 run ID를 그대로 유지한 채 run의 상태를 지정한 step으로 재설정합니다.

<Note>
  run 되감기 기능은 현재 활발히 개발 중입니다. Multi-tenant Cloud 및 Dedicated Cloud에서는 프리뷰로 제공되며, Self-Managed에서는 아직 사용할 수 없습니다.

  되감기에는 알려진 성능 제한이 있으므로 W\&B는 일반적으로 되감기 대신 [포크](/ko/products/wandb/runs/forking)를 사용할 것을 권장합니다.
</Note>

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

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

* run을 되감으려면 [W\&B Python SDK](https://pypi.org/project/wandb/) 버전 `0.17.1` 이상이 필요합니다.
* 단조 증가하는 step을 사용해야 합니다. [`define_metric()`](/ko/products/wandb/ref/python/experiments/run#define_metric)으로 정의한 비단조 step은 run 이력에 필요한 시간 순서를 깨뜨리므로 되감기가 작동하지 않습니다.

<h3 id="limitations">
  제한 사항
</h3>

되감기는 다음 기능을 지원하지 않습니다.

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

W\&B는 새로 로깅된 이력을 기반으로 되감은 run의 summary 메트릭을 다시 계산하며, 그 결과는 다음과 같습니다.

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

<h3 id="rewind-and-forking-compatibility">
  되감기와 포크의 호환성
</h3>

포크는 되감기를 보완하는 기능입니다.

run에서 포크하면 W\&B는 run의 특정 지점에서 새 분기를 생성하므로, 다른 매개변수나 모델을 사용해 볼 수 있습니다.

run을 되감으면 run 이력 자체를 수정하거나 변경할 수 있습니다.

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

run을 특정 step으로 되감은 뒤 해당 시점부터 새 데이터를 로깅할 수 있습니다. [`wandb.init()`](/ko/products/wandb/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={"system"}
import wandb

# 첫 번째 run을 초기화하고 몇 가지 메트릭을 로깅합니다
with wandb.init(project="<project>", entity="wandb") as run:
    for i in range(300):
        # 직선을 그립니다
        run.log({"metric": i, "step": i})
```

프로젝트의 워크스페이스에서 step 0부터 step 300까지의 선형 플롯을 확인할 수 있습니다.

<img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/rewind_run_original.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=f08b7f13e5c42bdea0c2e491f4e102f7" alt="원본 run의 선형 플롯" width="2014" height="1024" data-path="products/wandb/_media/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={"system"}
import math

run_ID = "<run_ID>" # 되감을 run의 run ID로 바꾸세요

# 첫 번째 run을 특정 step으로 되감고 step 200부터 메트릭을 로깅합니다
with wandb.init(project="<project>", entity="wandb", resume_from=f"{run_ID}?_step=200") as run:

    # 처음 몇 step 동안은 기존 run과 동일하게 메트릭을 로깅합니다
    # 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에서 새 메트릭을 추가로 로깅합니다
        run.log({"additional_metric": i * 1.1, "step": i})
```

다음 이미지는 업데이트된 프로젝트의 워크스페이스를 보여줍니다. 되감기 후 플롯에서 다음과 같이 달라진 점을 확인할 수 있습니다.

* 선형 플롯은 step 0부터 step 200까지 기존의 직선을 그대로 보여 주며, step 250부터는 새로운 잔잔한 물결 패턴이 나타납니다(왼쪽 이미지).
* W\&B는 step 200부터 시작하는 `additional_metric` 레이블의 새 플롯(오른쪽 플롯)을 생성했습니다.

<img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/rewind_run_step200_wmetric.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=1739ebdb6401da0ae79ff8732606e2b4" alt="왼쪽부터: 기존 직선과 추가 메트릭" width="3266" height="1057" data-path="products/wandb/_media/rewind_run_step200_wmetric.png" />

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

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

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

`Forked From` 필드를 활용하면 아카이브된 재개 트리를 손쉽게 탐색하고, 각 되감기가 어떤 순서로 어디에서 비롯되었는지 파악할 수 있습니다.

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

되감은 run에서 포크하려면 `wandb.init()`의 [`fork_from`](/ko/products/wandb/runs/forking) 인수를 사용하여 소스 run ID와 포크 기점이 될 소스 run의 step을 지정하세요.

```python theme={"system"}
import wandb

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

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


## Related topics

- [run 포크하기](/ko/products/wandb/runs/forking.md)
