Training and scope
- One seed (1729), eight native TRL 1.4.0 GRPOTrainer updates with DAPO loss,
group-scaled rewards, beta 0, and one iteration.
- GSM8K train-only: 64 training parents, four samples each, 256 completions.
The 32 disjoint probe parents and 64 future slots never enter the learner.
- BF16 base; rank-16, alpha-32 LoRA on attention/MLP linear projections;
dropout 0; AdamW learning rate 1e-5; microbatch 2, accumulation 16.
- Reward is exact rational agreement of a terminal
#### number, with no
format bonus or zero-variance-group filtering.
- Every shadow arm uses temperature 1, top-p 1, top-k 0, one tokenizer EOS,
and a 512-completion-token cap.
This is a single-GPU sequential mechanism screen. Projected overlap is not
measured overlap. The portable evidence does not retain full vocabulary
probabilities, so it cannot independently replay every verifier calculation.
Parallel scoring and cropped-KV continuation are not established to share the
same trajectory law as fresh incremental generation. The same rollout law and
learner-update kernel remain unverified. This checkpoint has no independent
downstream evaluation, safety qualification, or production-readiness claim.
Measured results
Table with columns: Arm, After-update time / fresh, Draft-inclusive time / fresh, Retained / drafted tokens| Arm | After-update time / fresh | Draft-inclusive time / fresh | Retained / drafted tokens |
|---|
| Fresh target | 1.0000 | 1.0000 | Not applicable |
| Tokenwise | 0.4289 | 1.4278 | 7,574 / 13,512 (56.05%) |
| Block verification | 0.2827 | 1.2816 | 10,167 / 13,512 (75.24%) |
| Suffix cache | 0.8533 | 1.8522 | Not comparable: repeated proposals |
These are ratios of summed measured times across all 64 future slots;
below 1 favors reuse. With S = serial fresh-target time, V = correction/cache
time, and D = draft generation charged once per draw, the two columns are
V/S and (D+V)/S. The shared two-draft cache bank is charged once for its two
outputs. Retention counts are realized outcomes, not probabilities of complete
trajectory acceptance; repeated cache proposals do not share that denominator.
D includes original-law storage during generation. These component ratios
exclude native training collection, optimizer updates, setup, checkpoint/snapshot
overhead and diagnostic work; full before-hook costs and ideal-overlap projections
are separately reported in the analysis. Output lengths and cap counts differ by
arm. The fresh comparator is serial Actor generation, not optimized batched
serving. High retention or a favorable component ratio establishes neither equal
end-to-end sampling laws nor training-throughput improvement.
Evidence and provenance
The complete descriptive analysis is evidence/analysis.json.
portable_experiment.zip contains every original non-weight run artifact,
including the unchanged original hash manifest and checkpoint configurations.
All nine original checkpoints are also available under checkpoints/step-0
through checkpoints/step-8. The root weights equal step 8 byte-for-byte;
only the root adapter configuration receives the pinned base revision.
publication_manifest.json records original/published hashes and omissions.
Source: GitHub PR #13,
frozen protocol/source commit.
The original configurations are historical evidence: when loading an archived
checkpoint, explicitly load the pinned base shown below.
Load with the frozen inference settings
The example pins the initial published weights and inference settings.
The reference environment used Transformers 5.10.1 and PEFT 0.19.1.
import torchfrom peft import PeftModelfrom transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig adapter_repo = "Crusadersk/chimera-rollout-futures-qwen2.5-7b-grpo-screen-20261012"adapter_revision = "7cfa299a9df91a456ddf4e3d180191432cd9303b"base = AutoModelForCausalLM.from_pretrained( "Qwen/Qwen2.5-7B-Instruct", revision="a09a35458c702b33eeacc393d103063234e8bc28", dtype=torch.bfloat16, device_map="auto", trust_remote_code=False,)model = PeftModel.from_pretrained(base, adapter_repo, revision=adapter_revision).eval()tokenizer = AutoTokenizer.from_pretrained(adapter_repo, revision=adapter_revision)model.generation_config = GenerationConfig.from_pretrained(adapter_repo, revision=adapter_revision)messages = [{"role": "user", "content": "What is 17 + 25? Solve the problem and finish with #### followed by the numerical answer."}]inputs = tokenizer.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, return_tensors="pt", return_dict=True,).to(model.device)with torch.inference_mode(): output = model.generate(**inputs, generation_config=model.generation_config)print(tokenizer.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))
The example is ordinary adapter inference. It does not implement or validate
Rollout Futures speculative verification.