메인 콘텐츠로 건너뛰기
Verifiers는 강화 학습(RL) 환경을 만들고 LLM 에이전트를 트레이닝하기 위한 모듈식 컴포넌트 라이브러리입니다. Verifiers로 구축한 환경은 LLM 평가, 합성 데이터 파이프라인, 모든 OpenAI 호환 Endpoint용 에이전트 하니스, 그리고 RL 트레이닝에 활용할 수 있습니다. W&B를 사용해 트레이닝 메트릭을 기록하는 것과 함께, Verifiers RL 워크플로에 Weave를 통합하면 트레이닝 중 모델이 어떻게 동작하는지 관찰할 수 있습니다. Weave는 각 step의 입력, 출력, 타임스탬프를 기록하므로 매 단계에서 데이터가 어떻게 변환되는지 살펴보고, 복잡한 다중 라운드 대화를 디버그하며, 트레이닝 결과를 최적화할 수 있습니다. Weave와 Verifiers를 함께 사용해 평가를 수행할 수도 있습니다. 이 가이드에서는 Verifiers, W&B, Weave를 설치하는 방법을 설명하고, Verifiers를 Weave 및 W&B와 함께 사용하는 두 가지 예제를 제공합니다. verifiers wandb run 페이지

시작하기

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는 기본적으로 이 라이브러리에 암시적 패칭을 활성화합니다. 따라서 명시적인 call 패치 함수 없이도 Verifiers와 함께 Weave를 사용할 수 있습니다.

롤아웃을 트레이스하고 평가하기

필요한 라이브러리를 설치한 후에는 Weave와 Verifiers를 함께 사용해 call을 트레이스하고 평가를 실행할 수 있습니다. 다음 예제 스크립트는 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 트레이닝 파이프라인은 로컬 Inference 서버를 실행하고 GSM8K 데이터셋을 사용해 모델을 트레이닝합니다. 모델은 수학 문제에 대한 답을 생성하고, 트레이닝 루프는 출력을 채점한 뒤 그 결과에 따라 모델을 업데이트합니다. W&B는 loss, reward, accuracy와 같은 트레이닝 메트릭을 로깅하고, 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. 모델을 트레이닝하세요. 다음 명령어는 각각 Inference 서버와 트레이닝 루프를 시작합니다. 이 예제 워크플로는 기본적으로 report_to=wandb를 설정하므로 wandb.init()을 별도로 호출할 필요가 없습니다. W&B에 메트릭을 로깅할 수 있도록 이 머신을 인증하라는 메시지가 표시됩니다.
# 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
이 예제는 H100 2개에서 성공적으로 테스트했으며, 안정성을 높이기 위해 다음 환경 변수를 설정했습니다.
# launch 전에 두 셸(server 및 trainer) 모두에서
export NCCL_CUMEM_ENABLE=0
export NCCL_CUMEM_HOST_ENABLE=0
이 변수들은 디바이스 메모리 할당에 CUDA Unified Memory(CuMem)를 사용하지 않도록 합니다.
트레이닝이 시작되면 UI에서 run 중에 로깅된 트레이스를 볼 수 있습니다. 트레이스에서는 Environment.a_generateRubric.score_rollouts 메서드의 logprobs를 제외합니다. 이렇게 하면 트레이닝에 사용할 원본은 그대로 유지하면서도 페이로드 크기를 작게 유지할 수 있습니다.

추가 참조

Verifiers는 W&B Models와의 인테그레이션을 기본으로 지원합니다. 자세한 내용은 Verifiers 저장소를 참조하세요.