Build1 distinct publisher3 min readPublished
Three LoRA stages on Qwen2.5-0.5B pushed reward to 1.0 and accuracy below the untrained base. The fix that recovered 43 points was an execution harness that runs both queries and compares the rows.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The zero-gradient part deserves a walkthrough, because it explains how the dashboards were honest and useless at once. GRPO samples several answers to the same question, scores each one, and pushes the policy toward the answers that beat their group's average [16]. In this run the rewards were a formatting check worth 1.0 that fired for essentially every answer and an exact string match worth 2.0 that fired for almost none, so a group of four usually scored [1.0, 1.0, 1.0, 1.0] [19]. Every answer is exactly average, so the advantage is zero and the update is zero [20]. The reward curve reads 1.0 because formatting is the only thing left that it can measure. The metric tracking that condition hit 1.00 by step 160 of a 300-step run [21], which leaves 140 steps, 47% of the schedule, spending gradient on nothing [1]. A dollar an hour buys a lot of that [2].
Exact string matching also fails on its own terms: it scores `age>56` as zero against `age > 56` [22]. Meanwhile the training data handed the model a schema already trimmed to the columns the answer needed, which removes the table-selection work that is the actual task [17], and the run was bounded by step count rather than passes over the data, so it saw about a tenth of it [18].
The harness that fixed this runs both the candidate and the reference query against the real database and compares the rows that come back [8]. That makes correctness a fact rather than a judgement [9]. It is also, unchanged, the reward function. One artifact, two consumers: the held-out score and the RL signal. That is why the author calls the missing held-out evaluation the real defect from which the other two follow [24]. Bad data and a whitespace-sensitive reward are both invisible until something can execute SQL in a loop.
The arithmetic on where the points came from is the useful part. At 0.5B, real schemas took it from 6.4% to 44.6% [10], and a proper execution-based reward took it to 49.7% [11]. That is 43.3 points at a fixed parameter count [2]. Swapping in Qwen2.5-Coder-1.5B added 18.4 [3], so the data-and-metric work returned about 2.4 times what tripling the model returned [4].
Then the voting. Eight samples per question, majority vote over the returned rows, 71.5% [13], against 71.2% for Qwen2.5-Coder-7B-Instruct [14]. Eight passes through 1.5B parameters is 12B parameter-passes against the 7B's 7B, roughly 1.7 times the decode work [5], plus eight executions per question, because the vote is over rows and not over query strings [13]. Spider hands you a database to execute against [1]. In production that read path is yours to provision and the latency is the user's.
For 71.5% to transfer, four things have to be true: your schemas resemble Spider's 200 SQLite databases, your questions resemble its 10,000 human-written ones [1], row match is your definition of correct [9], and a 0.3-point margin from a single unreplicated run is a margin you would plan around. The author reports the 1.5B losing to the 7B by 3.1 points at one attempt [15], which is more than ten times the margin voting buys [6]. The larger gap is the more load-bearing number.
Ranked by verification strength, evidence, and original report placement.
Qwen2.5-Coder-7B-Instruct scored 71.2%.
The 7B model is still better at one attempt, 71.2% to 68.1%; the 1.5B closes the gap by answering eight times and voting, trading compute for the gap.
Spider comprises 10,000 human-written questions over 200 real SQLite databases, split so the test databases never appear in training.
The project used Qwen2.5-0.5B as the base with LoRA adapters on one g5.xlarge instance with an NVIDIA A10G, at about a dollar an hour.
The first version ran three stages back to back: continued pretraining on raw SQL text, supervised fine-tuning on question and query pairs, then reinforcement learning with GRPO.
The dashboards showed reward climbing to 1.0 and loss dropping cleanly through every stage.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 4, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
CrowdStrike's own triage numbers make AI auto-close a calibration contract, not a headcount cut1 distinct publisher
build
FLARE's federated VLM bet: shrink the payload first, then stream what is left1 distinct publisher
build
On-device continual learning gets an artifact: 230M model, rank-4 LoRA, one frozen teacher1 distinct publisher
invest
XPeng's $900m robot spin-out comes with a seven-year clock and a $1bn put2 distinct publishers
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Executable grading, one unverified reporter
Row-for-row execution against Spider's own databases is about as hard as model grading gets: no rubric to argue with, and test schemas the training never saw. Set against that, every figure traces to one author's runs on one rented A10G, published on dev.to without code, configs or logs beside the numbers — and the write-up cuts off mid-sentence exactly where the validation-loss surprise begins.
No usage signal beyond the author's own runs
Everything reported is one person benchmarking on one rented GPU. Nothing indicates anyone else pulled the adapters, reran the harness or served the model; the post mentions serving over HTTP and leaves it there. Benchmark scores from the builder are a result, not uptake, and we will not dress them up as one.
The headline rides a 0.3-point win
dev.to's title sells a 1.5B that beats a 7B. On equal terms it loses by 3.1 points; it wins by 0.3 only after answering eight times, which costs roughly 1.7 times the bigger model's decode work. What keeps the overstatement modest rather than glaring is how much the piece gives away — a 6.4% score, a model worse than untrained, 140 reinforcement-learning steps that did nothing.
A redemption arc filed in a cloud vendor's builder channel
Nothing is being sold here, but the piece sits in dev.to's AWS Builders community and its cost story — g5.xlarge, an A10G, about a dollar an hour — fits that host comfortably. The sharper pressure is structural: the author chose the data, wrote the harness, ran the runs and grades the result, and the arc being graded is his own recovery from 6.4% to beating a larger model.
Internally consistent, externally untested
The arithmetic reconciles: stage-by-stage jumps, parameter counts and the voting margin all line up, and the failure account is concrete enough to be falsified by anyone willing to repeat it. What holds our confidence down is simple — no one else has published the same run, and one dimension of this story, whether anybody uses the thing, has no evidence at all.