> ## 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.

# W&B 트레이닝 run과 함께 Weave 사용하기

> Weave 트레이스를 W&B 트레이닝 run과 통합하여 워크스페이스 대시보드에서 ML 메트릭과 함께 함수 실행 세부 정보를 확인하세요.

<h1 id="log-traces-during-model-training-runs">
  모델 트레이닝 run 중에 트레이스 로깅하기
</h1>

Weave 트레이스를 모델 트레이닝 run 중에 로깅하고 개인 워크스페이스에서 확인할 수 있습니다.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/traces-in-workspace.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=1882d33c4a90bd8a481d7bbae626061f" alt="트레이닝 run 메트릭과 함께 Weave 트레이스 패널을 보여주는 W&B 워크스페이스." width="2406" height="1200" data-path="products/wandb/weave/_media/traces-in-workspace.png" />
</Frame>

개인 워크스페이스는 모델 트레이닝 run에 대한 심층 분석과 데이터 시각화를 확인할 수 있게 해주는 UI의 맞춤형 대시보드입니다. 워크스페이스에 Weave 패널을 추가하면 모델 run 중에 로깅된 트레이스 데이터에 액세스하여 트레이닝 중 모델 성능에 대한 인사이트를 얻을 수 있습니다.

예를 들어, LLM 모델을 fine-tuning하고 있는데 W\&B 워크스페이스에서 step 500에서 정확도가 떨어지는 것으로 표시된다면, 통합된 Weave 트레이스를 통해 정확히 무슨 일이 있었는지 확인할 수 있습니다. 예를 들어, 모델이 지나치게 장황한 응답을 생성하기 시작하여 평가 기준을 충족하지 못한 경우입니다.

<h2 id="use-weave-panels">
  Weave 패널 사용
</h2>

ML 파이프라인에서 [함수에 `@weave.op` 데코레이터를 적용하면](/ko/products/wandb/weave/quickstart) 실행 정보가 자동으로 캡처되며 개인 워크스페이스에서 이 정보에 액세스할 수 있습니다.

예를 들어, 다음 스크립트는 Weave 트레이스가 W\&B 트레이닝 run과 어떻게 통합되는지 보여줍니다. 각 트레이닝 단계에서 W\&B에 메트릭을 로깅하는 동시에 상세한 Weave 트레이스를 생성하는 머신러닝 트레이닝 루프를 시뮬레이션합니다. 함수에 적용된 `@weave.op` 데코레이터는 입력, 출력, 실행 세부 정보를 자동으로 캡처합니다. 트레이닝 루프에서 `wandb.log()`로 메트릭을 로깅하면 프로젝트에 Weave 트레이스 정보도 로깅됩니다.

```python lines theme={"system"}
import wandb
import weave
import random

# 동일한 프로젝트로 W&B와 Weave를 모두 초기화합니다
project = "my-workspace-project"
weave.init(project)

@weave.op
def evaluate_model(model_state, epoch):
    # 평가 메트릭을 시뮬레이션합니다
    accuracy = 0.7 + epoch * 0.02 + random.uniform(-0.05, 0.05)
    
    # 특정 모델 동작을 추적합니다
    test_responses = {
        "conciseness_check": "Model generated 500 words for simple question",
        "accuracy_check": "Model answered 8/10 questions correctly",
        "hallucination_check": "No factual errors detected"
    }
    
    return {
        "accuracy": accuracy,
        "diagnostic_results": test_responses
    }

@weave.op
def training_step(epoch, lr):
    # 트레이닝 로직을 시뮬레이션합니다
    loss = 1.0 / (epoch + 1) + random.uniform(-0.1, 0.1)
    
    # 트레이스를 포함한 평가
    eval_results = evaluate_model(f"checkpoint_{epoch}", epoch)
    
    return {
        "loss": loss,
        "accuracy": eval_results["accuracy"],
        "diagnostics": eval_results["diagnostic_results"]
    }

# 트레이닝 루프
with wandb.init(project=project, config={"lr": 0.01}) as run:
    for epoch in range(5):
        # Weave 트레이싱을 사용하여 트레이닝을 실행합니다
        results = training_step(epoch, run.config.lr)
        
        # W&B에 로깅하여 인테그레이션 지점을 생성합니다
        run.log({
            "epoch": epoch,
            "loss": results["loss"],
            "accuracy": results["accuracy"]
        })
```

