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

# Verifiers

> Weave로 Verifiers RL 환경과 LLM 에이전트 트레이닝을 추적하고, 여러 차례에 걸친 대화와 평가 롤아웃을 캡처합니다.

[Verifiers](https://github.com/willccbb/verifiers)는 강화 학습(RL) 환경을 만들고 LLM 에이전트를 트레이닝하기 위한 모듈식 컴포넌트 라이브러리입니다. Verifiers로 구축한 환경은 LLM 평가, 합성 데이터 파이프라인, 모든 OpenAI 호환 Endpoint용 에이전트 하니스, 그리고 RL 트레이닝에 활용할 수 있습니다.

W\&B를 사용해 트레이닝 메트릭을 기록하는 것과 함께, Verifiers RL 워크플로에 Weave를 통합하면 트레이닝 중 모델이 어떻게 동작하는지 관찰할 수 있습니다. Weave는 각 step의 입력, 출력, 타임스탬프를 기록하므로 매 단계에서 데이터가 어떻게 변환되는지 살펴보고, 복잡한 다중 라운드 대화를 디버그하며, 트레이닝 결과를 최적화할 수 있습니다.

Weave와 Verifiers를 함께 사용해 평가를 수행할 수도 있습니다.

이 가이드는 Verifiers 기반 RL 워크플로에 관측성을 추가하려는 ML 엔지니어와 연구자를 위한 것입니다. 이 가이드에서는 Verifiers, W\&B, Weave를 설치하는 방법을 설명하고, Verifiers를 Weave 및 W\&B와 함께 사용하는 두 가지 예제를 제공합니다. 하나는 평가 중 롤아웃을 트레이싱하는 예제이고, 다른 하나는 실험 추적과 트레이싱을 활성화한 상태로 모델을 fine-tuning하는 예제입니다.

<img src="https://mintcdn.com/wb-21fd5541/4t6254IBBCMDhTEL/images/weave/verifiers.gif?s=f6290cc1bee55cf76bfdcb166e9f7e1a" alt="verifiers wandb run 페이지" width="960" height="518" data-path="images/weave/verifiers.gif" />

<div id="get-started">
  ## 시작하기
</div>

Verifiers를 Weave로 통합하려면 `uv`를 사용해 Verifiers 라이브러리를 설치하세요([라이브러리 작성자가 권장](https://github.com/willccbb/verifiers?tab=readme-ov-file#setup)). 라이브러리를 설치하려면 다음 명령어 중 하나를 사용하세요:

```bash theme={null}
# 로컬 개발 및 API 기반 모델을 위한 핵심 라이브러리 설치
uv add verifiers

# PyTorch 및 GPU 지원을 포함한 모든 선택적 의존성이 포함된 전체 버전 라이브러리 설치
uv add 'verifiers[all]' && uv pip install flash-attn --no-build-isolation

# 미출시 최신 기능 및 수정 사항을 포함하여 GitHub에서 직접 최신 버전 라이브러리 설치
uv add verifiers @ git+https://github.com/willccbb/verifiers.git
```

다음으로 Weave와 W\&B를 설치합니다:

```bash theme={null}
uv pip install weave wandb
```

Weave는 기본적으로 이 라이브러리에 [암시적 패칭](/ko/weave/guides/integrations#automatic-implicit-patching)을 활성화합니다. 따라서 명시적인 call 패치 함수 없이도 Verifiers와 함께 Weave를 사용할 수 있습니다.

라이브러리를 설치했으면 다음 섹션의 예시를 실행할 준비가 되었습니다.

<div id="trace-rollouts-and-evaluate">
  ### 롤아웃을 트레이스하고 평가하기
</div>

필요한 라이브러리를 설치한 후에는 Weave와 Verifiers를 함께 사용해 call을 트레이스하고 평가를 실행할 수 있습니다.

다음 예제 스크립트는 Verifiers로 평가를 실행하고 결과를 Weave에 로깅하는 방법을 보여줍니다. 이 스크립트는 [GSM8K 데이터셋](https://huggingface.co/datasets/openai/gsm8k)을 사용해 수학 문제를 푸는 LLM의 능력을 테스트합니다. GPT-4에 수학 문제 두 개를 풀게 한 뒤, 각 응답에서 숫자 값을 추출하고, Verifiers를 평가 프레임워크로 사용해 해당 시도를 채점합니다.

예제를 실행한 다음 Weave에서 결과를 확인하세요:

```python lines theme={null}
import os
from openai import OpenAI
import verifiers as vf
import weave

os.environ["OPENAI_API_KEY"] = "[YOUR-OPENAI-API-KEY]"

# Weave 초기화
weave.init("verifiers_demo")

# 최소한의 단일 턴 환경
dataset = vf.load_example_dataset("gsm8k", split="train").select(range(2))
parser = vf.ThinkParser()

def correct_answer(parser, completion, answer):
    parsed = parser.parse_answer(completion) or ""
    return 1.0 if parsed.strip() == answer.strip() else 0.0

rubric = vf.Rubric(funcs=[correct_answer, parser.get_format_reward_func()], weights=[1.0, 0.2])

env = vf.SingleTurnEnv(
    dataset=dataset,
    system_prompt="Think step-by-step, then answer.",
    parser=parser,
    rubric=rubric,
)

client = OpenAI()
results = env.evaluate(
    client, "gpt-4.1-mini", num_examples=2, rollouts_per_example=2, max_concurrent=8
)
```

<div id="fine-tune-a-model-with-experiment-tracking-and-tracing">
  ### 실험 추적 및 트레이싱으로 모델 파인튜닝하기
</div>

Weave는 RL 파인튜닝 중 모델의 성능을 파악할 수 있게 해 줍니다. W\&B와 함께 사용하면 워크플로 전반에 걸친 관측성을 확보할 수 있습니다. W\&B는 트레이닝 메트릭과 성능 차트를 추적하고, Weave는 트레이닝 과정의 각 상호작용에 대한 상세한 트레이스를 캡처합니다.

`verifiers` 저장소에는 시작하는 데 도움이 되는 즉시 실행 가능한 [예시](https://github.com/PrimeIntellect-ai/verifiers)가 포함되어 있습니다.

다음 예시 RL 트레이닝 파이프라인은 로컬 Inference 서버를 실행하고 GSM8K 데이터셋을 사용해 모델을 트레이닝합니다. 모델은 수학 문제에 대한 답을 생성하고, 트레이닝 루프는 출력을 채점한 뒤 그 결과에 따라 모델을 업데이트합니다. W\&B는 loss, reward, accuracy와 같은 트레이닝 메트릭을 로깅하고, Weave는 입력, 출력, 추론 과정, 채점 내용을 캡처합니다.

이 파이프라인을 사용하려면:

1. 소스에서 프레임워크를 설치합니다. 다음 명령어는 GitHub에서 Verifiers 라이브러리와 필요한 의존성을 설치합니다:

```bash theme={null}
git clone https://github.com/willccbb/verifiers
cd verifiers
uv sync --all-extras && uv pip install flash-attn --no-build-isolation
```

2. 미리 준비된 환경을 설치합니다. 다음 명령어로 사전 구성된 GSM8K 트레이닝 환경을 설치합니다:

```bash theme={null}
vf-install gsm8k --from-repo
```

3. 모델을 트레이닝하세요. 다음 명령어는 각각 Inference 서버와 트레이닝 루프를 시작합니다. 이 예제 워크플로는 기본적으로 `report_to=wandb`를 설정하므로 `wandb.init()`을 별도로 호출할 필요가 없습니다. W\&B에 메트릭을 로깅할 수 있도록 이 머신을 인증하라는 메시지가 표시됩니다.

```bash theme={null}
# Inference 서버 실행
CUDA_VISIBLE_DEVICES=0 vf-vllm --model willcb/Qwen3-0.6B --enforce-eager --disable-log-requests

# 트레이닝 루프 실행
CUDA_VISIBLE_DEVICES=1 accelerate launch --num-processes 1 --config-file configs/zero3.yaml examples/grpo/train_gsm8k.py
```

<Note>
  이 예제는 H100 2개에서 테스트되었으며, 안정성을 높이기 위해 다음 환경 변수를 설정했습니다.

  ```bash theme={null}
  # launch 전에 두 셸(server 및 trainer) 모두에서
  export NCCL_CUMEM_ENABLE=0
  export NCCL_CUMEM_HOST_ENABLE=0
  ```

  이 변수들은 디바이스 메모리 할당에 CUDA Unified Memory(CuMem)를 사용하지 않도록 합니다.
</Note>

트레이닝이 시작되면 UI에서 run 중에 로깅된 [트레이스](/ko/weave/guides/tools/weave-in-workspaces)를 볼 수 있습니다. W\&B는 트레이닝 메트릭을 캡처하고 Weave는 각 상호작용별 트레이스를 기록하므로, 트레이닝 run의 상위 수준 성능 추세와 상세한 단계별 가시성을 모두 확보할 수 있습니다.

트레이스에서는 `Environment.a_generate` 및 `Rubric.score_rollouts` 메서드의 `logprobs`를 제외합니다. 이렇게 하면 트레이닝에 사용할 원본은 그대로 유지하면서도 페이로드 크기를 작게 유지할 수 있습니다.

<div id="see-also">
  ## 추가 참조
</div>

Verifiers는 W\&B Models와의 인테그레이션을 기본으로 지원합니다. 자세한 내용은 [Verifiers 저장소](https://github.com/willccbb/verifiers)를 참조하세요.
