Downloads · 30 days
0
XunmeiLiu/openwebrl-ws-credit-beta0.4
openwebrl-ws-credit-beta0.4 is a reinforcement learning model from XunmeiLiu. Use it for the reinforcement learning task on the model card, and read the license before you ship it in a product. The card lists the license as apache-2.0.
Training checkpoints, optimizer state and per-iteration logs for an RL run that adds a within-state process reward to turn-level GRPO on the OpenWebRL web-agent task.
Downloads · 30 days
0
Access
Public
Updated Sep 23, 2026
Repo size
124 GB
Likes
0
Public
Click a slice to open those files.
.distcp124 GB · 100%
From the Hugging Face model README
ws-credit, β = 0.4)Training checkpoints, optimizer state and per-iteration logs for an RL run that adds a within-state process reward to turn-level GRPO on the OpenWebRL web-agent task.
The point of the repository is reproducibility of a specific negative-or-positive result, and insurance: the run lives on node-local disk inside a Slurm allocation that has already been requeued once, taking the local disk with it.
At a labeled turn we draw K = 5 responses from the policy with the same prompt and sampling parameters, score all five with Piotr Teterwak's Scalar Action Reward Model, and execute candidate 0 — never the argmax, so the scores cannot influence behaviour and the trajectory stays on-policy:
d_k = 0 if candidate k canonicalizes to the executed action
= r_taken − r_k otherwise (k = the K−1 other candidates)
c_t = clip( mean_k d_k / τ , −1, +1 )
A_t = A + β · c_t
| knob | value | why |
|---|---|---|
| β | 0.4 | the largest dose with a guaranteed zero sign-flip rate: 0.4 < 0.447 = min|A| in any mixed group of five binary rewards, so the judge's outcome always sets the sign of A_t |
| τ | 20.0 | the median |r_i − r_j| over same-state pairs whose actions genuinely differ. Measured at 11–12 before tolerant matching; 28.5% of the "different action" pairs were the same click to within 20/1000 or the same key in a different case, and folding those in moves the median to 20 |
| K | 5 | candidates per labeled step, executed one included |
| labeled rollouts | 2 of 5 | bounds the cost |
| canonical matching | OWRL_WS_CLICK_TOL=20, OWRL_WS_KEY_CASE=1 | press_keys(["enter"]) and (["Enter"]) are the same key |
done candidates | dropped from the comparison set | mean d against them is +49.56 against −1.52 for everything else; keeping them inflated c by +0.522 on the 3.2% of states where one appears |
terminal done | scored for diagnostics, credit masked | out of distribution for the RM and systematically scored low |
Everything else is the OpenWebRL reproduction unchanged: 48 groups × 5 rollouts, lr 1e-6,
global batch 256, 2 PPO epochs, 15-step horizon, rollout temperature 0.8, dynamic filter,
GPT-4.1 judge, starting from the OpenWebRL/OpenWebRL-4B-SFT checkpoint.
resume/iter_XXXXXXX/ Megatron distcp: model + optimizer + scheduler.
58 GB. This is what makes an exact resume possible.
resume/latest_checkpointed_iteration.txt
hf/iter_XXXXXXX/ converted HuggingFace weights, 9.1 GB. Policy only —
enough to evaluate or start a fresh run, not to resume one.
logs/ws_metrics.jsonl one row per iteration, ~45 `ws/` metrics
logs/ws_credit_log.jsonl one row per trajectory: reward, A, per-turn action, the five
scores, same-action flags, c and A_t
REPO=XunmeiLiu/openwebrl-ws-credit-beta0.4
N=$(huggingface-cli download $REPO resume/latest_checkpointed_iteration.txt --repo-type model \
--quiet | xargs cat)
DST=/mnt/localssd/$USER/seleval/outputs/owrl_ws_beta0.4/ckpt
mkdir -p "$DST"
huggingface-cli download $REPO --repo-type model \
--include "resume/iter_$(printf '%07d' $N)/*" --local-dir /tmp/wsdl
mv "/tmp/wsdl/resume/iter_$(printf '%07d' $N)" "$DST/"
echo "$N" > "$DST/latest_checkpointed_iteration.txt"
# the launcher picks the checkpoint up by itself
bash ~/seleval/start_ws_phase2.sh
run_train_8xh100.sh reads latest_checkpointed_iteration.txt, sets
SLIME_LOAD_CHECKPOINT and SLIME_CKPT_STEP, and continues. Nothing else is needed.
Two environment gotchas that will otherwise cost hours on a fresh node:
/usr/local/cuda = 13.0 while the env is a cu12 wheel stack. slime
builds the model through megatron.bridge from the HF config, which does not carry
--attention-backend, so it arrives as auto, transformer_engine picks its fused
kernel, and the fused loader dies with "Multiple libcudart libraries found:
libcudart.so.12 and libcudart.so.13". Patch
megatron/core/models/common/language_module/language_module.py::_set_attention_backend
to treat auto as flash. Flash and fused are different kernels for identical
mathematics. Setting NVTE_FUSED_ATTN=0 yourself does not work — Megatron sets
those three flags from the config and asserts nobody else has.Mechanism, over all 45 iterations:
| check | measured | target |
|---|---|---|
| sign-flip rate | 0.0000, sd 0 | exactly 0 |
| fallback rate | 0.0001 | < 0.05 |
| executed-is-argmax | 0.2023 ± 0.0117, flat over training | 0.200 = chance, i.e. no reward farming |
| running τ | 19.94 ± 1.61 | frozen at 20.0 |
| mean c | +0.034 | |mean| < 0.03 (slightly over) |
| rms(β·c) / rms(A) | 0.128 | the dose |
The decisive training-side gate — inside a mixed GRPO group, do the labeled rollouts that
succeeded carry higher mean c than their failed siblings on the same task?
+0.0353 over 575 mixed groups, t = 2.75 (p = 0.0059), sign test 32/45 iterations positive (p = 0.0046), and it strengthens: +0.0214 over iterations 0–21 against +0.0483 over 22–44.
Training curve, first 10 iterations against the last 10: reward 0.430 → 0.504, all-failure groups 42.4 → 30.3, response length 325 → 368, truncation 1.0% → 1.4%.
A caveat worth stating: an offline, unpaired measurement over 274 evaluation tasks put
the AUROC of trajectory-mean c for task success at 0.530. The paired within-group test
above disagrees because the unpaired one is dominated by task difficulty and episode
length; the paired comparison removes both by construction. Checkpoint evaluations
against the plain-RL reproduction at the same iterations are the arbiter and are not in
this README yet.
Produced on an 8×H100 node (interna3m) by a CloudCode agent session,
ses_e5fc8854969ffe3xWuV7yJqhv3. The Scalar RM is
PTeterwak/OpenWebRL-4B-ScalarRM-LoRA;
the policy starts from
OpenWebRL/OpenWebRL-4B-SFT.