메인 콘텐츠로 건너뛰기
Verifiers는 강화 학습(Reinforcement Learning, RL) 환경을 만들고 LLM 에이전트를 학습하기 위한 모듈식 컴포넌트 라이브러리입니다. Verifiers로 구축한 환경은 LLM 평가, 합성 데이터 파이프라인, OpenAI 호환 엔드포인트용 에이전트 하네스, 강화 학습(RL) 훈련에 사용할 수 있습니다. 학습 지표를 기록하기 위해 W&B를 사용하는 것과 더불어, Weave를 Verifiers RL 워크플로에 통합하면 모델이 학습 중에 어떤 성능을 보이는지에 대한 가시성을 확보할 수 있습니다. Weave는 각 단계의 입력, 출력, 타임스탬프를 기록하므로, 매 단계마다 데이터가 어떻게 변환되는지 확인하고, 복잡한 다중 라운드 대화를 디버깅하며, 학습 결과를 최적화할 수 있습니다. 또한 Weave와 Verifiers를 함께 사용하여 평가도 수행할 수 있습니다. 이 가이드는 Verifiers, W&B, Weave를 설치하는 방법을 보여주고, Verifiers를 Weave 및 W&B와 함께 사용하는 두 가지 예제를 제공합니다. verifiers wandb 실행 페이지

시작하기

Verifiers를 Weave와 통합하려면 먼저 uv를 사용해 Verifiers 라이브러리를 설치합니다 (라이브러리 작성자가 권장하는 방법). 다음 명령어 중 하나를 사용해 라이브러리를 설치하세요:
# 로컬 개발 및 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를 설치합니다.
uv pip install weave wandb
Weave는 기본적으로 해당 라이브러리에 대해 암시적 패칭을 활성화합니다. 이를 통해 명시적으로 호출 패치 함수를 사용하지 않고도 Verifiers와 함께 Weave를 사용할 수 있습니다.

rollout을 추적하고 평가하기

필요한 라이브러리를 모두 설치했다면, Weave와 Verifiers를 함께 사용해 호출을 추적하고 평가를 수행할 수 있습니다. 다음 예제 스크립트는 Verifiers로 평가를 실행하고 결과를 Weave에 로그로 남기는 방법을 보여줍니다. 이 스크립트는 GSM8K 데이터셋을 사용해 LLM의 수학 문제 풀이 능력을 테스트합니다. GPT-4에게 두 개의 수학 문제를 풀도록 요청하고, 각 응답에서 숫자 값을 추출한 뒤, Verifiers를 평가 프레임워크로 사용해 각 시도를 채점합니다. 예제를 실행하고 Weave에서 결과를 확인하세요:
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
)

실험 추적 및 트레이싱과 함께 모델 파인튜닝하기

Weave는 RL 파인튜닝 워크플로에서 훈련 중 모델이 어떻게 동작하는지에 대한 인사이트를 제공하는 강력한 도구가 될 수 있습니다. W&B와 함께 사용하면 종합적인 가시성을 확보할 수 있습니다. W&B는 손실 및 성능 차트 같은 훈련 지표를 추적하고, Weave는 훈련 과정 동안 각 상호작용에 대한 상세한 트레이스를 캡처합니다. verifiers 리포지토리에는 시작하는 데 도움이 되는 즉시 실행 가능한 예제가 포함되어 있습니다. 다음 예제 RL 훈련 파이프라인은 로컬 추론 서버를 실행하고 GSM8K 데이터셋을 사용해 모델을 훈련합니다. 모델은 수학 문제에 대한 답변을 생성하고, 훈련 루프는 출력에 점수를 매긴 뒤 그에 따라 모델을 업데이트합니다. W&B는 손실, 보상, 정확도 같은 훈련 지표를 로깅하고, Weave는 입력, 출력, 추론 과정, 그리고 점수를 캡처합니다. 이 파이프라인을 사용하려면:
  1. 소스 코드에서 프레임워크를 설치합니다. 다음 명령은 GitHub에서 Verifiers 라이브러리와 필요한 종속성을 설치합니다:
git clone https://github.com/willccbb/verifiers
cd verifiers
uv sync --all-extras && uv pip install flash-attn --no-build-isolation
  1. 기성 환경을 설치합니다. 다음 명령으로 사전 구성된 GSM8K 학습 환경을 설치합니다:
vf-install gsm8k --from-repo
  1. 모델을 학습합니다. 다음 명령은 각각 추론 서버와 학습 루프를 시작합니다. 이 예제 워크플로는 기본적으로 report_to=wandb로 설정되어 있으므로 별도로 wandb.init을 호출할 필요가 없습니다. 이 머신이 W&B에 메트릭을 기록할 수 있도록 인증하라는 프롬프트가 표시됩니다.
# 추론 서버 실행
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
이 예제는 H100 2개 환경에서 성공적으로 테스트되었으며, 안정성을 높이기 위해 다음 환경 변수를 설정했습니다:
# 실행 전에 서버와 트레이너 셸 모두에서 설정
export NCCL_CUMEM_ENABLE=0
export NCCL_CUMEM_HOST_ENABLE=0
이 환경 변수는 디바이스 메모리 할당에 대해 CUDA Unified Memory(CuMem)를 비활성화합니다.
학습이 시작되면 UI에서 실행 동안 로깅된 트레이스를 확인할 수 있습니다. 트레이스에는 Environment.a_generateRubric.score_rollouts 메서드의 logprobs가 포함되지 않습니다. 이는 페이로드 크기를 작게 유지하면서 학습을 위해 원본 데이터는 그대로 보존하기 위한 것입니다.

관련 항목

Verifiers는 W&B Models와 일급으로 통합되어 있습니다. 자세한 내용은 Monitoring을 참고하세요.