8000 Prepare v0.10.1 release metadata by DaoyuanLi2816 · Pull Request #86 · DaoyuanLi2816/mini-verl · GitHub
[go: up one dir, main page]

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ All notable changes to miniVERL are recorded here. The format follows

## [Unreleased]

## [0.10.1] - 2026-08-16

### Product maturity and release qualification

- Added a strict, torch-free candidate and GPU qualification chain: a hosted
Expand All @@ -14,6 +16,15 @@ All notable changes to miniVERL are recorded here. The format follows
- Hardened release artifact discovery against expired, fork, wrong-workflow,
cross-run, duplicate, traversal and symlink inputs. Release publication now
reuses the qualified candidate bytes and performs no distribution rebuild.
- Stripped authorization, proxy-authorization and cookie headers on
cross-origin artifact redirects; validated declared evidence byte counts in
addition to paths, regular-file type and SHA-256.
- Made GPU qualification dispatches single-attempt, required full
qualification rather than diagnostic smoke for formal releases, and retained
the complete versioned evidence set with a dedicated checksum inventory.
- Added fail-closed PyPI idempotency: an existing version skips publication
only when its complete wheel/sdist filename and SHA-256 set exactly matches
the candidate.
- Added a machine-readable maintainer-measured CUDA stack with exact top-level
constraints while preserving flexible package dependency ranges.
- Extended canonical release-state checks to security support and current
Expand Down Expand Up @@ -1030,7 +1041,8 @@ Same-tokenizer only; one trajectory per forward pass; `swap` unavailable for
quantized models; only Qwen3 and Qwen2 architectures tested; single-seed GPU
results. The full list is in `docs/limitations.md`.

[Unreleased]: https://github.com/DaoyuanLi2816/mini-verl/compare/v0.10.0...HEAD
[Unreleased]: https://github.com/DaoyuanLi2816/mini-verl/compare/v0.10.1...HEAD
[0.10.1]: https://github.com/DaoyuanLi2816/mini-verl/compare/v0.10.0...v0.10.1
[0.10.0]: https://github.com/DaoyuanLi2816/mini-verl/compare/v0.9.1...v0.10.0
[0.9.1]: https://github.com/DaoyuanLi2816/mini-verl/compare/v0.9.0...v0.9.1
[0.9.0]: https://github.com/DaoyuanLi2816/mini-verl/compare/v0.8.1...v0.9.0
Expand Down
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ cff-version: 1.2.0
title: "miniVERL: A bounded single-GPU runtime for verl-style OPD"
message: "If you use miniVERL in your work, please cite it as below."
type: software
version: 0.10.0
date-released: 2026-08-14
version: 0.10.1
date-released: 2026-08-16
license: Apache-2.0
repository-code: "https://github.com/DaoyuanLi2816/mini-verl"
url: "https://github.com/DaoyuanLi2816/mini-verl"
Expand Down
10 changes: 5 additions & 5 deletions PROJECT_STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ Current maintainer handoff for **miniVERL** (`mini-verl` package, `miniverl`
CLI). `release-state.yaml` is the canonical version source; this page indexes
current product and evidence state rather than repeating release history.

Last updated: 2026-08-15.
Last updated: 2026-08-16.

Canonical release state: stable `v0.10.0` (`51264f86e8226b1abc6ca1901d379c5e6fabb81e`), development `0.10.1.dev0`.
Canonical release state: releasing `v0.10.1`.

## Release state

- Stable: `v0.10.0` at `51264f86e8226b1abc6ca1901d379c5e6fabb81e`.
- Development: `0.10.1.dev0`.
- Release candidate: `v0.10.1`; the merge commit is assigned by the release PR.
- Previous stable: `v0.10.0` at `51264f86e8226b1abc6ca1901d379c5e6fabb81e`.
- Stable docs: <https://daoyuanli2816.github.io/mini-verl/>.
- Development docs: <https://daoyuanli2816.github.io/mini-verl/dev/>.
- Historical build log: [v0.1-v0.9 archive](docs/history/project-state-v0.1-v0.9.md).
Expand All @@ -31,7 +31,7 @@ Executable compatibility claims are mutation-tested and recorded in
unknown-size quantized roles require proof instead of receiving an executable
plan.