이 예제 스크립트를 실행하여 트레이스가 다른 run 정보와 함께 어떻게 로깅되는지 확인할 수 있습니다.

run이 시작되면 실행 중이나 완료 후에 워크스페이스에서 트레이스 정보를 볼 수 있습니다. run 시작 시 터미널에 표시되는 링크를 여세요(다음과 같은 형식입니다: `wandb: 🚀 View run at https://forge.coreweave.com/wandb/wandb/my-project/runs/[RUN-ID]`). 또는 UI에서 워크스페이스로 이동하세요.

UI에서 워크스페이스로 이동하려면:

1. Weights & Biases UI를 열고 **Projects** 탭을 클릭하세요. 프로젝트 목록이 열립니다.
2. 프로젝트 목록에서 run을 로깅한 프로젝트를 클릭하세요. **Workspaces** 페이지가 열립니다.
3. 워크스페이스를 자동 워크스페이스로 설정했다면 run에 대한 데이터 시각화와 정보가 워크스페이스에 자동으로 채워집니다. run의 트레이스 데이터는 워크스페이스의 **Weave** 섹션에 있습니다. 수동 워크스페이스를 사용하는 경우 **Add panels**를 클릭하고 Add Panels 메뉴의 **Weave** 섹션에서 패널을 선택하여 Weave 패널을 추가할 수 있습니다.

워크스페이스에 대한 자세한 내용은 [실험 결과 보기](/ko/products/wandb/track/workspaces)를 참조하세요.

<h2 id="associate-traces-with-a-specific-wb-run">
  트레이스를 특정 W\&B run과 연결하기
</h2>

경우에 따라 Weave가 자동으로 감지한 run이 아닌 다른 run에 트레이스를 연결해야 할 수 있습니다. 기본적으로 Weave는 활성 `wandb.run`을 자동으로 감지하고 트레이스를 연결합니다. 전역 `wandb.run`이 아닌 특정 run에 트레이스를 연결하려면 `set_wandb_run_context`를 사용하세요. 트레이스를 특정 run 및 run step과 연결하려면 해당 방법의 `run_id` 및 `step` 인수 값을 정의하세요:

```python lines highlight={6} theme={"system"}
import weave

client = weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

# 이후의 모든 트레이스를 특정 run과 연결합니다.
client.set_wandb_run_context(run_id="[YOUR-RUN-ID]", step=[INTEGER])

@weave.op
def my_function(x):
    return x * 2

my_function(10)  # 이 트레이스는 step 5에서 "my-run-id"와 연결됩니다.
```

