Views
No views yet
TL;DR — this adapter does NOT beat its SFT starting point. It is published as an honest, reproducible negative result: outcome-only GRPO gave ~0 Execution-Accuracy gain on BIRD/Spider, even after we fixed the reward- variance problem that is the usual scapegoat. The value here is the finding and the clean telemetry that proves the mechanism worked but the accuracy did not move. For the actual best model, useAnurich/slmsql-qwen2.5-coder-1.5b.
| Model | BIRD dev EX (149-slice) | Spider dev EX (200) |
|---|---|---|
| Two-stage SFT (start point) | 36.9% | 82.0% |
| + GRPO (this adapter) | 36.2% (54/149) | 83.0% (166/200) |
| Δ | −0.7 | +1.0 |
frac_reward_zero_std ≈ 0.7
(70% of groups had zero reward variance → zero advantage → no gradient).
Flat EX. This could be dismissed as "you fed it data it had already
mastered." GRPO's advantage is (r − mean)/std; an all-same-reward group has
std = 0 → no learning signal. This is the textbook GRPO failure mode.0.2 < pass_rate < 0.8). Result: 494 band / 502 all-fail / 184 all-pass
— a healthy, balanced difficulty split. GRPO on the 494 band then trained with
a perfectly healthy mechanism: frac_reward_zero_std fell to 0.05–0.2,
reward_std ≈ 0.44, grad_norm ≈ 0.5, gradient flowing every step.0.2 < p < 0.8),
execution-verifiable (ship runnable SQLite DBs).GRPOTrainer, 8 generations/prompt, beta=0 (no reference
model), lr=1e-6 (cosine decay), temperature=0.8, epsilon=0.2,
use_vllm=False. 400 steps, ~2h42m on a single 24–32 GB NVIDIA card.1.0 if the SQL executes and the result matches gold; 0.1 if it executes but
is wrong; 0.0 otherwise. Plus a tiny 0.2 format reward for a ```sql
block. Sandbox: read-only connection + op-budget interrupt for adversarial SQL.1# 1. pass-rate filter (build the uncertainty-zone RL set)
2python -m slmsql.passrate_filter rs_source.jsonl \
3 --adapter adapters/twostage --k 8 --low 0.2 --high 0.8 --name rl_uncertainty
4# 2. GRPO on the band
5python -m slmsql.train_grpo_cuda rl_uncertainty.jsonl \
6 --base-adapter adapters/twostage --name grpo2 --num-generations 8
7# 3. eval
8python -m slmsql.evaluate bird_dev_150.jsonl --adapter adapters/grpo2 --name grpo2_bird