Development `0.10.1.dev0` has a closed typed profile registry and torch-free
Release `0.10.1` has a closed typed profile registry and torch-free
compatibility introspection. Profile-scoped plans, caches, checkpoints and
exports bind an independent identity. The direct-GKD and sampled-k1 vanilla
policy-loss profiles both have pinned conformance and measured RTX 4080 paths.
Expand Down
54 changes: 27 additions & 27 deletions PYPI.md
8BD0
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="https://raw.githubusercontent.com/DaoyuanLi2816/mini-verl/main/docs/banner.svg" alt="miniVERL — run verl-style OPD on one consumer GPU" width="880">
<img src="https://raw.githubusercontent.com/DaoyuanLi2816/mini-verl/v0.10.1/docs/banner.svg" alt="miniVERL — run verl-style OPD on one consumer GPU" width="880">
</p>

<div align="center">
Expand All @@ -8,15 +8,15 @@
[![Build](https://github.com/DaoyuanLi2816/mini-verl/actions/workflows/build.yml/badge.svg)](https://github.com/DaoyuanLi2816/mini-verl/actions/workflows/build.yml)
[![PyPI](https://img.shields.io/pypi/v/miniverl.svg)](https://pypi.org/project/miniverl/)
[![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue)](https://www.python.org)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DaoyuanLi2816/mini-verl/blob/main/LICENSE)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/LICENSE)

</div>

<p align="center">
<a href="https://pypi.org/project/miniverl/"><strong>PyPI</strong></a> ·
<a href="https://daoyuanli2816.github.io/mini-verl/"><strong>Stable docs</strong></a> ·
<a href="https://daoyuanli2816.github.io/mini-verl/dev/">Development docs</a> ·
<a href="https://github.com/DaoyuanLi2816/mini-verl/blob/main/README.zh-CN.md">中文</a>
<a href="https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/README.zh-CN.md">中文</a>
</p>

**Run a documented subset of verl-style on-policy distillation on one consumer
Expand All @@ -25,7 +25,7 @@ rollout → teacher scoring → actor update, records every local reinterpretati
and exports standard PEFT, Parquet and config artifacts for a pinned scale-out
handoff.

PyPI `v0.10.0` is stable; `main` is development. miniVERL is an independent
PyPI `v0.10.1` is stable; `main` is development. miniVERL is an independent
project with no upstream endorsement. It does not execute arbitrary verl YAML,
launch distributed jobs, or claim full algorithmic compatibility.

Expand Down Expand Up @@ -62,15 +62,15 @@ miniverl bridge doctor scaleout --json

The `train` extra installs the ML runtime, but does not choose the correct CUDA
PyTorch wheel. The optional `cuda` extra adds bitsandbytes only. Follow the
[one-GPU installation and memory guide](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/single-gpu-guide.md) for both the
[one-GPU installation and memory guide](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/single-gpu-guide.md) for both the
flexible install and the machine-readable RTX 4080 known-good stack. Hardware
other than that one measured RTX 4080 remains unmeasured.

## Architecture

<picture>
<source media="(max-width: 640px)" srcset="https://raw.githubusercontent.com/DaoyuanLi2816/mini-verl/main/docs/verl-local-runtime-mobile.svg">
<img src="https://raw.githubusercontent.com/DaoyuanLi2816/mini-verl/main/docs/verl-local-runtime.svg" alt="verl-shaped YAML, overrides and Parquet prompts pass through a typed compiler; one CUDA GPU runs actor rollout, teacher scoring and actor update; inspectable artifacts can be handed to pinned verl while distributed execution remains outside miniVERL.">
<source media="(max-width: 640px)" srcset="https://raw.githubusercontent.com/DaoyuanLi2816/mini-verl/v0.10.1/docs/verl-local-runtime-mobile.svg">
<img src="https://raw.githubusercontent.com/DaoyuanLi2816/mini-verl/v0.10.1/docs/verl-local-runtime.svg" alt="verl-shaped YAML, overrides and Parquet prompts pass through a typed compiler; one CUDA GPU runs actor rollout, teacher scoring and actor update; inspectable artifacts can be handed to pinned verl while distributed execution remains outside miniVERL.">
</picture>

miniVERL uses one ordinary process and schedules model roles in phases. It does
Expand Down Expand Up @@ -126,13 +126,13 @@ miniverl plan --profile verl-opd-v0.8-single-gpu-v1 --config verl-opd.yaml \

External YAML must explicitly accept the high-risk local mappings printed by
`plan` before `run`; the packaged profile carries a value-bound reviewed
manifest. [Override precedence and safe input forms](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/config-overrides.md)
manifest. [Override precedence and safe input forms](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/config-overrides.md)
are documented without executing Hydra interpolation or shell text.

The public built-in profile deliberately uses upstream-shaped `name: vllm`
values. miniVERL classifies both rollout and teacher engine names as local
reinterpretations and executes them with sequential local HF phases; this is
not vLLM equivalence. See [For verl users](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/for-verl-users.md) for config,
not vLLM equivalence. See [For verl users](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/for-verl-users.md) for config,
data, role and error mappings.

## Tested profile boundary
Expand Down Expand Up @@ -173,21 +173,21 @@ with a 64-token response bound, and completed **8 current-policy updates** at
**3.1914 GiB peak reserved VRAM**. Median steady-state rollout, teacher-scoring
and update times were 9.7200, 0.4864 and 2.3260 seconds. A matched 4-update
interruption resumed to the same byte-identical trajectories, adapter and
optimizer tensors. See the [data-bound figure and full record](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/verl-opd-reference-workload.md);
the original one-update [pip smoke](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/opd-quickstart.md) remains preserved.
optimizer tensors. See the [data-bound figure and full record](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/verl-opd-reference-workload.md);
the original one-update [pip smoke](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/opd-quickstart.md) remains preserved.
A separate pinned SmolLM2-360M/1.7B recipe consumed 32 distinct prompts across
8 updates at 1.4961 GiB peak reserved VRAM. Interruption/resume was
byte-identical, PEFT reload passed, and the exact-snapshot scale-out bundle
materialized successfully. See the [full SmolLM2 systems record](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/smollm2-opd-workload.md).
materialized successfully. See the [full SmolLM2 systems record](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/smollm2-opd-workload.md).

This is deliberately a runtime and artifact proof. It is not a throughput
benchmark, an alignment-quality endpoint, or evidence that OPD beats SFT, DPO
or KD. Other NVIDIA GPUs use the same device-name-agnostic CUDA path, but model
fit depends on VRAM, context length, quantization and installed kernels; they
remain unmeasured. The [release qualification contract](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/release-qualification.md)
remain unmeasured. The [release qualification contract](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/release-qualification.md)
builds one candidate wheel on a hosted runner and qualifies those exact bytes
on the RTX 4080 before any release can reuse them, while the
[upstream support policy](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/upstream-support-policy.md) keeps both published
[upstream support policy](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/upstream-support-policy.md) keeps both published
profile identities fixed. Runner activation is not described as continuous CI.

### Choose a path by hardware, not GPU branding
Expand All @@ -203,7 +203,7 @@ Automatic BF16/FP16 selection follows device support; it is not inferred from
marketing names such as 3070, 4080, 5090 or Titan. `miniverl doctor` reports the
installed CUDA/PyTorch path. Normal planning is weight-free; explicit
`plan --probe` adds bounded, cached CUDA measurements with zero optimizer
updates. See [hardware planning](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/hardware-planning.md). There is no
updates. See [hardware planning](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/hardware-planning.md). There is no
automatic downgrade to a different model,
teacher, context, top-k or loss when memory is tight.

Expand All @@ -215,7 +215,7 @@ miniverl hardware validate hardware-record.json
```

Community records remain unreviewed until their hashes and provenance pass the
[documented maintainer gate](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/community-benchmarks.md).
[documented maintainer gate](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/community-benchmarks.md).

## Data and artifact interoperability

Expand All @@ -241,30 +241,30 @@ The v0.9 export preserves student/teacher identities, Parquet bytes and pure
OPD overrides, but reports `launchable: false` until exact base snapshots are
materialized and validated against the installed pinned verl commit. Only then
does `bridge materialize` publish a checksummed `launch.sh`; distributed
execution remains untested. Review the [current scale-out contract](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/verl-opd-scaleout.md),
[legacy bridge](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/legacy-verl-bridge.md) and [compatibility policy](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/compatibility.md).
execution remains untested. Review the [current scale-out contract](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/verl-opd-scaleout.md),
[legacy bridge](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/legacy-verl-bridge.md) and [compatibility policy](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/compatibility.md).

The intended operating loop is **plan → inspect → run → inspect → export**.
`plan --out` byte-binds the YAML, ordered overrides and scanned Parquet inputs
to the exact native config; `run --plan` rejects drift before loading weights.
Its digest follows the run manifest, teacher cache and checkpoints. Direct
`run --config` remains available for experiments. See [immutable execution
plans](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/immutable-plans.md).
plans](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/immutable-plans.md).

## Research and validation

miniVERL keeps every measured study—including negative results, superseded
runs and preregistered early stops—public under the documentation. None is used
as a claim that OPD universally beats SFT, DPO or KD: see the
[v0.7 External Alignment Gate](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/alignment-external/alignment-external-v1.md),
[Alignment Lab](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/alignment-lab/alignment-lab-v1.md),
[RecoveryBench](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/recoverybench/recoverybench-v1.md), and the
[calculator study](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/benchmarking.md).
[v0.7 External Alignment Gate](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/alignment-external/alignment-external-v1.md),
[Alignment Lab](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/alignment-lab/alignment-lab-v1.md),
[RecoveryBench](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/recoverybench/recoverybench-v1.md), and the
[calculator study](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/benchmarking.md).

New runs establish tokenizer compatibility through structural identity. The
legacy behavioral fingerprint is retained only for migration and is not an
identity proof. Scientific caveats and immutable source hashes remain in the
detailed reports and [limitations](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/limitations.md).
detailed reports and [limitations](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/limitations.md).

## Development, security and license

Expand All @@ -277,6 +277,6 @@ pytest -q -m "not gpu and not network"

Contributions should keep the one-GPU boundary explicit and include tests for
new failure modes. Report vulnerabilities privately through
[SECURITY.md](https://github.com/DaoyuanLi2816/mini-verl/blob/main/SECURITY.md). See [CONTRIBUTING.md](https://github.com/DaoyuanLi2816/mini-verl/blob/main/CONTRIBUTING.md), the
[changelog](https://github.com/DaoyuanLi2816/mini-verl/blob/main/CHANGELOG.md), [citation metadata](https://github.com/DaoyuanLi2816/mini-verl/blob/main/CITATION.cff),
[reproducibility guide](https://github.com/DaoyuanLi2816/mini-verl/blob/main/docs/reproducibility.md), and [Apache-2.0 license](https://github.com/DaoyuanLi2816/mini-verl/blob/main/LICENSE).
[SECURITY.md](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/SECURITY.md). See [CONTRIBUTING.md](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/CONTRIBUTING.md), the
[changelog](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/CHANGELOG.md), [citation metadata](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/CITATION.cff),
[reproducibility guide](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/docs/reproducibility.md), and [Apache-2.0 license](https://github.com/DaoyuanLi2816/mini-verl/blob/v0.10.1/LICENSE).
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ rollout → teacher scoring → actor update, records every local reinterpretati
and exports standard PEFT, Parquet and config artifacts for a pinned scale-out
handoff.

PyPI `v0.10.0` is stable; `main` is development. miniVERL is an independent
PyPI `v0.10.1` is stable; `main` is development. miniVERL is an independent
project with no upstream endorsement. It does not execute arbitrary verl YAML,
launch distributed jobs, or claim full algorithmic compatibility.

Expand Down
2 changes: 1 addition & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ verl 风格 YAML 与 Parquet prompt,在本地依次执行 actor rollout → te
actor update,记录每个本地语义重解释,并导出标准 PEFT、Parquet 与配置产物供固定版本
的 verl 接手扩展。

PyPI `v0.10.0` 是稳定版;`main` 是开发版。miniVERL 是独立项目,不代表上游背书;它
PyPI `v0.10.1` 是稳定版;`main` 是开发版。miniVERL 是独立项目,不代表上游背书;它
不执行任意 verl YAML、不启动分布式任务,也不声称完整的算法兼容性。

## 仅用 pip 的快速开始
Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Supported versions

The current supported stable line is `0.10.0`; security fixes land on `main` and
The current supported stable line is `0.10.1`; security fixes land on `main` and
in the next patch release. There are no separately maintained older branches.

## Reporting a vulnerability
Expand Down
Loading
0