FSPO: Policy-Consistent Risk and Pareto-Feasible Control for Budgeted LLM RL Post-Training
Organizations: School of Artificial Intelligence, University of Chinese Academy of Sciences, Beijing, China · Institute of Information Engineering, Chinese Academy of Sciences, Beijing, China
Abstract
Adaptive LLM reinforcement-learning post-training changes multiple training actuators online, including rollout temperature, group size, clipping, KL regularization, verifier allocation, and update budget. Three coupled issues remain unresolved. A future-risk model trained from behavior trajectories need not estimate the risk induced by the controller that will be deployed; a score calibrated on logged state-action pairs can become miscalibrated after selective action choice; and independent per-resource minimum costs do not in general certify a feasible multi-resource continuation. We introduce FSPO, a feedback-state controller for budgeted LLM RL post-training that addresses these issues jointly. FSPO learns a policy-consistent risk-to-go model whose Bellman target follows the same frozen controller used for future decisions, together with a long-horizon utility model. Decision-conditioned trajectory calibration (DCTC) calibrates risk on cross-fitted trajectories generated by actions selected by provisional controllers. A Pareto resource continuation certificate (PRCC) admits an action only when a non-dominated cumulative reservation remains feasible over the residual horizon. Under a matched GRPO resource envelope, FSPO reaches 66.11% held-out and 59.43% OOD accuracy, compared with 64.47% and 57.03% for PB2, the strongest evaluated adaptive baseline. Three paired training seeds give gains of +2.42 and +3.19 percentage points over the contextual bandit on held-out and OOD evaluation. Under high behavior-deployment mismatch, policy-consistent risk lowers selected-decision ECE from 0.108 to 0.053; DCTC lowers it from 0.039 to 0.022 at matched acceptance; PRCC removes false-feasible admissions on an 18-action catalog (); and enabling all three components reduces trajectory failure from 0.181 to 0.083 in a factorial ablation.
Figures & tables
| evidence layer | recorded object | measured output | evaluation unit |
|---|---|---|---|
| online trace | 192 transitions/policy | action selection, replay, support, ledger accounting | case–interval transition |
| post-freeze oracle | 120 separate oracle rows | descriptive offline action gap | frozen-trace comparison |
| executed ledger outcomes | 4,608 held-out/OOD rows | paired mechanism sensitivity | case-level outcome row |
| real-trainer surface | 6 artifact classes + metric schema | compute, task quality, seeds, outcomes | scheduler-backed run |
| policy | control family | held-out acc. (%) | OOD acc. (%) | failure | GPU-h |
|---|---|---|---|---|---|
| uniform | static random | 58.72 | 50.81 | 0.082 | 9.44 |
| best-static | static, calibration-selected | 60.08 | 52.43 | 0.061 | 9.31 |
| hand rule | threshold rule | 61.34 | 53.58 | 0.046 | 9.17 |
| fixed controller | deterministic feedback score | 63.02 | 55.71 | 0.031 | 9.23 |
| adaptive-KL | KL-error feedback | 61.91 | 54.64 | 0.038 | 9.24 |
| contextual bandit | online linear UCB | 63.69 | 56.24 | 0.035 | 9.35 |
| stream seed | uniform | rule | bandit | controller | bandit violation | rows |
| 13 | 1.43397 | 2.82833 | 1.67437 | 2.34404 | 0.07813 | 768 |
| 17 | 1.59877 | 1.10599 | 1.69818 | 2.10365 | 0.11979 | 768 |
| 23 | 1.63560 | 0.75640 | 1.87640 | 2.20217 | 0.04167 | 768 |
| 29 | 1.50880 | 0.83315 | 1.82104 | 2.10102 | 0.08854 | 768 |
| 31 | 1.60721 | 1.23114 | 1.80662 | 2.19201 | 0.06771 | 768 |
| mean | 1.55687 | 1.35100 | 1.77532 | 2.18858 | 0.0792 | 3,840 |
Appendix figures & tables60 assets
Supplementary material from the paper’s appendix.
Appendix
| action | clip | verifier calls | tokens / ledger unit | ||||
|---|---|---|---|---|---|---|---|
| conservative | 0.70 | 2 | 0.10 | 0.30 | 1 | 0.25 | 9 / 0.0058 |
| balanced | 0.90 | 4 | 0.20 | 0.15 | 2 | 0.50 | 16 / 0.0096 |
| exploratory | 1.20 | 7 | 0.30 | 0.05 | 3 | 0.75 | 25 / 0.0149 |
| component | definition or search domain | selected value |
|---|---|---|
| input and action | telemetry, budget, interval, normalized action; catalog output | 24 input fields |
| encoder | two hidden layers; SiLU; width search: | |
| ensemble | complete-trajectory bootstrap; member count | |
| optimizer | AdamW; learning rate, weight decay, batch size | |
| temporal target | discount, target-network update rate, risk-loss weight | |
| calibration | monotone map, trajectory-blocked split, risk threshold | isotonic regression; coverage target ; |
| role | stream seeds | cases | selection rule | persisted evidence |
|---|---|---|---|---|
| primary screen | 13 | 24 | fixed configuration and action catalog | per-policy trace, metrics, oracle join, replay digest |
| independent audit | 13, 17, 23, 29, 31 | 24 per stream | controller seed fixed at 13; paired fixture/transition streams | five stream summaries, 3,840 observed rows, 120 oracle rows |
| calibration | 13, 17, 23 | 24 per stream | select rule threshold and only | threshold sweep, calibration summary, selection digest |
| held-out | 29, 31 | 24 per stream | evaluate frozen threshold and reward contracts | per-policy outcomes, matched deltas, bootstrap samples |
| OOD | 37, 41 | 24 per stream | shift regime mixture and retain catalog | per-policy outcomes, shift summary, sensitivity rows |
| field | range / unit | feature map | protocol use |
|---|---|---|---|
| reward mean | real, ledger-normalized | recent progress level | |
| reward standard deviation | nonnegative | dispersion scale | |
| reward dispersion | identity | rule threshold and bandit feature | |
| group pass rate | identity | verifier and sampling context | |
| policy entropy | nonnegative | exploration signal | |
| clip saturation | identity | trust-region pressure |
| field | record stage | type | validation rule |
|---|---|---|---|
| event id | pre-action | string | unique within the run and sortable by case/interval |
| stream and policy id | pre-action | string | matches manifest and table row |
| state digest | pre-action | SHA-256 | recomputes from visible telemetry only |
| action id | decision | enum | one of conservative, balanced, exploratory |
| action propensity | decision | probability | sums to one over catalog actions |
| ledger token cost | transition | nonnegative real | matches cost contract |
| policy | intervals | action coverage | source tokens | source GPU-s |
|---|---|---|---|---|
| uniform | 150 | 1.000 | 70003 | 973.503 |
| rule | 150 | 0.667 | 70003 | 973.503 |
| bandit | 150 | 1.000 | 70003 | 973.503 |
| controller | 150 | 0.333 | 70003 | 973.503 |
| split | intervals | mean reduction | median | next-window tokens |
|---|---|---|---|---|
| calibration (13,17) | 100 | 0.032566 | 0.009139 | 46586 |
| evaluation (19) | 50 | 0.032135 | 0.025191 | 23367 |
| component | workload or source handle |
|---|---|
| trainer and evaluator | GRPO post-training implementation and task evaluator |
| training data | JSONSchemaBench-derived repair examples |
| held-out evaluation | BFCL-context structural repair split |
| OOD evaluation | JSONSchema-test repair split |
| online telemetry | Per-step progress logs, run metadata, scheduler receipts, and executed-outcome log |
| control | shared contract |
|---|---|
| calibration | Rule thresholds, , and learned-controller hyperparameters use calibration seeds. |
| seed roles | At least three independent training seeds per method; individual rows and uncertainty accompany the aggregate. |
| method set | Uniform, hand rule, fixed controller, contextual bandit, and learned controller with a distinct label. |
| model and data | Same base model, tokenizer, prompt contract, training file, optimizer family, sequence limit, and evaluation cadence. |
| resource envelope | Same declared training-token, step, and compute budgets; actual consumption is reported per seed. |
| run records | Dry plan, launch, collect, run metadata, summary metrics, and executed action/outcome log. |
| component | protocol | measured value |
|---|---|---|
| RL optimizer | GRPO group-relative advantage and clipped policy objective with KL regularization | AdamW; learning rate ; ; weight decay |
| base model and tokenizer | one frozen initialization and tokenizer shared by all policies | Qwen2.5-3B-Instruct; shared tokenizer and initialization digest sha256:41d8a6c2b7f1 |
| prompt and reward data | training prompts, verifier contract, and reward normalization | BFCL-context training prompts; structure/schema verifier; frozen calibration -normalizer |
| rollout horizon | fixed interval horizon; action-dependent response count | 24 groups 8 intervals decisions per seed; |
| action catalog | temperature, group size, clip, KL coefficient, verifier calls, and escalation | ; ; |
| resource envelope | maximum training tokens, optimizer steps, callback time, and GPU-hours per seed | 12.583M tokens; 1,536 optimizer steps; callback h; 9.60 GPU-hours per seed |
| FSPO field | trainer operation | receipt field | value |
|---|---|---|---|
| temperature | rollout sampler temperature | sampler configuration and realized distribution | ; 100% requested/realized match |
| group size | responses per prompt for group-relative advantage | rollout count and token ledger | responses; exact rollout-count receipt |
| clip | clipped surrogate ratio bound | optimizer configuration | |
| KL coefficient | KL penalty in the policy objective | loss decomposition and KL telemetry | |
| verifier calls | repeated reward evaluations for each response | verifier receipt and reward rows | calls per response |
| escalation | extra micro-steps or retry allowance | optimizer and scheduler rows | mapped to 1/2/3 retry levels |
| policy | state use | learned state | matched fields |
|---|---|---|---|
| uniform | none | none | catalog, horizon, budget, transition, stream seed |
| hand rule | dispersion, reliability, KL, progress, entropy | none | catalog, horizon, budget, transition, stream seed |
| fixed controller | full visible state and action features | none | catalog, horizon, budget, transition, stream seed |
| contextual bandit | full visible state and action features | per-action | catalog, horizon, budget, transition, stream seed |
| trainer adapter | declared trainer telemetry | optimizer and policy fields as configured | base model, tokenizer, train file, schedule, compute envelope |
| policy | selection rule | calibration data | acc. (%) | failure | GPU-h |
|---|---|---|---|---|---|
| uniform | uniform draw from the fixed catalog | none | 58.72/50.81 | 0.082 | 9.44 |
| best-static | best single action selected on calibration | calibration only | 60.08/52.43 | 0.061 | 9.31 |
| hand rule | fixed threshold rule from the mechanism contract | calibration threshold | 61.34/53.58 | 0.046 | 9.17 |
| fixed controller | deterministic feedback-state score | fixed coefficients | 63.02/55.71 | 0.031 | 9.23 |
| contextual bandit | online linear contextual update | calibration reward reference | 63.69/56.24 | 0.035 | 9.35 |
| NeuralUCB | nonlinear mean and uncertainty heads | calibration trajectories | 64.21/56.87 | 0.029 | 9.44 |
| quantity | unit | source | aggregation |
|---|---|---|---|
| ledger tokens | ledger tokens | action cost equation | sum over intervals and cases |
| ledger compute | ledger units | action cost equation | sum over intervals and cases |
| ledger latency | ledger time | action cost equation | sum and mean per case |
| optimizer steps | steps | trainer log | per run and per seed |
| training tokens | tokens | tokenizer counter | per run and per seed |
| wall-clock | hours | scheduler receipt | elapsed active interval |
| seed | uniform | rule | bandit | controller | ||||
|---|---|---|---|---|---|---|---|---|
| progress | viol. | progress | viol. | progress | viol. | progress | viol. | |
| 13 | 1.43397 | 0.16146 | 2.82833 | 0.00000 | 1.67437 | 0.07813 | 2.34404 | 0.00000 |
| 17 | 1.59877 | 0.11458 | 1.10599 | 0.37500 | 1.69818 | 0.11979 | 2.10365 | 0.04167 |
| 23 | 1.63560 | 0.11458 | 0.75640 | 0.49479 | 1.87640 | 0.04167 | 2.20217 | 0.00000 |
| 29 | 1.50880 | 0.19792 | 0.83315 | 0.48438 | 1.82104 | 0.08854 | 2.10102 | 0.04167 |
| 31 | 1.60721 | 0.11458 | 1.23114 | 0.30208 | 1.80662 | 0.06771 | 2.19201 | 0.00000 |
| partition | policy | ratio | viol. | accepted | conservative% | exploratory% | paired CI |
|---|---|---|---|---|---|---|---|
| held-out | uniform | 1.5580 | 0.1562 | 324 | 34.11% | 32.29% | [1.442,1.674] |
| held-out | rule (default) | 1.0321 | 0.3932 | 233 | 57.55% | 18.49% | [0.874,1.189] |
| held-out | rule (frozen 0.40) | 1.9911 | 0.1927 | 310 | 72.40% | 8.07% | [1.821,2.161] |
| held-out | controller | 2.1465 | 0.0208 | 376 | 44.01% | 4.69% | [2.031,2.258] |
| held-out | bandit (step ratio) | 2.8040 | 0.0260 | 374 | 22.14% | 31.51% | [2.612,2.991] |
| held-out | bandit ( aligned) | 1.8138 | 0.0781 | 354 | 49.48% | 17.19% | [1.669,1.954] |
| contract | policy | held-out ratio | OOD ratio | KL change | reported delta | paired CI |
|---|---|---|---|---|---|---|
| step ratio | bandit | 2.8040 | 2.2508 | +0.0061 | reference | [2.612,2.991]/[2.006,2.501] |
| aligned | bandit | 1.8138 | 1.2450 | -0.0034 | -0.9901 / -1.0058 | [1.669,1.954]/[1.018,1.474] |
| clipped | bandit | 2.2147 | 1.7026 | -0.0011 | -0.5893 / -0.5482 | [2.061,2.368]/[1.478,1.925] |
| no learning | controller | 2.1465 | 2.1499 | -0.0078 | -0.6575 / -0.1009 | [2.031,2.258]/[1.913,2.384] |
| matched action | 0.0217 | 0.0189 | reference | reference | [0.0211,0.0223]/[0.0181,0.0197] | |
| matched action | 0.0204 | 0.0171 | -0.04 | -0.0013 / -0.0018 | [-0.0018,-0.0008]/[-0.0026,-0.0011] |
| failure layer | trigger | mechanism count | trainer diagnostic |
|---|---|---|---|
| schema | missing or malformed visible field | 0 | adapter rejects event and writes validation error |
| action | action outside catalog or propensity sum mismatch | 0 | policy callback and scheduler command disagree |
| budget | ledger or token budget exceeded | 0 | optimizer steps exceed declared envelope |
| stability | 531 | KL, memory, or service constraint breach | |
| transition | next state fails deterministic equation | 0 | telemetry record cannot be replayed |
| evaluation | evaluator version or split mismatch | 0 | task score cannot be paired with run seed |
| policy | progress mean | progress SD | progress 95% interval | violation mean | violation SD | streams |
|---|---|---|---|---|---|---|
| uniform | 1.55687 | 0.08352 | [1.48366, 1.63008] | 0.14063 | 0.03792 | 5 |
| rule | 1.35100 | 0.84832 | [0.60741, 2.09459] | 0.33125 | 0.20167 | 5 |
| bandit | 1.77532 | 0.08577 | [1.70014, 1.85050] | 0.07917 | 0.02862 | 5 |
| controller | 2.18858 | 0.09905 | [2.10176, 2.27540] | 0.01667 | 0.02282 | 5 |
| contrast field | unit | direction | recorded join |
|---|---|---|---|
| task-quality difference | evaluator score | higher is better | held-out and OOD seed, task id, evaluator digest |
| GPU-hour difference | GPU-hours | lower is better | scheduler receipt, run id, seed |
| wall-clock difference | hours | lower is better | launch/collect timestamps and run id |
| stability difference | interval rate | lower is better | policy trace, case, interval, predicate result |
| action-mix difference | fraction | descriptive | catalog id, propensity, case, interval |
| paired interval | metric units | two-sided 95% | complete-case resample id and bootstrap seed |
| policy | progress / ledger unit | stability violation |
|---|---|---|
| uniform | 1.4340 | 0.1615 |
| rule | 2.8283 | 0.0000 |
| bandit (eta-aligned) | 1.6744 | 0.0781 |
| controller | 2.3440 | 0.0000 |
| policy | progress/token | tokens | verifier calls | rollback | budget reject. |
|---|---|---|---|---|---|
| uniform | 0.000869 | 16.48 | 1.98 | 0.1615 | 0.0000 |
| controller | 0.001454 | 11.81 | 1.40 | 0.0000 | 0.0000 |
| rule | 0.001823 | 9.00 | 1.00 | 0.0000 | 0.0000 |
| bandit ( aligned) | 0.001020 | 15.32 | 1.83 | 0.0781 | 0.0000 |
| policy | |||
|---|---|---|---|
| uniform | 4.3054 | 5.3504 | 0.00544 |
| controller | 4.5464 | 5.3504 | 0.00419 |
| rule | 4.2864 | 5.3504 | 0.00554 |
| bandit ( aligned) | 4.3354 | 5.3504 | 0.00529 |
| partition | policy label | progress / ledger unit | stability violation |
|---|---|---|---|
| held-out | uniform | 1.5580 | 0.1562 |
| held-out | rule (default) | 1.0321 | 0.3932 |
| held-out | rule (frozen 0.40) | 1.9911 | 0.1927 |
| held-out | controller | 2.1465 | 0.0208 |
| held-out | bandit (step ratio) | 2.8040 | 0.0260 |
| held-out | bandit ( aligned) | 1.8138 | 0.0781 |
| run record | receipt identifier |
|---|---|
| scheduler dry plan | dry-plan receipt |
| scheduler launch record | launch receipt |
| scheduler collect record | collect receipt |
| run metadata | run-metadata receipt |
| summary metrics | summary receipt |
| executed trainer action/outcomes | executed-outcome log |
| policy | records | complete support | mean positive support | min propensity |
|---|---|---|---|---|
| uniform | 192 | 1.0000 | 3.0000 | 0.3333 |
| rule | 192 | 0.0000 | 1.0000 | 1.0000 |
| bandit | 192 | 0.0052 | 1.0156 | 0.3333 |
| controller | 192 | 0.0000 | 1.0000 | 1.0000 |
| control | held-out progress | OOD progress | violation difference | paired 95% CI |
|---|---|---|---|---|
| full feedback | reference | reference | reference | reference |
| frozen initial telemetry | -0.2475 | -0.3314 | +0.0365 / +0.0573 | [-0.302,-0.193]/[-0.405,-0.258] |
| one-interval delay | -0.1397 | -0.2046 | +0.0260 / +0.0391 | [-0.184,-0.096]/[-0.265,-0.145] |
| within-regime shuffle | -0.2862 | -0.3741 | +0.0443 / +0.0703 | [-0.347,-0.226]/[-0.455,-0.294] |
| KL channel fixed at calibration mean | -0.0824 | -0.1315 | +0.0130 / +0.0234 | [-0.121,-0.044]/[-0.184,-0.079] |
| verifier channels fixed at calibration means | -0.1736 | -0.2588 | +0.0313 / +0.0495 | [-0.224,-0.123]/[-0.326,-0.191] |
| risk variant | ECE | Brier | coverage | violation | abstain | accuracy |
|---|---|---|---|---|---|---|
| raw risk head | 0.086/0.128 | 0.114/0.158 | 0.873/0.821 | 0.041/0.070 | 0.019/0.034 | 63.78/56.11 |
| ensemble uncertainty margin | 0.067/0.103 | 0.101/0.143 | 0.907/0.858 | 0.031/0.056 | 0.035/0.051 | 64.66/57.09 |
| calibrated immediate risk | 0.039/0.074 | 0.088/0.131 | 0.931/0.884 | 0.025/0.047 | 0.047/0.069 | 64.97/57.66 |
| calibrated risk-to-go | 0.022/0.049 | 0.071/0.108 | 0.956/0.918 | 0.014/0.031 | 0.057/0.083 | 66.11/59.43 |
| held-out ECE | OOD ECE | held-out violation | OOD violation | abstain | total cost | |
|---|---|---|---|---|---|---|
| 0.02 | 0.018 | 0.043 | 0.006 | 0.017 | 0.142 | 9.96 |
| 0.04 | 0.020 | 0.046 | 0.010 | 0.024 | 0.091 | 10.28 |
| 0.06 | 0.022 | 0.049 | 0.014 | 0.031 | 0.057 | 10.56 |
| 0.08 | 0.025 | 0.053 | 0.022 | 0.043 | 0.032 | 10.71 |
| 0.10 | 0.030 | 0.061 | 0.034 | 0.058 | 0.018 | 10.84 |
| mismatch | risk estimator | selected ECE | Brier | traj. failure | abstain | accuracy |
|---|---|---|---|---|---|---|
| low | behavior-policy Monte-Carlo risk-to-go | 0.041 | 0.083 | 0.104 | 0.041 | 64.71 |
| low | policy-consistent risk-to-go | 0.036 | 0.078 | 0.096 | 0.044 | 64.98 |
| medium | behavior-policy Monte-Carlo risk-to-go | 0.069 | 0.102 | 0.157 | 0.038 | 63.42 |
| medium | policy-consistent risk-to-go | 0.042 | 0.082 | 0.105 | 0.049 | 64.69 |
| high | behavior-policy Monte-Carlo risk-to-go | 0.108 | 0.137 | 0.236 | 0.034 | 60.88 |
| high | policy-consistent risk-to-go | 0.053 | 0.091 | 0.128 | 0.057 | 64.17 |
| method | all ECE | selected ECE | Brier | traj. fail. | interval fail. | abstain | accuracy |
|---|---|---|---|---|---|---|---|
| Immediate-risk head | 0.081 | 0.096 | 0.114 | 0.197 | 0.041 | 0.019 | 63.78 |
| Behavior-policy Monte-Carlo risk-to-go | 0.059 | 0.074 | 0.096 | 0.154 | 0.030 | 0.031 | 64.39 |
| Policy-consistent risk | 0.048 | 0.058 | 0.086 | 0.129 | 0.024 | 0.037 | 64.88 |
| Policy-consistent + global calibration | 0.027 | 0.039 | 0.078 | 0.101 | 0.019 | 0.049 | 65.47 |
| Policy-consistent + DCTC | 0.026 | 0.022 | 0.071 | 0.083 | 0.014 | 0.057 | 66.11 |
| operating point | method | selected ECE | traj. fail. | accuracy | cost |
|---|---|---|---|---|---|
| matched acceptance | global calibration | 0.039 | 0.101 | 65.47 | 10.54 |
| matched acceptance | DCTC | 0.022 | 0.083 | 66.11 | 10.56 |
| matched empirical risk | global calibration | 0.034 | 0.083 | 65.18 | 10.39 |
| matched empirical risk | DCTC | 0.022 | 0.083 | 66.11 | 10.56 |
| catalog | admission rule | false-feasible | false-infeasible | completion | abstain | accuracy |
|---|---|---|---|---|---|---|
| 3 actions | one-step budget | 0.139 | 0.000 | 0.821 | 0.023 | 65.01 |
| 3 actions | independent-minimum baseline | 0.087 | 0.000 | 0.889 | 0.041 | 65.54 |
| 3 actions | PRCC | 0.000 | 0.000 | 0.958 | 0.057 | 66.11 |
| 9 actions | independent-minimum baseline | 0.143 | 0.000 | 0.846 | 0.034 | 65.72 |
| 9 actions | PRCC | 0.000 | 0.000 | 0.969 | 0.051 | 66.37 |
| 18 actions | independent-minimum baseline | 0.197 | 0.000 | 0.793 | 0.029 | 65.61 |
| PC | DCTC | PRCC | held-out acc. | OOD acc. | traj. fail. | total GPU-h |
|---|---|---|---|---|---|---|
| no | no | no | 62.94 | 54.87 | 0.181 | 9.78 |
| yes | no | no | 63.83 | 56.02 | 0.146 | 10.13 |
| no | yes | no | 63.56 | 55.77 | 0.139 | 9.97 |
| no | no | yes | 63.41 | 55.51 | 0.159 | 10.08 |
| yes | yes | no | 65.01 | 57.73 | 0.111 | 10.36 |
| yes | no | yes | 64.83 | 57.21 | 0.137 | 10.43 |
| variant | held-out accuracy | OOD accuracy | violation | abstain | total GPU-h |
|---|---|---|---|---|---|
| full FSPO | 66.11 | 59.43 | 0.014 | 0.057 | 10.56 |
| no trajectory calibration | 64.83 | 57.21 | 0.031 | 0.044 | 10.43 |
| immediate risk instead of risk-to-go | 64.96 | 57.58 | 0.027 | 0.049 | 10.41 |
| no uncertainty margin | 65.28 | 58.06 | 0.024 | 0.041 | 10.32 |
| one-step budget check | 65.01 | 57.73 | 0.029 | 0.023 | 10.36 |
| myopic utility target | 64.57 | 57.02 | 0.017 | 0.061 | 10.28 |
| adaptive actuator | held-out accuracy | OOD accuracy | violation | action-change rate | GPU-h |
|---|---|---|---|---|---|
| temperature only | 61.72 | 53.50 | 0.052 | 0.181 | 9.20 |
| group size only | 62.41 | 54.31 | 0.046 | 0.203 | 9.33 |
| clip only | 61.95 | 53.72 | 0.043 | 0.167 | 9.18 |
| KL only | 62.88 | 55.24 | 0.031 | 0.191 | 9.16 |
| verifier only | 63.16 | 55.69 | 0.029 | 0.224 | 9.41 |
| escalation only | 61.58 | 53.27 | 0.049 | 0.158 | 9.30 |
| calibration behavior | min action count | unseen action rate | OOD state distance | error | risk error |
|---|---|---|---|---|---|
| uniform exploratory | 184 | 0.000 | 0.68 | 0.037 | 0.028 |
| randomized rule mixture | 117 | 0.000 | 0.74 | 0.043 | 0.032 |
| deterministic hand rule | 18 | 0.126 | 0.93 | 0.067 | 0.051 |
| deterministic feedback controller | 11 | 0.168 | 1.01 | 0.074 | 0.058 |
| method | train GPU-h | fit GPU-h | calibration GPU-h | search GPU-h | total GPU-h |
|---|---|---|---|---|---|
| uniform | 9.44 | 0.00 | 0.00 | 0.00 | 9.44 |
| adaptive-KL | 9.24 | 0.00 | 0.22 | 0.30 | 9.76 |
| NeuralUCB | 9.44 | 0.28 | 0.24 | 0.52 | 10.48 |
| PBT | 38.18 | 0.00 | 0.28 | 1.14 | 39.60 |
| PB2 | 38.42 | 0.22 | 0.31 | 1.78 | 40.73 |
| FSPO | 9.29 | 0.47 | 0.18 | 0.62 | 10.56 |
| model | task | baseline accuracy | FSPO accuracy | violation | seeds | total GPU-h |
|---|---|---|---|---|---|---|
| Qwen2.5-3B-Instruct | structural repair | 64.47 | 66.11 | 0.014 | 3 | 31.68 |
| Qwen2.5-3B-Instruct | verifier-based reasoning | 61.52 | 63.74 | 0.019 | 3 | 32.64 |
| Qwen2.5-7B-Instruct | verifier-based reasoning | 66.13 | 68.21 | 0.021 | 3 | 56.82 |
| source target | mode | method | accuracy | traj. fail. | selected ECE | GPU-h |
|---|---|---|---|---|---|---|
| 3B repair 3B reasoning | refit | FSPO | 63.74 | 0.118 | 0.025 | 32.64 |
| 3B repair 3B reasoning | recalibrate only | FSPO | 63.09 | 0.134 | 0.033 | 29.31 |
| 3B repair 3B reasoning | fully frozen | FSPO | 62.14 | 0.187 | 0.068 | 28.77 |
| 3B reasoning 7B reasoning | refit | FSPO | 68.21 | 0.126 | 0.028 | 56.82 |
| 3B reasoning 7B reasoning | recalibrate only | FSPO | 67.46 | 0.146 | 0.037 | 53.34 |
| 3B reasoning 7B reasoning | fully frozen | FSPO | 66.39 | 0.204 | 0.079 | 52.71 |
| comparison | evaluation slice | accuracy difference (pp) | GPU-hour difference | failure difference (pp) |
|---|---|---|---|---|
| controller vs. rule | held-out, fixed budget | +1.68 | +0.06 | -1.50 |
| bandit η vs. rule | held-out, fixed budget | +2.35 | +0.18 | -1.10 |
| controller vs. rule | OOD, fixed budget | +2.13 | +0.06 | -1.70 |
| bandit η vs. rule | OOD, fixed budget | +2.66 | +0.18 | -1.20 |
| controller vs. rule | fixed quality | +0.06 | -0.73 | -1.34 |
| bandit η vs. rule | fixed quality | +0.04 | -0.41 | -0.96 |
| method | fit GPU-h | calibration GPU-h | search GPU-h | decision ms | total GPU-h |
|---|---|---|---|---|---|
| Adaptive-KL | 0.00 | 0.22 | 0.30 | 0.07 | 9.76 |
| NeuralUCB | 0.28 | 0.24 | 0.52 | 0.46 | 10.48 |
| Safety-Critic Gate | 0.43 | 0.17 | 0.41 | 0.59 | 10.31 |
| FSPO, 3 actions | 0.47 | 0.18 | 0.62 | 0.73 | 10.56 |
| FSPO, 9 actions | 0.51 | 0.20 | 0.84 | 1.27 | 10.84 |
| FSPO, 18 actions | 0.56 | 0.22 | 1.12 | 2.06 | 11.19 |
| reported quantity | uniform | hand rule | fixed controller | contextual bandit | FSPO |
|---|---|---|---|---|---|
| optimizer steps | 1508 | 1521 | 1527 | 1524 | 1531 |
| training tokens | 12.46M | 12.03M | 12.19M | 12.39M | 12.16M |
| total wall-clock hours | 9.44 | 9.17 | 9.23 | 9.35 | 9.29 |
| total GPU-hours | 9.44 | 9.17 | 9.23 | 9.35 | 9.29 |
| peak memory (GiB) | 52.4 | 49.8 | 51.1 | 54.6 | 52.7 |
| mean throughput (tokens / s) | 366.6 | 364.4 | 366.9 | 368.1 | 363.6 |
| held-out metric | uniform | hand rule | fixed controller | contextual bandit | FSPO |
|---|---|---|---|---|---|
| downstream task return | 0.642 | 0.671 | 0.690 | 0.698 | 0.732 |
| downstream task accuracy | 58.72% | 61.34% | 63.02% | 63.69% | 66.11% |
| trainer progress | 0.214 | 0.247 | 0.269 | 0.279 | 0.316 |
| violation / failure rate | 0.082 | 0.046 | 0.031 | 0.035 | 0.014 |
| action mix (conservative / balanced / exploratory) | 33.5/33.1/33.4% | 61.3/29.8/8.9% | 45.1/43.2/11.7% | 39.7/42.5/17.8% | 48.8/42.6/8.6% |
| uncertainty (seed count + CI) | 3; [57.93,59.51] | 3; [60.61,62.07] | 3; [62.28,63.76] | 3; [62.90,64.48] | 3; [65.42,66.80] |
| OOD metric | uniform | hand rule | fixed controller | contextual bandit | FSPO |
|---|---|---|---|---|---|
| downstream task return | 0.562 | 0.594 | 0.617 | 0.624 | 0.662 |
| downstream task accuracy | 50.81% | 53.58% | 55.71% | 56.24% | 59.43% |
| trainer progress | 0.178 | 0.203 | 0.226 | 0.232 | 0.267 |
| violation / failure rate | 0.104 | 0.069 | 0.052 | 0.057 | 0.031 |
| action mix (conservative / balanced / exploratory) | 33.4/33.2/33.4% | 68.2/25.4/6.4% | 52.7/39.1/8.2% | 45.6/41.4/13.0% | 56.4/38.7/4.9% |
| uncertainty (seed count + CI) | 3; [49.93,51.69] | 3; [52.61,54.55] | 3; [54.82,56.60] | 3; [55.30,57.18] | 3; [58.47,60.39] |
| policy | split | seeds | GPU-hours | task accuracy | failure rate | outcome rows |
|---|---|---|---|---|---|---|
| uniform | held-out | 3 | 9.44 | 58.72% | 0.082 | 576 |
| rule | held-out | 3 | 9.17 | 61.34% | 0.046 | 576 |
| controller | held-out | 3 | 9.23 | 63.02% | 0.031 | 576 |
| bandit η | held-out | 3 | 9.35 | 63.69% | 0.035 | 576 |
| FSPO | held-out | 3 | 9.29 | 66.11% | 0.014 | 576 |
| uniform | OOD | 3 | 9.44 | 50.81% | 0.104 | 576 |
| cases | intervals | regime mix | policy | progress | ratio | violation | paired CI |
|---|---|---|---|---|---|---|---|
| 24 | 8 | current mix | uniform | 2.7503 | 1.4340 | 0.1615 | [1.286,1.582] |
| 24 | 8 | current mix | rule | 3.1496 | 2.8283 | 0.0000 | [2.431,3.207] |
| 24 | 8 | current mix | controller | 3.2962 | 2.3440 | 0.0000 | [2.211,2.477] |
| 24 | 8 | current mix | bandit η | 3.0006 | 1.6744 | 0.0781 | [1.542,1.807] |
| 96 | 8 | matched mix | uniform | 11.0437 | 1.4567 | 0.1458 | [1.398,1.515] |
| 96 | 8 | matched mix | rule | 12.7364 | 2.6914 | 0.0339 | [2.553,2.830] |
| contract | policy | held-out ratio | OOD ratio | held-out violation | OOD violation | paired CI |
|---|---|---|---|---|---|---|
| step ratio | bandit | 2.8040 | 2.2508 | 0.0260 | 0.1432 | [2.612,2.991]/[2.006,2.501] |
| eta aligned | bandit | 1.8138 | 1.2450 | 0.0781 | 0.2708 | [1.669,1.954]/[1.018,1.474] |
| clipped eta | bandit | 2.2147 | 1.7026 | 0.0521 | 0.2135 | [2.061,2.368]/[1.478,1.925] |
| no learning | controller | 2.1465 | 2.1499 | 0.0208 | 0.1406 | [2.031,2.258]/[1.913,2.384] |
| baseline | split | mean (pp) | 95% CI (pp) | |||
|---|---|---|---|---|---|---|
| fixed controller | held-out | +3.22 | +2.96 | +3.09 | +3.09 | [+2.77,+3.41] |
| contextual bandit | held-out | +2.55 | +2.31 | +2.40 | +2.42 | [+2.12,+2.72] |
| hand rule | held-out | +4.89 | +4.63 | +4.79 | +4.77 | [+4.44,+5.10] |
| fixed controller | OOD | +3.86 | +3.57 | +3.73 | +3.72 | [+3.36,+4.08] |
| contextual bandit | OOD | +3.33 | +3.06 | +3.18 | +3.19 | [+2.85,+3.53] |
| hand rule | OOD | +5.99 | +5.68 | +5.88 | +5.85 | [+5.46,+6.24] |
| policy | held-out acc. | OOD acc. | return | failure | GPU-hours | outcome rows |
|---|---|---|---|---|---|---|
| uniform | 58.72 | 50.81 | 0.642 | 0.082 | 9.44 | 576 |
| best-static | 60.08 | 52.43 | 0.659 | 0.061 | 9.31 | 576 |
| hand rule | 61.34 | 53.58 | 0.671 | 0.046 | 9.17 | 576 |
| fixed controller | 63.02 | 55.71 | 0.690 | 0.031 | 9.23 | 576 |
| contextual bandit | 63.69 | 56.24 | 0.698 | 0.035 | 9.35 | 576 |
| adaptive-KL | 61.91 | 54.64 | 0.681 | 0.038 | 9.24 | 576 |
| comparison | held-out acc. | OOD acc. | failure | held-out 95% CI | OOD 95% CI | seeds |
|---|---|---|---|---|---|---|
| FSPO vs. fixed controller | +3.09 | +3.72 | -0.017 | [+2.77,+3.41] | [+3.36,+4.08] | 3 |
| FSPO vs. contextual bandit | +2.42 | +3.19 | -0.021 | [+2.12,+2.72] | [+2.85,+3.53] | 3 |
| FSPO vs. hand rule | +4.77 | +5.85 | -0.032 | [+4.44,+5.10] | [+5.46,+6.24] | 3 |
| FSPO vs. best-static | +6.03 | +7.00 | -0.047 | [+5.65,+6.41] | [+6.57,+7.43] | 3 |
| FSPO vs. adaptive-KL | +4.20 | +4.79 | -0.024 | [+3.86,+4.54] | [+4.41,+5.17] | 3 |
| control | held-out acc. | OOD acc. | failure | action change | paired CI | outcome rows |
|---|---|---|---|---|---|---|
| full feedback | 66.11 | 59.43 | 0.014 | 0.412 | reference | 576 |
| frozen initial telemetry | 62.77 | 54.98 | 0.043 | 0.167 | [-3.72,-2.96]/[-4.91,-3.99] | 576 |
| one-interval delay | 64.39 | 57.02 | 0.026 | 0.286 | [-2.09,-1.35]/[-2.86,-1.96] | 576 |
| within-interval shuffle | 62.31 | 54.47 | 0.049 | 0.334 | [-4.18,-3.42]/[-5.43,-4.49] | 576 |
| best-static action | 60.08 | 52.43 | 0.061 | 0.000 | [-6.41,-5.65]/[-7.43,-6.57] | 576 |
| catalog | construction | held-out acc. | OOD acc. | failure | GPU-hours |
|---|---|---|---|---|---|
| 3 actions | reference catalog | 66.11 | 59.43 | 0.014 | 9.29 |
| expanded (9 actions) | independently calibrated combinations | 66.83 | 60.06 | 0.013 | 9.37 |
| compositional (18 actions) | expanded combinations with escalation | 67.02 | 60.21 | 0.014 | 9.49 |
| family | calibration relation | ledger ratio | progress | violation | paired CI |
|---|---|---|---|---|---|
| declared family | calibration and evaluation share contract | 2.4386 / 2.1187 | 13.3928 / 12.1843 | 0.0117 / 0.0547 | [+0.176,+0.464] |
| shifted dispersion | coefficients and regime mix changed after calibration | 2.2817 / 1.9674 | 12.7285 / 11.8462 | 0.0365 / 0.0820 | [+0.167,+0.462] |
| shifted reliability | verifier reliability process changed after calibration | 2.1076 / 1.8459 | 11.9731 / 11.1194 | 0.0677 / 0.1250 | [+0.119,+0.405] |
| variant | held-out acc. | OOD acc. | failure | GPU-hours | paired CI (pp) |
|---|---|---|---|---|---|
| full FSPO | 66.11 | 59.43 | 0.014 | 9.29 | reference |
| without risk filter | 65.02 | 57.88 | 0.052 | 9.24 | [-1.46,-0.72]/[-1.96,-1.14] |
| without uncertainty margins | 65.28 | 58.06 | 0.024 | 9.21 | [-1.20,-0.46]/[-1.79,-0.95] |
| without prospective budget mask | 65.01 | 57.73 | 0.029 | 9.31 | [-1.47,-0.73]/[-2.16,-1.24] |
| myopic utility target | 64.57 | 57.02 | 0.017 | 9.20 | [-1.89,-1.19]/[-2.83,-1.99] |
| without telemetry features | 62.77 | 54.98 | 0.043 | 9.18 | [-3.72,-2.96]/[-4.91,-3.99] |
| artifact | role | manuscript use | validation |
|---|---|---|---|
| public summary | normalized summary | Tables 1 – 2 | schema and numeric cross-check |
| source manifest | provenance record | implementation and audit text | digest and source-state check |
| observed trace | action decisions | online and propensity tables | row coverage and state replay |
| oracle labels | post-freeze scores | offline oracle table | action-vector join after freeze |
| held-out/OOD bundle | partition results | held-out/OOD and sensitivity tables | per-policy row counts and digests |
| trainer receipt set | scheduler gate | trainer surfaces | six required receipts |
| check | mechanism | trainer record | evidence file |
|---|---|---|---|
| source commit and dirty flag | verified | recorded | source manifest |
| configuration digest | verified | recorded | config digest |
| exact action catalog | verified | recorded | action schema |
| visible-state digest | verified | recorded | observed trace |
| transition replay | verified | recorded | replay digest |
| oracle join after freeze | verified | recorded | oracle labels |
| stage | operation | required receipt | reported fields |
|---|---|---|---|
| 1 | freeze source, config, model, tokenizer, and data identifiers | manifest and source digest | commit, dirty flag, config hash |
| 2 | generate scheduler dry plan for all policies and seeds | dry-plan JSON | GPU type, token budget, step budget, evaluator version |
| 3 | launch matched runs with policy callback enabled | launch receipt | run id, policy id, seed, start time |
| 4 | collect telemetry and executed action/outcome rows | collect receipt and JSONL log | visible state, action, propensity, outcome, cost |
| 5 | evaluate held-out and OOD tasks | evaluator receipt | task return, accuracy, failures, confidence interval |
| 6 | join scheduler, trainer, and evaluator records | summary manifest | wall-clock, GPU-hours, tokens, memory, action mix |
Reinforcement Learning
Reinforcement learning studies how agents learn sequential decisions from rewards and interaction, balancing exploration, performance, safety, and adaptation.
See all 1,727 papers