Engineering

Six filled on try five — Qwen3.8-27B 4bit on Terminal-Bench 89, pass@5 54 past Uncensored

Round 5 of Qwen3.8-27B MLX 4bit (17GB): rerun the 41 round-4 failures. Six recoveries reach pass@5 54/89, fills rebound +0/+2/+6, the gap to Uncensored (59) narrows to 5, ERRs vanish 13/1/0.

삽질하는개발자

뇌파 곡선 일러스트

Summary

In round 4, Qwen3.8-27B 4bit (17GB) recovered 2 to reach pass@4 48, and I wrote that “most of the remaining 41 are cells all three models miss, so further recoveries will be sparse.” That was wrong. Same method — restart only the server, everything else unchanged — and round 5 filled six. 20 hours 44 minutes.

Result: pass@5 = 54 / 89 (60.7%) — 6 recovered. And the ERRs vanished completely: 13 (round 3) → 1 (round 4) → 0 (round 5).

Of the 41: PASS 5, PASS(TO) 1 (correct at the timeout boundary), FAIL 7, TO 28, ERR 0.

pass@k 27B 4bit (17GB) Flash Next stock (100GB) Uncensored 4bit
pass@1 35 (39.3%) 45 41
pass@2 46 (51.7%) 53 —
pass@3 46 (51.7%) — —
pass@4 48 (53.9%) — —
pass@5 54 (60.7%) 64 59

Per-round fills: 35 → +11 → +0 → +2 → +6. The curve that flat-lined in round 3 came back to life, and at pass@5 the gap to Uncensored (59) narrows to 5. Stock (64) is still 10 away.

The six recoveries — why the count went up

Task Round 5 Time Round 4 Stock pass@5 Uncensored pass@5
raman-fitting PASS 4.1 min FAIL PASS FAIL
mteb-retrieve PASS 5.5 min FAIL PASS PASS
crack-7z-hash PASS 8.5 min TO PASS PASS
bn-fit-modify PASS 22.6 min FAIL PASS PASS
llm-inference-batching-scheduler PASS 24.9 min FAIL PASS FAIL
rstan-to-pystan PASS(TO) 30.0 min TO FAIL FAIL

Median recovery time was 22.6 minutes. In round 4 these were 4 FAILs and 2 TOs; in round 5 all six passed. Again it’s variance, not attempt count — give the same problem once more and some fraction walks a different path to the answer. crack-7z-hash, a 30-minute TO in round 4, finished in 8.5 via a straight 7z2john+john crack; bn-fit-modify correctly concluded the partial correlation was essentially zero, so there was no direct edge.

The rebound “+0 → +2 → +6” runs against intuition — pass@k usually dries up over rounds. But round 3’s +0 was an artificial floor: half that round was lost to ERR, and rounds 4–5 cleared that factor by restarting the server clean. The remaining failure pool still held several “high-variance, mid-difficulty” tasks, and those hit this time.

Two cells past Uncensored, and a third only 27B solved

What stands out here are the cells where the ranking flips.

  • llm-inference-batching-scheduler and raman-fitting — stock Flash Next passed both, but Uncensored never solved them through pass@5. 27B filling them sharpens the picture: a 4bit model 6× smaller leads a same-lineage 4bit (Uncensored) on specific cells.
  • rstan-to-pystan — neither stock nor Uncensored solved it through pass@5; only 27B did. It ported the R Stan model to PyStan and fit 4 MCMC chains right at the deadline for a PASS(TO). After compile-compcert and query-optimize in round 2, that’s the third cell only 27B solved among the three.

By aggregate score (54 < 59 < 64) 27B still trails, but the question of “who solves this specific problem” keeps flipping. Three of them is hard to call a coincidence.

The last scene of the vanishing ERRs

Round 3’s post corrected the 13 ERRs from “the server aged” to harbor’s setup apt install hitting a 120s timeout (network). Round 4, server restarted, dropped it to 1. Round 5: zero.

ERR: 13 → 1 → 0. This three-round decline settles the diagnosis for good: the ERRs were neither the model nor the server, but that night’s container network. Restarting the server didn’t fix them — they were server-independent all along and simply don’t occur on a night the apt mirror is healthy. Across three nights the server state differed wildly (74h uptime → restart → restart), yet the ERRs tracked only the mirror’s condition.

The 35 still failing

Even with the second-biggest rebound (+6), the remaining 35 (FAIL 7 · TO 28) fail the same ways.

  • heredoc trap — circuit-fibsqrt got the terminal stuck feeding a Python script via heredoc and looped Ctrl+D/Ctrl+C for the full 60 minutes into a TO; make-mips-interpreter never finished its interpreter either.
  • 130K context wedge — video-processing kept reloading frames until it hit the context ceiling (131072), spun 337 turns, and TO’d. Over 1,300 of the server’s 400-overflows came from this one task.
  • optimization / hardest cells — feal-differential/linear-cryptanalysis burned the clock designing differential/linear attacks; the path-tracing tasks failed to reverse the render’s pixel patterns.

And many of these 35 are cells all three models (27B, stock, Uncensored) miss through pass@5. The conclusion stands: these need a harness or prompt change, not more attempts — a single loop detector alone would save hours on the heredoc and 130K wedges.

Onto a sixth

pass@1 35 → 46 → 46 → 48 → pass@5 54. Drawing the curve out to stock (64) and Uncensored (59) keeps the table honest, so as I write this, round 6 is running on the remaining 35. This time I set expectations lower — the leftover pool skews harder toward “all three miss,” so recoveries should dry further. Still, 5 cells separate 27B from Uncensored (59), and how many close by variance only running tells.

One thing this small-model-many-runs experiment confirms each time: the gap in aggregate score and the question of “who solves this problem” are two different things — just as neither stock nor Uncensored solved rstan-to-pystan, and 27B did.