Compatibility profiles¶
A miniVERL compatibility profile is a closed, versioned contract that binds an accepted schema and its field rules to one upstream repository, tag and commit. Native-compiler, loss-conformance and export versions travel with that identity.
The v0.8 OPD family is exposed through the profiles registry. The newer
verl-rl-v0.9-single-gpu-v1 compiler is invoked through import-verl; its
machine-readable field report is the profile inspection surface while the
registry API is generalized in a future compatible change.
miniverl profiles list
miniverl profiles show verl-opd-v0.8-single-gpu-v1
miniverl profiles schema verl-opd-v0.8-single-gpu-v1 --json
profiles show includes a copyable resolved YAML example and override command.
The packaged registry is data-only, so profile inspection stays deterministic.
Check a resolved profile¶
miniverl compat explain \
--profile verl-opd-v0.8-single-gpu-v1 \
actor_rollout_ref.actor.ppo_mini_batch_size
miniverl compat check \
--profile verl-opd-v0.8-single-gpu-v1 \
--config verl-opd.yaml \
--accept-local-reinterpretations --json
The report distinguishes the selected algorithm, effective fields, local reinterpretations, informational fields and out-of-profile values. Each effective field is also covered by mutation-based field-effect evidence.
Independent artifact identity¶
New immutable plans, native run manifests, teacher caches, checkpoints and scale-out reports carry the complete profile identity. Changing any version axis produces a new digest, and a later algorithm path receives its own profile name.
Which profile should I use?¶
For PPO, start with:
miniverl import-verl --profile verl-rl-v0.9-single-gpu-v2 \
--config examples/verl-rl-v0.9-single-gpu-ppo.yaml --out local-ppo.yaml
It supports PPO/GAE with an independent critic against the pinned verl v0.9 contract. The v1 profile remains available for GRPO, Dr.GRPO, RLOO and REINFORCE++; read Single-GPU verl RL.
| Profile | Objective | Teacher target | Trade-off | Status |
|---|---|---|---|---|
verl-opd-v0.8-single-gpu-v1 |
direct GKD forward_kl_topk |
top-k token IDs and log-probabilities | fuller distributional signal; larger target artifact | measured |
verl-opd-v0.8-single-gpu-pg-k1-v1 |
sampled k1 + vanilla policy loss |
sampled-token teacher log-probability | sampled-token signal; smaller target artifact | measured |
verl-opd-v0.8-single-gpu-grouped-v1 |
direct GKD over independent grouped samples | top-k token IDs and log-probabilities | configurable n>1; no group baseline |
conformance only |
verl-opd-v0.8-single-gpu-pg-k1-grouped-v1 |
sampled k1 over independent grouped samples |
sampled-token teacher log-probability | configurable n>1; no GRPO estimator |
conformance only |
verl-opd-v0.8-single-gpu-pg-k1-rewarded-v1 |
task reward + sampled k1 through vanilla policy loss |
sampled-token teacher log-probability + deterministic exact-answer reward | explicit group transform; no critic or value model | conformance only |
The first four profiles are reward-free. The rewarded profile is a separate,
strict current-policy contract with a closed deterministic provider and
versioned task/distillation advantage composition. All five use one actor and
one teacher on one CUDA GPU. The PG profiles retain the pinned vanilla
policy-loss form. The measured records compare runtime and semantic
conformance; the rewarded profile has no task-quality result yet.
Library callers may inject an object implementing RewardProvider with
reward.provider: python_api; YAML and run artifacts never name or load Python
modules. The built-in verl-shaped RL profile accepts the deterministic
exact_answer and target_length providers.
The group-capable profiles use transactional Parquet prompt groups while
leaving the published n=1 identities unchanged.
See For verl users, the
PG-k1 ADR, and the runtime evidence
for the measured boundary.