Verifiers ist eine Bibliothek mit modularen Komponenten zur Erstellung von Reinforcement Learning (RL)-Umgebungen und zum Training von Large Language Modelling (LLM)-Agenten. Das Ziel dieses Projekts ist es, eine Reihe von zuverlässigen Werkzeugen bereitzustellen, die es Entwicklern ermöglichen, LLM-Agenten einfach zu erstellen, zu trainieren und zu evaluieren. Verifiers enthält eine Bibliothek, die auf dem transformers
Trainer-Implementierung des asynchronen GRPO-Trainers (Generalised Reinforcement Learning with Policy Optimization), und erhielt die prime-rl
die Unterstützung des Projekts für umfangreiches FSDP-Training (Fully Sharded Data Parallel). Zusätzlich zum Reinforcement-Learning-Training kann Verifiers auch direkt zur Erstellung von LLM-Bewertungen, zur Erstellung synthetischer Datenpipelines und zur Implementierung von Agenten-Kontrollverfahren verwendet werden. Das Projekt zielt darauf ab, ein zuverlässiges Toolkit zu sein, das das "forked codebase proliferation"-Problem, das im Reinforcement-Learning-Infrastruktur-Ökosystem häufig auftritt, minimiert und eine stabile Entwicklungsbasis für Entwickler bietet.
Funktionsliste
- Modulare UmweltkomponentenBietet einen modularen Satz von Komponenten für den Aufbau von Reinforcement-Learning-Umgebungen, die die Erstellung und Anpassung von Umgebungen erleichtern.
- Unterstützung mehrerer Umgebungstypen:
SingleTurnEnv
Für Aufgaben, die nur eine einzige Antwort des Modells pro Stichwort erfordern.ToolEnv
:: Unterstützung für den Aufbau von Agentenschleifen unter Verwendung der systemeigenen Werkzeuge oder Funktionsaufrufe des Modells.MultiTurnEnv
:: Bietet eine Schnittstelle zum Schreiben von benutzerdefinierten Umgebungsinteraktionsprotokollen für Mehrrunden-Dialoge oder interaktive Aufgaben.
- integrierter Trainer: Enthält eine
GRPOTrainer
Sie verwendetvLLM
Inferenz, Unterstützung für die Ausführung über Accelerate/DeepSpeed GRPO Intensives Lerntraining mit Stil. - Kommandozeilentool:: Bietet praktische Befehlszeilentools zur Rationalisierung von Arbeitsabläufen:
vf-init
Initialisieren einer neuen Umgebungsmodulvorlage.vf-install
Installieren Sie das Umgebungsmodul in das aktuelle Projekt.vf-eval
Schnelles Bewerten von Umgebungen mithilfe von API-Modellen.
- Integration und Kompatibilität: kann leicht in jedes Reinforcement-Learning-Framework integriert werden, das einen OpenAI-kompatiblen Inferenz-Client unterstützt, und unterstützt von Haus aus die Verwendung der
prime-rl
Zusammenarbeit für eine effizientere und umfassendere Ausbildung. - Flexible Anreize:: Adoption
Rubric
Klassen, die eine oder mehrere Belohnungsfunktionen kapseln, können komplexe Bewertungskriterien für modellgenerierte Abschlüsse definieren.
Hilfe verwenden
Die Bibliothek der Verifiers arbeitet mit uv
Package Manager in Ihrem Projekt zusammen.
1. der Einbau
Zunächst müssen Sie eine neue virtuelle Umgebung erstellen und diese aktivieren.
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 初始化一个新项目
uv init
# 激活虚拟环境
source .venv/bin/activate
Als Nächstes installieren Sie die Verifier entsprechend Ihren Anforderungen:
- Lokale Entwicklung und Bewertung (CPU)Wenn Sie das API-Modell nur für die Entwicklung und Evaluierung verwenden, ist die Installation der Kernbibliothek ausreichend.
# 安装核心库 uv add verifiers # 如果需要 Jupyter 和测试支持 uv add 'verifiers[dev]'
- GPU-SchulungWenn Sie Folgendes verwenden möchten
vf.GRPOTrainer
Für das Modelltraining auf GPUs müssen Sie die Version mit allen Abhängigkeiten installieren und zusätzlich dieflash-attn
.uv add 'verifiers[all]' && uv pip install flash-attn --no-build-isolation
- Verwenden Sie die neueste Entwicklungsversion: Sie können auch die
main
Zweigmontage.uv add verifiers @ git+https://github.com/willccbb/verifiers.git
- Installation aus dem Quellcode (Entwicklung der Kernbibliothek)Wenn Sie die Kernbibliothek von Verifiers ändern müssen, können Sie sie aus dem Quellcode installieren.
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. die Schaffung und Verwaltung der Umwelt
Verifiers behandelt jede Reinforcement-Learning-Umgebung als ein installierbares Python-Modul.
- Initialisierung einer neuen Umgebung: Verwendung
vf-init
Befehl wird eine neue Umgebungsvorlage erstellt.# 创建一个名为 my-new-env 的环境 vf-init my-new-env
Dieser Befehl fügt einen neuen Befehl zum
environments/my-new-env
Verzeichnis, um eine Datei zu erzeugen, die diepyproject.toml
und die Grundstruktur der Umweltvorlage. - Installationsumgebung: Nach der Erstellung verwenden Sie die
vf-install
Installieren Sie es in Ihrer Python-Umgebung, damit es importiert und verwendet werden kann.# 安装本地环境 vf-install my-new-env # 你也可以直接从 verifiers 官方仓库安装示例环境 vf-install vf-math-python --from-repo
3. das Umfeld der Nutzung
Nachdem Sie die Umgebung installiert haben, können Sie die vf.load_environment
lädt sie und wertet sie aus oder trainiert sie.
- Umgebung laden:
import verifiers as vf # 加载已安装的环境,并传入必要的参数 vf_env = vf.load_environment("my-new-env", **env_args)
- Schnelle Bewertung der Umwelt: Verwendung
vf-eval
Befehl, um Ihre Umgebung schnell zu testen. Er verwendet standardmäßig diegpt-4.1-mini
Modell mit 3 Rollouts für jedes der 5 Stichwörter.# 对名为 my-new-env 的环境进行评估 vf-eval my-new-env
4. die Kernelemente der Umwelt
Eine Verifier-Umgebung besteht aus den folgenden Hauptkomponenten:
- Datensätze: Ein Hugging Face-Datensatz muss eine
prompt
Spalten als Eingabe. - Logik der Einführungdie Art und Weise, wie das Modell mit der Umgebung interagiert, zum Beispiel in der
MultiTurnEnv
definiert inenv_response
im Gesang antwortenis_completed
Methoden. - Bewertungskriterien (Rubriken)Reward: Wird verwendet, um eine oder mehrere Belohnungsfunktionen zu kapseln, die die Ausgabe des Modells bewerten.
- ParserOptional: Komponente zur Kapselung wiederverwendbarer Parsing-Logik.
5. die Ausbildungsmodelle
Verifiers bietet im Wesentlichen zwei Arten von Schulungen an:
- Mit dem eingebauten
GRPOTrainer
:
Dieser Trainer eignet sich für das effiziente Training von Dense auf 2-16 GPUs. Transformator Modelle.# 步骤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
- ausnutzen
prime-rl
(Empfohlen):
prime-rl
ist ein externes Projekt, das mit Verifiers erstellte Umgebungen nativ unterstützt und durch FSDP eine bessere Leistung und Skalierbarkeit bietet. Es bietet eine ausgereiftere Konfiguration und Benutzerfreundlichkeit.# 在 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
Anwendungsszenario
- Training aufgabenspezifischer Intelligenzen
nutzen.ToolEnv
vielleichtMultiTurnEnv
Entwickler können komplexe interaktive Umgebungen schaffen und LLM-Intelligenzen so trainieren, dass sie lernen, externe Tools (z. B. Taschenrechner, Suchmaschinen) zu nutzen oder bestimmte Aufgaben (z. B. Buchung von Flugtickets, Kundenbetreuung) in einem Dialog mit mehreren Runden zu erledigen. - Aufbau eines automatisierten Bewertungsprozesses
SingleTurnEnv
kann zur Erstellung automatisierter Beurteilungsprozesse verwendet werden. Durch die Definition eines Beurteilungsprozesses, der Standardantworten und Beurteilungskriterien enthält (Rubric
) Umgebung, die quantitative Vergleiche der Leistung verschiedener Modelle ermöglicht, z. B. die Bewertung der Korrektheit einer Codegenerierungsaufgabe oder der Qualität einer Textzusammenfassung. - Generierung hochwertiger synthetischer Daten
Eine große Menge an Daten über Modell-Umwelt-Interaktionen kann durch den Prozess der Umweltinteraktion (Rollout) erzeugt werden. Diese Daten können als Hugging-Face-Datensätze gespeichert und für die anschließende überwachte Feinabstimmung (SFT) oder ein anderes Modelltraining verwendet werden, eine effiziente Pipeline für die Erzeugung synthetischer Daten. - Akademische Forschung und Algorithmusvalidierung
Verifiers bietet eine modulare, reproduzierbare Experimentierplattform für Forscher im Bereich des Verstärkungslernens. Forscher können neue Interaktionsprotokolle, Belohnungsfunktionen oder Trainingsalgorithmen einfach implementieren und ihre Wirksamkeit in einer standardisierten Umgebung überprüfen.
QA
- Was hat die Verifiers-Bibliothek mit prime-rl zu tun?
prime-rl
ist ein eigenständiges Trainingsframework, das nativ Umgebungen unterstützt, die mit Verifiers erstellt wurden. Verifiers konzentriert sich auf die Bereitstellung von Komponenten für die Erstellung von RL-Umgebungen, während dieprime-rl
Stattdessen konzentriert es sich darauf, eine leistungsfähigere und besser skalierbare FSDP-Trainingslösung (Fully Sliced Data Parallelism) bereitzustellen. Für umfangreiches Training lautet die offizielle Empfehlung, Folgendes zu verwendenprime-rl
. - Wie kann ich eine Bonusfunktion für meine Umgebung definieren?
Sie müssen dievf.Rubric
Definieren Sie eine oder mehrere Belohnungsfunktionen in dem Objekt. Jede Funktion erhältprompt
undcompletion
und andere Parameter und gibt eine Fließkommazahl als Belohnungswert zurück. Sie können auch unterschiedliche Gewichte für verschiedene Belohnungsfunktionen festlegen. - Muss ich die Interaktionslogik des Modells selbst implementieren?
Nicht unbedingt. Für Einzelrunden-Quizze und Standard-Tool-Call-Szenarien können Sie einfach dieSingleTurnEnv
im Gesang antwortenToolEnv
. Vererbung ist nur erforderlich, wenn Ihre Anwendung sehr einzigartige, nicht standardisierte Interaktionsabläufe erfordert.MultiTurnEnv
gleichzeitig umschreibenis_completed
im Gesang antwortenenv_response
Methoden. - Was sollte ich tun, wenn ich während der Ausbildung auf NCCL-bezogene Fehler stoße?
Laut der offiziellen Dokumentation kann vLLM bei der Synchronisierung von Gewichten zu Problemen bei der Kommunikation zwischen den GPUs führen. Sie können versuchen, die EinstellungNCCL_P2P_DISABLE=1
um das Problem zu beheben. Wenn das Problem weiterhin besteht, versuchen Sie, die EinstellungNCCL_CUMEM_ENABLE=1
oder ein Problem mit dem Projekt ansprechen.