O Verifiers é uma biblioteca de componentes modulares para criar ambientes de Aprendizado por Reforço (RL) e treinar agentes de Modelagem de Linguagem Ampla (LLM). O objetivo desse projeto é fornecer um conjunto de ferramentas confiáveis que permitam aos desenvolvedores criar, treinar e avaliar facilmente os agentes LLM. O Verifiers contém uma biblioteca baseada no transformers
Implementação do instrutor do instrutor assíncrono GRPO (Generalised Reinforcement Learning with Policy Optimization) e obteve o prime-rl
O suporte do projeto para treinamento FSDP (Fully Sharded Data Parallel) em larga escala. Além do treinamento de aprendizagem por reforço, o Verifiers também pode ser usado diretamente para criar avaliações LLM, criar pipelines de dados sintéticos e implementar procedimentos de controle de agentes. O projeto pretende ser um kit de ferramentas confiável que minimiza o problema da "proliferação de bases de código bifurcadas", comum no ecossistema de infraestrutura de aprendizagem por reforço, e fornece uma base de desenvolvimento estável para os desenvolvedores.
Lista de funções
- Componentes de ambiente modularFornecimento de um conjunto modular de componentes para a criação de ambientes de aprendizado por reforço, facilitando a criação e a personalização de ambientes.
- Suporte a vários tipos de ambiente:
SingleTurnEnv
Para tarefas que exigem apenas uma única resposta do modelo por pista.ToolEnv
Suporte para a criação de loops de agente usando a ferramenta nativa do modelo ou os recursos de chamada de função.MultiTurnEnv
Interface de interação ambiental personalizada: fornece uma interface para a criação de protocolos de interação ambiental personalizados para diálogos de várias rodadas ou tarefas interativas.
- Treinador integrado: Contém um
GRPOTrainer
Ele usavLLM
Inferência, suporte para execução via Accelerate/DeepSpeed GRPO Treinamento intensivo de aprendizado em estilo. - ferramenta de linha de comando:: Fornece ferramentas práticas de linha de comando para agilizar o fluxo de trabalho:
vf-init
Inicialização de um novo modelo de módulo de ambiente.vf-install
Instalar o módulo de ambiente no projeto atual.vf-eval
Avalie rapidamente os ambientes usando modelos de API.
- Integração e compatibilidadepode ser facilmente integrado a qualquer estrutura de aprendizado por reforço que ofereça suporte a um cliente de inferência compatível com a OpenAI e que ofereça suporte nativo ao uso do
prime-rl
trabalhar em conjunto para um treinamento mais eficiente e em maior escala. - Incentivos flexíveis:: Adoção
Rubric
As classes que encapsulam uma ou mais funções de recompensa podem definir critérios de avaliação complexos para conclusões geradas por modelos.
Usando a Ajuda
A biblioteca Verifiers se propõe a trabalhar com uv
Package Manager juntos em seu projeto.
1. instalação
Primeiro, você precisa criar um novo ambiente virtual e ativá-lo.
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 初始化一个新项目
uv init
# 激活虚拟环境
source .venv/bin/activate
Em seguida, instale os Verifiers de acordo com suas necessidades:
- Desenvolvimento e avaliação local (CPU)Se você usar o modelo de API apenas para desenvolvimento e avaliação, a instalação da biblioteca principal é suficiente.
# 安装核心库 uv add verifiers # 如果需要 Jupyter 和测试支持 uv add 'verifiers[dev]'
- Treinamento em GPUSe você planeja usar
vf.GRPOTrainer
Para o treinamento de modelos em GPUs, você precisa instalar a versão com todas as dependências e, adicionalmente, instalar oflash-attn
.uv add 'verifiers[all]' && uv pip install flash-attn --no-build-isolation
- Use a versão de desenvolvimento mais recente: Você também pode obter o
main
Montagem de ramificação.uv add verifiers @ git+https://github.com/willccbb/verifiers.git
- Instalação a partir da fonte (desenvolvimento da biblioteca principal)Se você precisar modificar a biblioteca principal do Verifiers, poderá instalá-la a partir do código-fonte.
git clone https://github.com/willccbb/verifiers.git cd verifiers uv sync --all-extras && uv pip install flash-attn --no-build-isolation uv run pre-commit install
2. criar e gerenciar o ambiente
Os verificadores tratam cada ambiente de aprendizado por reforço como um módulo Python instalável.
- Inicialização de um novo ambiente: Uso
vf-init
cria um novo modelo de ambiente.# 创建一个名为 my-new-env 的环境 vf-init my-new-env
Esse comando adiciona um novo comando ao
environments/my-new-env
para gerar um arquivo contendo opyproject.toml
e a estrutura básica do modelo de ambiente. - ambiente de instalação: Depois de criado, use o
vf-install
Instale-o em seu ambiente Python para que possa ser importado e usado.# 安装本地环境 vf-install my-new-env # 你也可以直接从 verifiers 官方仓库安装示例环境 vf-install vf-math-python --from-repo
3. ambiente de uso
Depois de instalar o ambiente, você pode usar o comando vf.load_environment
carrega-o e o avalia ou treina.
- Ambiente de carregamento:
import verifiers as vf # 加载已安装的环境,并传入必要的参数 vf_env = vf.load_environment("my-new-env", **env_args)
- Avaliação rápida do ambiente: Uso
vf-eval
para testar rapidamente seu ambiente. O padrão é usar o comandogpt-4.1-mini
com 3 implementações para cada uma das 5 pistas.# 对名为 my-new-env 的环境进行评估 vf-eval my-new-env
4. elementos essenciais do ambiente
Um ambiente do Verifiers consiste nos seguintes componentes principais:
- Conjuntos de dadosUm conjunto de dados de rosto abraçado deve conter um
prompt
como entrada. - Lógica de lançamento: a maneira como o modelo interage com o ambiente, por exemplo, no
MultiTurnEnv
definido emenv_response
responder cantandois_completed
Métodos. - Critérios de avaliação (Rubricas)Função de recompensa: Usada para encapsular uma ou mais funções de recompensa que pontuam a saída do modelo.
- AnalisadoresComponente opcional para encapsular a lógica de análise reutilizável.
5. modelos de treinamento
O Verifiers oferece dois tipos principais de treinamento:
- Usando o
GRPOTrainer
:
Esse treinador é adequado para o treinamento denso eficiente em 2 a 16 GPUs. Transformador Modelos.# 步骤1: 启动 vLLM 推理服务器 (shell 0) # 假设使用7个GPU进行数据并行 CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6 vf-vllm --model your-model-name \ --data-parallel-size 7 --enforce-eager --disable-log-requests # 步骤2: 启动训练脚本 (shell 1) # 使用剩余的GPU进行训练 CUDA_VISIBLE_DEVICES=7 accelerate launch --num-processes 1 \ --config-file configs/zero3.yaml examples/grpo/train_script.py --size 1.7B
- fazer uso de
prime-rl
(Recomendado):
prime-rl
é um projeto externo que oferece suporte nativo a ambientes criados com Verifiers e proporciona melhor desempenho e escalabilidade por meio do FSDP. Ele tem uma configuração e uma experiência de usuário mais maduras.# 在 prime-rl 的配置文件中指定环境 # orch.toml [environment] id = "your-env-name" # 启动 prime-rl 训练 uv run rl \ --trainer @ configs/your_exp/train.toml \ --orchestrator @ configs/your_exp/orch.toml \ --inference @ configs/your_exp/infer.toml
cenário do aplicativo
- Treinamento de inteligências específicas de tarefas
UtilizarToolEnv
talvezMultiTurnEnv
Os desenvolvedores podem criar ambientes interativos complexos e treinar inteligências LLM para aprender a usar ferramentas externas (por exemplo, calculadoras, mecanismos de pesquisa) ou para concluir tarefas específicas (por exemplo, reserva de passagens aéreas, suporte ao cliente) em um diálogo de várias rodadas. - Criação de um processo de avaliação automatizado
SingleTurnEnv
pode ser usado para criar processos de avaliação automatizados. Ao definir um processo de avaliação que contém respostas padrão e critérios de avaliação (Rubric
) que permite comparações quantitativas do desempenho de diferentes modelos, por exemplo, avaliando a correção de uma tarefa de geração de código ou a qualidade de um resumo de texto. - Gerar dados sintéticos de alta qualidade
Uma grande quantidade de dados sobre as interações modelo-ambiente pode ser gerada por meio do processo de interação do ambiente (rollout). Esses dados podem ser salvos como conjuntos de dados Hugging Face e usados para o ajuste fino supervisionado (SFT) subsequente ou outro treinamento de modelo, um pipeline eficiente para a geração de dados sintéticos. - Pesquisa acadêmica e validação de algoritmos
O Verifiers oferece uma plataforma de experimentação modular e reproduzível para pesquisadores de aprendizagem por reforço. Os pesquisadores podem implementar facilmente novos protocolos de interação, funções de recompensa ou algoritmos de treinamento e verificar sua eficácia em um ambiente padronizado.
QA
- O que a biblioteca Verifiers tem a ver com o prime-rl?
prime-rl
é uma estrutura de treinamento autônoma que suporta nativamente ambientes criados com o uso do Verifiers. O Verifiers se concentra em fornecer componentes para a criação de ambientes de RL, enquanto oprime-rl
Em vez disso, ele se concentra em fornecer uma solução de treinamento FSDP (Paralelismo de dados totalmente fatiados) mais avançada, com melhor desempenho e melhor escalonamento. Para treinamento em larga escala, a recomendação oficial é usarprime-rl
. - Como posso definir uma função de bônus para o meu ambiente?
Você precisará configurar ovf.Rubric
Defina uma ou mais funções de recompensa no objeto. Cada função recebeprompt
ecompletion
e outros parâmetros e retorna um número de ponto flutuante como o valor da recompensa. Você também pode definir pesos diferentes para funções de recompensa diferentes. - Preciso implementar eu mesmo a lógica de interação do modelo?
Não necessariamente. Para questionários de rodada única e cenários de chamada de ferramenta padrão, você pode simplesmente usar oSingleTurnEnv
responder cantandoToolEnv
. A herança só é necessária se seu aplicativo exigir fluxos de interação muito exclusivos e fora do padrãoMultiTurnEnv
reescrever simultaneamenteis_completed
responder cantandoenv_response
Métodos. - O que devo fazer se encontrar erros relacionados ao NCCL durante o treinamento?
De acordo com a documentação oficial, o vLLM pode sofrer interrupções na comunicação entre as GPUs ao sincronizar pesos. Você pode tentar definir o parâmetroNCCL_P2P_DISABLE=1
para corrigir o problema. Se o problema persistir, tente configurar oNCCL_CUMEM_ENABLE=1
ou levantar um problema com o projeto.