Skip to main content

miniVERL — single-GPU LLM post-training

CI Build PyPI Python License

PyPI · Stable docs · Development docs · 中文

Run a documented subset of verl-style on-policy distillation on one consumer GPU. miniVERL accepts a typed verl v0.8 OPD profile and Parquet prompts, executes actor rollout → teacher scoring → actor update locally, and exports standard PEFT/Parquet/config artifacts for scale-out. Native SFT, DPO, KD and tool-agent recipes remain available.

PyPI v0.8.0 is stable; main is development. miniVERL is independent from verl. It does not claim arbitrary verl YAML execution, distributed execution, or full algorithmic compatibility.

Pip-only OPD quickstart

python -m pip install "miniverl[train]"
miniverl data sample --format verl-parquet --out prompts.parquet
miniverl plan --profile verl-opd-v0.8-single-gpu-v1 --config builtin:qwen3-0.6b-1.7b-opd \
  --set 'data.train_files=["prompts.parquet"]'
miniverl run --profile verl-opd-v0.8-single-gpu-v1 --config builtin:qwen3-0.6b-1.7b-opd \
  --set 'data.train_files=["prompts.parquet"]' --dry-run

The sample, plan and dry run need no Git checkout; planning loads no weights. Remove --dry-run on one CUDA GPU to execute the pinned Qwen3-0.6B/1.7B NF4 recipe and produce a loadable PEFT adapter. Follow the OPD quickstart.

Supported hardware and runtime boundary

miniVERL runs one local process on CPU or one NVIDIA CUDA GPU. The CUDA path is device-name agnostic, but fit depends on model pair, context, kernels and VRAM. Install the matching CUDA-enabled PyTorch build first, then miniverl[train,cuda]; that extra does not select a CUDA PyTorch wheel. Ray, FSDP, Megatron, PPO, GRPO and distributed launch are outside the runtime. See the single-GPU guide.

verl compatibility summary

The executable profile targets official verl v0.8.0 at commit 7aed6b23 and supports one actor, one teacher, n=1, pure GKD forward_kl_topk, token-mean aggregation, LoRA/QLoRA and no reward/KL penalty. PG OPD, task-reward mixtures, multi-teacher, multimodal and distributed fields fail closed.

Compatible OPD exports contain no reward scaffold. They preserve student and teacher identities, Parquet bytes and OPD overrides, but remain launchable: false until exact base snapshots are materialized. Parse status, artifact loadability, launchability and distributed execution are separate. Read the bridge contract.

Measured RTX 4080 runtime

The packaged Qwen3-0.6B/1.7B recipe completed two 16-token rollouts and one OPD update with 3.1758 GiB peak reserved VRAM; the first update completed in 12.0224 s and the standard PEFT adapter reloaded successfully. This proves one runtime/artifact path only—no alignment-quality endpoint or method comparison ran. Exact recipe, timings and hashes.

Three paths

Path Start with Concrete artifact Next
Run OPD locally miniverl plan --profile verl-opd-v0.8-single-gpu-v1 --config verl-opd.yaml compiled plan, trajectories, targets and PEFT adapter Plan and run
Bring a verl config miniverl import-verl --profile verl-opd-v0.8-single-gpu-v1 --config verl-opd.yaml --out local-opd.yaml field report plus round-trippable profile Compatibility
Move data and artifacts miniverl export-verl --run runs/my-opd --target-verl v0.8.0 --out scaleout Parquet + PEFT + OPD override bundle Bridge contract

Research notes and preserved negative evidence

v0.7 External Alignment Gate

The preregistered external study stopped before teacher or method training. Both declared starting-policy lineages scored 0/64 retained JSONNav utility for every candidate against the unchanged 20% floor.

selected checkpoints qualified teachers continuation arms final-test tasks accessed
0 0 0 0
miniverl pilot --builtin-study alignment-external-v1 --json

The result is do_not_continue_this_study and insufficient_evidence, not a recommendation among SFT/DPO/KD/OPD. Granite Guardian values are unqualified selection diagnostics; Granite, PairRM and teacher qualification and the reserved final test did not run. Study and limitations.

Earlier measured alignment case study

Alignment Lab v1 began from an SFT checkpoint already at 100% policy compliance and 100% retained tool utility in all three seeds. No continuation improved the ceiling; continued SFT and both OPD variants retained measured regressions. The two sandbox safety checks tied at zero while utility still regressed. IFEval, XSTest, HarmBench and RewardBench were not executed, and “preference win rate” is a deterministic Minipolicy paired outcome, not human preference. Seed-level evidence.

New runs establish tokenizer compatibility through structural identity. The legacy behavioral fingerprint is only a migration fallback, not identity proof.

Develop

git clone https://github.com/DaoyuanLi2816/mini-verl.git
cd mini-verl
python -m pip install -e ".[dev]"
pytest -q -m "not gpu and not network"

Apache-2.0 licensed. See CONTRIBUTING.md, SECURITY.md, the changelog and citation. Project records: default GPU recipe, frozen calculator result and license.

Release files for miniverl 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for miniverl 0.8.0
File Size Uploaded
miniverl-0.8.0.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for miniverl 0.8.0
File Interpreter ABI Platform
miniverl-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.8 MB

Release files / miniverl-0.8.0.tar.gz

Download URL miniverl-0.8.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
c2a6576c4583990900baa0f2b36c25fe37959c6bb773d29529cf50606a7dc175
BLAKE2b-256 checksum
How to use checksums
e9a3baefdf179381721f6f59b31758154d124f30efeb9a73c7919a8aa63296a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / miniverl-0.8.0-py3-none-any.whl

Download URL miniverl-0.8.0-py3-none-any.whl
Size 479.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1f1e608f894bc79451db752412fd82101b327ab74ffa7726ebcc98aeb66c57b9
BLAKE2b-256 checksum
How to use checksums
a5ab92a16e4c9a5f68f0ec929498d9ce2798b12e0d0c201cfa1e18ce715d9fcc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.16.0

2 release files

0.15.0

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.1

2 release files

This release

0.8.0 This release

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page