`run_id`는 run의 짧은 ID(예: `38m4t5ja`)이며, 전체 `entity/프로젝트/run_id` 경로가 아닙니다. run의 짧은 ID는 run URL(`https://forge.coreweave.com/wandb/team/project/runs/[RUN-ID]`)에서 확인하거나 [코드에서 `wandb.run.id`를 액세스하여](/ko/products/wandb/runs/run-identifiers#find-and-customize-a-runs-id-or-name) 찾을 수 있습니다.

override를 중지하고 전역 `wandb.run`으로 되돌리려면 `clear_wandb_run_context`를 호출하세요:

```python lines theme={"system"}
client.clear_wandb_run_context()

my_function(20)  # 이 트레이스는 전역 wandb.run이 있으면 사용합니다.
```

<h2 id="reference-wb-artifacts-in-a-weave-trace">
  W\&B 아티팩트를 Weave 트레이스에서 레퍼런스하기
</h2>

[W\&B 아티팩트](/ko/products/wandb/artifacts)(모델, 데이터셋, 체크포인트 등)를 Weave 트레이스에서 레퍼런스할 수 있습니다. 이렇게 하면 Weights & Biases UI에 클릭 가능한 링크가 생성되어 아티팩트의 details page로 직접 이동하며, 특정 오퍼레이션에서 사용한 아티팩트 버전을 추적하는 데 도움이 됩니다.

예를 들어 모델의 두 버전(`v1`과 `v2`)을 트레이닝했다면, 해당 모델을 쿼리할 때 `v1` 아티팩트 레퍼런스를 트레이스의 속성으로 추가할 수 있습니다. 이를 통해 특정 출력이 정확히 어떤 아티팩트 버전에서 생성되었는지 추적할 수 있습니다.

아티팩트를 트레이스와 연결하려면 `wandb-artifact:///` 접두사와 아티팩트의 전체 이름을 연결하여 아티팩트 URL을 구성합니다. 구문은 다음과 같습니다: `wandb-artifact:///[FULL-NAME-OF-ARTIFACT]`. 그런 다음 Weave에 다음 두 가지 방법 중 하나로 전달합니다:

* 임의 속성으로
* `Model`의 속성으로

Weights & Biases UI의 details page에서 아티팩트의 전체 이름을 확인할 수 있습니다. 형식은 `[ENTITY]/[PROJECT]/[ARTIFACT-NAME]:[VERSION]`입니다. Weights & Biases UI의 아티팩트 details page에서 전체 이름을 복사할 수 있습니다.

다음 섹션에서 각 접근 방식을 보여줍니다.

<h3 id="add-an-artifact-as-an-attribute-of-a-trace">
  아티팩트를 트레이스의 속성으로 추가하기
</h3>

아티팩트를 트레이스의 속성으로 추가하려면 `weave.attributes()` 컨텍스트 관리자에 키-값 쌍으로 전달하세요:

<Tabs>
  <Tab title="Python">
    ```python lines {10} theme={"system"}
    import weave

    weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

    @weave.op
    def my_function(name: str):
        return f"Hello, {name}!"

    # 임의의 키 이름을 추가하고 아티팩트의 URL을 값으로 지정합니다
    with weave.attributes({'artifact_id': 'wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0'}):
        result = my_function("World")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript twoslash lines {12} theme={"system"}
    // @noErrors
    import {init, op, withAttributes} from 'weave';

    async function main() {
      await init('wandb/docs');

      const myFunction = op(async function myFunction(name: string) {
        return `Hello, ${name}!`;
      });

      // 임의의 키 이름을 추가하고 아티팩트의 URL을 값으로 지정합니다
      const result = await withAttributes(
        {artifact_id: "wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0"},
        async () => myFunction('World')
      );

      console.log('Result:', result);
    }

    main().catch(console.error);
    ```
  </Tab>
</Tabs>

<h3 id="add-an-artifact-as-an-attribute-of-a-model">
  `Model`의 속성으로 아티팩트 추가
</h3>

`Model`의 속성으로 아티팩트를 추가하려면 모델을 인스턴스화할 때 아티팩트 URL을 전달하세요:

<Note>
  `Model` 클래스는 Weave Python SDK에서만 지원됩니다.
</Note>

```python lines {7,17} theme={"system"}
import weave

weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

class MyModel(weave.Model):
    # 모델 속성으로 아티팩트 레퍼런스 저장
    artifact_id: str
    temperature: float = 0.7
    
    @weave.op
    def predict(self, query: str) -> str:
        # 여기에 모델 추론 로직 작성
        return f"Response to: {query}"

# 모델의 속성으로 아티팩트 URL 전달
model = MyModel(
    artifact_id="wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0"
)

result = model.predict("Hello, World!")
```


## Related topics

- [W&B Models와 함께 Weave 사용하기](/ko/products/wandb/weave/cookbooks/Models_and_Weave_Integration_Demo.md)
