Skip to results

REN is a 9B model you can interrupt mid-answer.

It is trained to keep listening while it writes, so you can stop it, correct it, or add a detail without waiting for it to finish. REN is a LoRA fine-tune of Qwen3.5-9B, and this page is its open training log: every round, every evaluation against the base model, and what changed in between.

Base model
Qwen/Qwen3.5-9B
Method
LoRA adapter, rank 16
Latest results
Round 7 (s07), evaluated 19 Oct
Now
No training run in progressSee runs
An interruption, in two lanesYou ask a question. REN starts answering. Partway through, you interrupt, and REN either stops, corrects what it wrote, or takes in the new information and carries on.YouRENYour questionYou interruptStopCorrectAdd info
Stop
You tell it to stop. It ends the answer there.
Correct
You point out a mistake. It revises what it wrote.
Add info
You add a detail. It takes it in and carries on.

Illustrative schematic, not a model transcript. The held-out test transcripts are not published, so the test stays uncontaminated.

Results

Does REN beat the model it started from?

In plain terms

Round 7 (s07), the latest evaluated adapter, is clearly better than the base model on 4 of 10 headline measures, not clearly different on 6, and clearly worse on none. Interruption handling, the skill REN is built for, is not yet distinguishable from the base model on this test set (42 items). Coding is level with the base model, not better: 0.779 against 0.804 on HumanEval+ (163 problems), a gap inside the noise. Some tests are small (as few as 14 items), so a difference of a few points there is not meaningful.

Base model, Qwen3.5-9B REN, Round 7 (s07) 95% interval of the changeHeld-out set: heldout_v1

Interruption

The skill REN exists for.

Handles the interruption

No clear difference

Interrupted mid-answer, REN does what the interruption asked. Checked by executing the result.

n = 42

Base model0.786REN s070.905
+0.119[−0.024, +0.262]
By type of interruption(3)

Smaller samples, so wider intervals. The change axis here spans ±1.

Stop

No clear difference

You ask it to stop.

n = 14

Base model0.857REN s071.000
+0.143[±0.000, +0.357]

Correction

No clear difference

You correct something it said.

n = 14

Base model0.857REN s070.929
+0.071[−0.143, +0.286]

New information

No clear difference

You add a detail it did not have.

n = 14

Base model0.643REN s070.786
+0.143[−0.214, +0.429]

Keeps the turn structure

No clear difference

After an interruption, the reply uses the expected interruption format.

n = 42

Base model0.952REN s071.000
+0.048[±0.000, +0.119]

Response format

Whether replies come back in the structure a program expects.

Follows the requested format

Better

Replies use the right structure for each task kind: think, fast, agent, decide and interruption.

n = 350

Base model0.894REN s071.000
+0.106[+0.074, +0.140]

Right answer in format tasks

Better

The formatted reply also contains the correct answer.

n = 350

Base model0.654REN s070.991
+0.337[+0.286, +0.386]
By task kind(7)

Smaller samples, so wider intervals. The change axis here spans ±1.

Interruption: stop

No clear difference

Stop requests.

n = 50

Base model0.920REN s070.980
+0.060[−0.020, +0.160]

Interruption: correction

Better

Corrections mid-answer.

n = 50

Base model0.000REN s071.000
+1.000[+1.000, +1.000]

Interruption: new information

Better

Details added mid-answer.

n = 50

Base model0.260REN s071.000
+0.740[+0.620, +0.860]

Agent

Better

Tool-using turns.

n = 50

Base model0.740REN s071.000
+0.260[+0.160, +0.380]

Decide

Better

Short decisions.

n = 50

Base model0.880REN s071.000
+0.120[+0.040, +0.220]

Fast mode

No clear difference

Answers without visible reasoning.

n = 50

Base model0.900REN s070.960
+0.060[−0.020, +0.140]

Think mode

Better

Answers with visible reasoning.

n = 50

Base model0.880REN s071.000
+0.120[+0.040, +0.220]

Agent turns are well-formed

No clear difference

Tool-using turns follow the agent format.

n = 50

Base model1.000REN s071.000
±0.000[±0.000, ±0.000]

Decisions and calibration

Short judgement calls, and whether REN knows when it is unsure.

Quick judgements

Better

Short decisions answered correctly: yes/no, multiple choice, whether code raises, whether a shell command is destructive.

n = 300

Base model0.677REN s070.863
+0.187[+0.137, +0.240]

Calibration (Brier score)

Better

How closely its stated probabilities match how often it is right. Lower is better.

n = 300

Base model0.419REN s070.203
−0.216[−0.270, −0.165]

Coding

A guard against losing the base model’s coding ability.

Writes working code

No clear difference

Python problems solved on the first attempt, checked by HumanEval+ unit tests.

n = 163

Base model0.804REN s070.779
−0.025[−0.067, +0.012]

Terminal agent

Multi-step shell work with a tool.

Completes terminal tasks

No clear difference

Shell tasks, judged by checking the machine’s end state.

n = 42

Base model0.857REN s070.857
±0.000[−0.143, +0.143]

General knowledge

A check that fine-tuning has not eroded what the base model knows.

General knowledge (MMLU-Pro)

No clear difference

Multiple-choice questions across subjects, scored from the probability of each answer letter.

n = 200

Base model0.615REN s070.625
+0.010[−0.020, +0.040]

How to read this

Each adapter and the base model answer the same held-out items in the same session, and the change is paired item by item. The bar is a 95% bootstrap interval. A verdict says better or worse only when that interval excludes zero.

Why the round trend breaks

From round 3, generation stops at the end of the assistant turn for both models. Rounds 1 and 2 were scored without that rule, so the trend line is drawn separately for each group and should not be read across the gap.

All numbers, every roundwith intervals and McNemar p
Measures01no stop rules02no stop rules03stop at turn ends04stop at turn ends05stop at turn ends06stop at turn ends07stop at turn end
Handles the interruptioninterruption|all|interrupt handled (exec-verified)0.524Δ −0.286▼[−0.500, −0.071] p 0.029base 0.810, n 420.762Δ −0.048[−0.214, +0.119] p 0.791base 0.810, n 420.810Δ +0.024[−0.143, +0.190] p 1.000base 0.786, n 420.833Δ +0.048[−0.119, +0.214] p 0.774base 0.786, n 420.833Δ +0.048[−0.143, +0.214] p 0.791base 0.786, n 420.881Δ +0.095[−0.048, +0.238] p 0.344base 0.786, n 420.905Δ +0.119[−0.024, +0.262] p 0.227base 0.786, n 42
Handles the interruption: Stopinterruption|stop|interrupt handled (exec-verified)0.429Δ −0.429[−0.786, ±0.000] p 0.109base 0.857, n 140.714Δ −0.143[−0.500, +0.214] p 0.688base 0.857, n 141.000Δ +0.143[±0.000, +0.357] p 0.500base 0.857, n 141.000Δ +0.143[±0.000, +0.357] p 0.500base 0.857, n 141.000Δ +0.143[±0.000, +0.357] p 0.500base 0.857, n 141.000Δ +0.143[±0.000, +0.357] p 0.500base 0.857, n 141.000Δ +0.143[±0.000, +0.357] p 0.500base 0.857, n 14
Handles the interruption: Correctioninterruption|correction|interrupt handled (exec-verified)0.429Δ −0.500▼[−0.786, −0.143] p 0.039base 0.929, n 140.857Δ −0.071[−0.286, +0.143] p 1.000base 0.929, n 140.786Δ −0.071[−0.357, +0.214] p 1.000base 0.857, n 140.929Δ +0.071[−0.143, +0.286] p 1.000base 0.857, n 140.929Δ +0.071[−0.143, +0.286] p 1.000base 0.857, n 140.929Δ +0.071[−0.143, +0.286] p 1.000base 0.857, n 140.929Δ +0.071[−0.143, +0.286] p 1.000base 0.857, n 14
Handles the interruption: New informationinterruption|add_info|interrupt handled (exec-verified)0.714Δ +0.071[−0.286, +0.429] p 1.000base 0.643, n 140.714Δ +0.071[−0.214, +0.357] p 1.000base 0.643, n 140.643Δ ±0.000[−0.357, +0.286] p 1.000base 0.643, n 140.571Δ −0.071[−0.429, +0.286] p 1.000base 0.643, n 140.571Δ −0.071[−0.500, +0.357] p 1.000base 0.643, n 140.714Δ +0.071[−0.214, +0.357] p 1.000base 0.643, n 140.786Δ +0.143[−0.214, +0.429] p 0.688base 0.643, n 14
Keeps the turn structureinterruption|all|interruption format0.714Δ −0.214▼[−0.381, −0.048] p 0.035base 0.929, n 420.881Δ −0.048[−0.167, +0.071] p 0.727base 0.929, n 421.000Δ +0.048[±0.000, +0.119] p 0.500base 0.952, n 420.976Δ +0.024[−0.048, +0.095] p 1.000base 0.952, n 421.000Δ +0.048[±0.000, +0.119] p 0.500base 0.952, n 421.000Δ +0.048[±0.000, +0.119] p 0.500base 0.952, n 421.000Δ +0.048[±0.000, +0.119] p 0.500base 0.952, n 42
Follows the requested formatformat|all|format compliance0.986Δ +0.097▲[+0.060, +0.131] p <0.001base 0.889, n 3500.983Δ +0.091▲[+0.057, +0.126] p <0.001base 0.891, n 3501.000Δ +0.103▲[+0.071, +0.134] p <0.001base 0.897, n 3501.000Δ +0.103▲[+0.071, +0.134] p <0.001base 0.897, n 3501.000Δ +0.106▲[+0.074, +0.140] p <0.001base 0.894, n 3501.000Δ +0.106▲[+0.074, +0.140] p <0.001base 0.894, n 3501.000Δ +0.106▲[+0.074, +0.140] p <0.001base 0.894, n 350
Right answer in format tasksformat|all|answer correct0.957Δ +0.303▲[+0.251, +0.351] p <0.001base 0.654, n 3500.946Δ +0.289▲[+0.237, +0.337] p <0.001base 0.657, n 3500.977Δ +0.320▲[+0.269, +0.369] p <0.001base 0.657, n 3500.980Δ +0.323▲[+0.271, +0.371] p <0.001base 0.657, n 3500.937Δ +0.283▲[+0.229, +0.334] p <0.001base 0.654, n 3500.989Δ +0.334▲[+0.283, +0.386] p <0.001base 0.654, n 3500.991Δ +0.337▲[+0.286, +0.386] p <0.001base 0.654, n 350
Right answer in format tasks: Interruption: stopformat|interruption_stop|answer correct0.980Δ +0.060[−0.020, +0.160] p 0.375base 0.920, n 500.980Δ +0.060[−0.020, +0.160] p 0.375base 0.920, n 500.980Δ +0.060[−0.020, +0.160] p 0.375base 0.920, n 500.980Δ +0.060[−0.020, +0.160] p 0.375base 0.920, n 500.980Δ +0.060[−0.020, +0.160] p 0.375base 0.920, n 501.000Δ +0.080▲[+0.020, +0.160] p 0.125base 0.920, n 500.980Δ +0.060[−0.020, +0.160] p 0.375base 0.920, n 50
Right answer in format tasks: Interruption: correctionformat|interruption_correct|answer correct1.000Δ +1.000▲[+1.000, +1.000] p <0.001base 0.000, n 501.000Δ +1.000▲[+1.000, +1.000] p <0.001base 0.000, n 501.000Δ +1.000▲[+1.000, +1.000] p <0.001base 0.000, n 501.000Δ +1.000▲[+1.000, +1.000] p <0.001base 0.000, n 500.960Δ +0.960▲[+0.900, +1.000] p <0.001base 0.000, n 501.000Δ +1.000▲[+1.000, +1.000] p <0.001base 0.000, n 501.000Δ +1.000▲[+1.000, +1.000] p <0.001base 0.000, n 50
Right answer in format tasks: Interruption: new informationformat|interruption_add_info|answer correct0.840Δ +0.580▲[+0.420, +0.720] p <0.001base 0.260, n 500.800Δ +0.540▲[+0.400, +0.700] p <0.001base 0.260, n 500.900Δ +0.640▲[+0.480, +0.780] p <0.001base 0.260, n 500.920Δ +0.660▲[+0.520, +0.800] p <0.001base 0.260, n 500.660Δ +0.400▲[+0.200, +0.600] p <0.001base 0.260, n 500.960Δ +0.700▲[+0.560, +0.820] p <0.001base 0.260, n 501.000Δ +0.740▲[+0.620, +0.860] p <0.001base 0.260, n 50
Right answer in format tasks: Agentformat|agent|answer correct0.920Δ +0.180▲[+0.060, +0.320] p 0.022base 0.740, n 500.880Δ +0.140▲[+0.020, +0.260] p 0.065base 0.740, n 501.000Δ +0.260▲[+0.160, +0.380] p <0.001base 0.740, n 501.000Δ +0.260▲[+0.160, +0.380] p <0.001base 0.740, n 501.000Δ +0.260▲[+0.160, +0.380] p <0.001base 0.740, n 501.000Δ +0.260▲[+0.160, +0.380] p <0.001base 0.740, n 501.000Δ +0.260▲[+0.160, +0.380] p <0.001base 0.740, n 50
Right answer in format tasks: Decideformat|decide|answer correct1.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 501.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 501.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 501.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 501.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 501.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 501.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 50
Right answer in format tasks: Fast modeformat|fast|answer correct0.960Δ +0.060[−0.020, +0.140] p 0.375base 0.900, n 500.960Δ +0.060[−0.020, +0.140] p 0.375base 0.900, n 500.960Δ +0.060[−0.020, +0.140] p 0.375base 0.900, n 500.960Δ +0.060[−0.020, +0.140] p 0.375base 0.900, n 500.960Δ +0.060[−0.020, +0.140] p 0.375base 0.900, n 500.960Δ +0.060[−0.020, +0.140] p 0.375base 0.900, n 500.960Δ +0.060[−0.020, +0.140] p 0.375base 0.900, n 50
Right answer in format tasks: Think modeformat|think|answer correct1.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 501.000Δ +0.100▲[+0.020, +0.200] p 0.063base 0.900, n 501.000Δ +0.100▲[+0.020, +0.200] p 0.063base 0.900, n 501.000Δ +0.100▲[+0.020, +0.200] p 0.063base 0.900, n 501.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 501.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 501.000Δ +0.120▲[+0.040, +0.220] p 0.031base 0.880, n 50
Agent turns are well-formedformat|agent|format compliance0.900Δ −0.060[−0.160, +0.040] p 0.453base 0.960, n 500.880Δ −0.080[−0.180, +0.020] p 0.289base 0.960, n 501.000Δ ±0.000[±0.000, ±0.000] p 1.000base 1.000, n 501.000Δ ±0.000[±0.000, ±0.000] p 1.000base 1.000, n 501.000Δ ±0.000[±0.000, ±0.000] p 1.000base 1.000, n 501.000Δ ±0.000[±0.000, ±0.000] p 1.000base 1.000, n 501.000Δ ±0.000[±0.000, ±0.000] p 1.000base 1.000, n 50
Quick judgementsdecide|all|accuracy0.734Δ +0.063[−0.047, +0.172] p 0.388base 0.672, n 640.787Δ +0.107▲[+0.060, +0.157] p <0.001base 0.680, n 3000.827Δ +0.147▲[+0.093, +0.200] p <0.001base 0.680, n 3000.840Δ +0.160▲[+0.110, +0.210] p <0.001base 0.680, n 3000.830Δ +0.153▲[+0.103, +0.203] p <0.001base 0.677, n 3000.853Δ +0.177▲[+0.123, +0.230] p <0.001base 0.677, n 3000.863Δ +0.187▲[+0.137, +0.240] p <0.001base 0.677, n 300
Calibration (Brier score)lower is betterdecide|all|Brier (multi-class, lower=better)0.351Δ −0.095▲[−0.188, −0.005]base 0.447, n 640.281Δ −0.138▲[−0.183, −0.096]base 0.419, n 3000.238Δ −0.181▲[−0.233, −0.133]base 0.419, n 3000.231Δ −0.188▲[−0.242, −0.139]base 0.419, n 3000.252Δ −0.167▲[−0.214, −0.123]base 0.419, n 3000.212Δ −0.206▲[−0.261, −0.155]base 0.419, n 3000.203Δ −0.216▲[−0.270, −0.165]base 0.419, n 300
Writes working codehumaneval|all|HumanEval+ pass@1 (greedy)0.675Δ −0.129▼[−0.202, −0.061] p <0.001base 0.804, n 1630.706Δ −0.098▼[−0.166, −0.037] p 0.005base 0.804, n 1630.755Δ −0.049[−0.104, +0.006] p 0.134base 0.804, n 1630.773Δ −0.031[−0.080, +0.018] p 0.332base 0.804, n 1630.755Δ −0.049[−0.104, +0.006] p 0.134base 0.804, n 1630.822Δ +0.018[−0.025, +0.061] p 0.581base 0.804, n 1630.779Δ −0.025[−0.067, +0.012] p 0.388base 0.804, n 163
Completes terminal tasksterminal|all|task success (end-state checks)0.857Δ ±0.000[−0.167, +0.167] p 1.000base 0.857, n 420.905Δ +0.048[−0.095, +0.190] p 0.727base 0.857, n 420.881Δ +0.024[−0.119, +0.167] p 1.000base 0.857, n 420.905Δ +0.048[−0.095, +0.190] p 0.727base 0.857, n 421.000Δ +0.143▲[+0.048, +0.262] p 0.031base 0.857, n 420.976Δ +0.119[±0.000, +0.238] p 0.125base 0.857, n 420.857Δ ±0.000[−0.143, +0.143] p 1.000base 0.857, n 42
General knowledge (MMLU-Pro)mmlu_pro|all|accuracy (letter logits)0.688Δ +0.031[±0.000, +0.078] p 0.500base 0.656, n 640.635Δ +0.020[−0.010, +0.055] p 0.388base 0.615, n 2000.640Δ +0.025[−0.010, +0.060] p 0.267base 0.615, n 2000.635Δ +0.020[−0.010, +0.055] p 0.388base 0.615, n 2000.630Δ +0.015[−0.020, +0.050] p 0.549base 0.615, n 2000.620Δ +0.005[−0.025, +0.040] p 1.000base 0.615, n 2000.625Δ +0.010[−0.020, +0.040] p 0.754base 0.615, n 200

Runs

What is happening now, and how did it get here?

In plain terms

Round 7 finished on 19 Oct. The last activity was 10 min ago, on 19 Oct, 03:55.

Current run

Complete

Round 7

  1. ✓

    Smoke test

    40 of 40 steps

    18 Oct, 19:53

  2. ✓

    Training

    302 of 302 steps, 4.8 h

    19 Oct, 02:33

  3. ✓

    Evaluation

    43 min on heldout_v1

    19 Oct, 03:55

Next step
Compute
Kaggle, 2× T4
Last activity
19 Oct, 03:55 WAT, 10 min ago

How each round led to the next

A continuous line means the round continued from the previous adapter; a square marks a fresh start from the base model. Loss curves share one scale, but rounds train on different data mixes, so their levels are not directly comparable.

  1. Pilot

    s01Complete1 Oct, 22:23 to 2 Oct, 04:20

    Fresh start from Qwen3.5-9B adapter

    • Smoke test40 of 40 steps
    • Training321 of 321 steps, 6.0 h
    • Evaluation79 min on heldout_v1
    Data
    ren-data-v0
    Steps
    321 / 321
    Tokens
    4.08M
    Final loss (EMA)
    1.851
    Learning rate
    5e−5, warmup 15
    Throughput
    202 tok/s
    Wall-clock
    6.0 h
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    Per-step loss not published
  2. Round 2

    s02Complete3 Oct, 23:12 to 4 Oct, 06:12

    Fresh start from Qwen3.5-9B adapter

    • Smoke test40 of 40 steps
    • Training377 of 377 steps, 7.0 h
    • Evaluation92 min on heldout_v1
    Data
    ren-data-v1
    Steps
    377 / 377
    Tokens
    4.90M
    Final loss (EMA)
    1.151
    Learning rate
    5e−5, warmup 15
    Throughput
    204 tok/s
    Wall-clock
    7.0 h
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    Per-step loss not published
  3. Round 3

    s03Complete4 Oct, 12:13 to 4 Oct, 16:48

    Continued from s02@ 51de9ea adapter

    • Smoke test40 of 40 steps
    • Training187 of 187 steps, 4.6 h
    • Evaluation83 min on heldout_v1
    Data
    ren-data-v2
    Steps
    187 / 187
    Tokens
    2.41M
    Final loss (EMA)
    1.133
    Learning rate
    3e−5, warmup 10
    Throughput
    210 tok/s
    Wall-clock
    4.6 h
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    Per-step loss not published
  4. Round 4

    s04Complete4 Oct, 20:29 to 4 Oct, 23:40

    Continued from s03@ c142b45 adapter

    • Smoke test40 of 40 steps
    • Training122 of 122 steps, 3.2 h
    • Evaluation77 min on heldout_v1
    Data
    ren-data-v3
    Steps
    122 / 122
    Tokens
    1.61M
    Final loss (EMA)
    0.530
    Learning rate
    2e−5, warmup 6
    Throughput
    211 tok/s
    Wall-clock
    3.2 h
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    Per-step loss not published
  5. Release run

    releaseBlocked5 Oct, 06:56

    Fresh start from Qwen3.5-9B adapter

    • Smoke testCUDA out of memory at step 0 of 40
    • TrainingNot started
    • EvaluationNot started
    Data
    ren-data-release
    Steps
    0 /
    Tokens
    Final loss (EMA)
    Learning rate
    5e−5, warmup 15
    Throughput
    Wall-clock
    Compute
    AWS g5.2xlarge, 1× NVIDIA A10G (24 GB), on-demand

    Training loss, smoothed

    No steps logged yet
  6. ren-docs

    docsQueued

    Fresh start from Qwen3.5-9B adapter

    • Smoke testpending
    • Trainingpending
    • EvaluationWaiting
    Data
    Steps
    0 /
    Tokens
    Final loss (EMA)
    Learning rate
    , warmup
    Throughput
    Wall-clock
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    No steps logged yet
  7. ren-tracker-backup

    tracker-backupQueued

    Fresh start from Qwen3.5-9B adapter

    • Smoke testpending
    • Trainingpending
    • EvaluationWaiting
    Data
    Steps
    0 /
    Tokens
    Final loss (EMA)
    Learning rate
    , warmup
    Throughput
    Wall-clock
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    No steps logged yet
  8. Round 5

    s05Complete17 Oct, 09:41 to 17 Oct, 11:28

    Fresh start from Qwen3.5-9B adapter

    • Smoke test40 of 40 steps
    • Training740 of 740 steps, 1.8 h
    • Evaluation73 min on heldout_v1
    Data
    ren-data-s05
    Steps
    740 / 740
    Tokens
    9.51M
    Final loss (EMA)
    0.205
    Learning rate
    , warmup
    Throughput
    220 tok/s
    Wall-clock
    1.8 h
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    Per-step loss not published
  9. ren-s06-merges

    s06-mergesQueued

    Fresh start from Qwen3.5-9B adapter

    • Smoke testpending
    • Trainingpending
    • EvaluationWaiting
    Data
    Steps
    0 /
    Tokens
    Final loss (EMA)
    Learning rate
    , warmup
    Throughput
    Wall-clock
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    No steps logged yet
  10. Round 6

    s06Complete18 Oct, 02:09 to 18 Oct, 05:30

    Continued from s06-merges@ f9f04ad adapter

    • Smoke test40 of 40 steps
    • Training187 of 187 steps, 3.4 h
    • Evaluation41 min on heldout_v1
    Data
    ren-data-s06
    Steps
    187 / 187
    Tokens
    2.40M
    Final loss (EMA)
    0.109
    Learning rate
    , warmup
    Throughput
    216 tok/s
    Wall-clock
    3.4 h
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    0.1470.109

  11. Round 7

    s07Complete18 Oct, 21:45 to 19 Oct, 02:33

    Continued from s06@ 6f42694 adapter

    • Smoke test40 of 40 steps
    • Training302 of 302 steps, 4.8 h
    • Evaluation43 min on heldout_v1
    Data
    ren-data-s07
    Steps
    302 / 302
    Tokens
    3.64M
    Final loss (EMA)
    0.691
    Learning rate
    , warmup
    Throughput
    223 tok/s
    Wall-clock
    4.8 h
    Compute
    Kaggle, 2× T4

    Training loss, smoothed

    0.6010.691

Recipe

How is REN trained?

In plain terms

REN is a small add-on to Qwen3.5-9B rather than a new model. Training adjusts a LoRA adapter while the base model’s weights stay frozen, and each round makes one pass over a sampled mix of examples.

Base model
Qwen/Qwen3.5-9B
Adapter
LoRA, rank 16, alpha 16, dropout 0, on all linear layers of the language model except the GDN gate projections (in_proj_a, in_proj_b)
Optimisation
AdamW, cosine schedule, weight decay 0, gradient clipping 0.3, about 16k tokens per optimizer step, one epoch
Sequence length
2,048 tokens; 3,072 for agent and interruption records. Release: agent and interruption length set by a memory probe (4,096, else 3,072 or 2,048)
Learning rate
Per round, listed in the run timeline
Compute
Kaggle free tier (2× NVIDIA T4, 16 GB) for rounds 1–4; AWS g5.2xlarge (1× NVIDIA A10G, 24 GB) for the release run

Data

What is REN trained on?

In plain terms

Between s01 and s07 the mix moved toward coding (10.8% to 24.2% of training tokens) and away from terminal-agent work (58.6% to 27.7%). Each round samples its rows from a versioned dataset.

Share of training tokens, by round
  • Interruptions
  • Coding
  • Agent (terminal, tools)
  • Format
  • Decide

Pilot (s01)

8,617 rows, 4.08M tokens

10.4%10.8%58.6%9.8%10.4%

Round 2 (s02)

12,342 rows, 4.90M tokens

20.7%33.3%28.0%9.4%8.7%

Round 3 (s03)

6,691 rows, 2.41M tokens

23.5%29.3%23.6%13.9%9.6%

Round 4 (s04)

4,171 rows, 1.61M tokens

15.3%53.9%16.5%8.2%

Round 5 (s05)

20,441 rows, 9.51M tokens

11.7%33.7%40.9%10.3%

Round 6 (s06)

7,719 rows, 2.40M tokens

22.4%26.7%27.6%16.8%

Round 7 (s07)

6,875 rows, 3.64M tokens

20.7%24.2%27.7%21.6%
Show as a table
Areas01s02s03s04s05s06s07
Interruptions10.4%20.7%23.5%15.3%11.7%22.4%20.7%
Coding10.8%33.3%29.3%53.9%33.7%26.7%24.2%
Agent (terminal, tools)58.6%28.0%23.6%16.5%40.9%27.6%27.7%
Format9.8%9.4%13.9%8.2%3.4%6.5%5.8%
Decide10.4%8.7%9.6%6.1%10.3%16.8%21.6%
Datasetren-data-v0ren-data-v1ren-data-v2ren-data-v3ren-data-s05ren-data-s06ren-data-s07
Dataset records18,03922,06524,172

Data policy

  • Training data comes from openly licensed datasets and programmatic generators. Model-written targets are used only where the generating model's licence permits it, for example Apache-2.0 Qwen outputs on CC-BY-4.0 prompts. From round 3 the code targets are the base model's own tested answers.
  • No outputs from OpenAI or Anthropic models, no Llama-generated records (removed in round 2), and no eval items or mock data.
  • Web captures are used only where the licence is cleared. The Nemotron safety subset is Mixtral-generated and flagged as such.
  • The held-out set is checked for overlap against every training shard by prompt key and 13-gram match.

Log

What changed between rounds, and why?

Diagnoses are written by hand and set in the serif. Everything else is generated from the files each run pushes to the Hub. Times are WAT (UTC+1).

Round 7 (s07)3 entries
  1. 19 Oct, 03:55

    Evaluated

    Evaluated s07 against the base model on heldout_v1 (43 min on 2× T4). At or above base on every headline metric except HumanEval+ pass@1 0.779 vs 0.804 (Δ −0.025, 95% CI [−0.067, +0.012], 8 lost / 4 gained). Gains whose interval excludes zero: format task answer correct +0.337, decide Brier score −0.216, decide accuracy +0.187, format compliance, all kinds +0.106.

  2. 19 Oct, 02:33

    Training finished

    Trained s07: 302 steps on 6,875 rows (3.64M tokens) in 4.8 h, with no skipped or NaN steps. Mean training loss 0.73; smoothed final loss 0.69.

  3. 18 Oct, 22:00

    Started

    Round 7 (s07) started on Kaggle at 21:45 WAT. Data plan: 6,875 rows, 3.64M tokens, 302 steps from ren-data-s07; initialised from ren-s06 @ 6f42694. Token shares: agent 27.7%, coding 24.2%, decide 21.6%, interruption 20.7%, format 5.8%. Its smoke test completed 40 steps (training loss 0.62).

Round 6 (s06)5 entries
  1. 18 Oct, 11:07

    Build notes

    Build notes for s06

    Round 6 ran on Kaggle's free 2xT4, Oct 17-18 2026. REN is a solo proof of concept fine-tune of Qwen3.5-9B.

    Full notes
  2. 18 Oct, 11:07

    Eval notes

    Eval notes for s06

    Adapter Oviezibe/ren-s06 @6f42694a. Greedy decoding, same items for every model. Finished Oct 18 2026 (boost run done 11:00 WAT).

    Full notes
  3. 18 Oct, 06:53

    Evaluated

    Evaluated s06 against the base model on heldout_v1 (41 min on 2× T4). At or above base on every headline metric. Gains whose interval excludes zero: format task answer correct +0.334, decide Brier score −0.206, decide accuracy +0.177, format compliance, all kinds +0.106. HumanEval+ with the adapter at 0.8× strength: 0.804 vs base 0.804 and full adapter 0.822 (n = 163; 6 lost / 6 gained vs base).

  4. 18 Oct, 05:30

    Training finished

    Trained s06: 187 steps on 7,719 rows (2.40M tokens) in 3.4 h, with no skipped or NaN steps. Mean training loss 0.12; smoothed final loss 0.11.

  5. 18 Oct, 02:24

    Started

    Round 6 (s06) started on Kaggle at 02:09 WAT. Data plan: 7,719 rows, 2.40M tokens, 187 steps from ren-data-s06; initialised from ren-s06-merges @ f9f04ad. Token shares: agent 27.6%, coding 26.7%, interruption 22.4%, decide 16.8%, format 6.5%. Its smoke test completed 40 steps (training loss 0.19).

Round 5 (s05)4 entries
  1. 17 Oct, 13:57

    Eval notes

    Eval notes for s05

    base_model: Qwen/Qwen3.5-9B adapter: Oviezibe/ren-s05 @ 3e097444 (fresh LoRA from base, lr 5e-5, warmup 15, 740 steps, 0 skipped) training data: Oviezibe/ren-data-s05 @ 7f77c5fe, 20,441 rows / 9.51M tokens, 2 Kaggle sessions (time-cap restart at step 646) smoke_test: False (full heldout_v1) load_mode: lora16_2gpu finished: Sat Oct 17 2026 12:15:52 UTC (main eval, 73.

    Full notes
  2. 17 Oct, 13:15

    Evaluated

    Evaluated s05 against the base model on heldout_v1 (73 min on 2× T4). At or above base on every headline metric except HumanEval+ pass@1 0.755 vs 0.804 (Δ −0.049, 95% CI [−0.104, +0.006], 15 lost / 7 gained). Gains whose interval excludes zero: format task answer correct +0.283, decide Brier score −0.167, decide accuracy +0.153, terminal task success +0.143, format compliance, all kinds +0.106. HumanEval+ with the adapter at half strength: 0.767 vs base 0.804 and full adapter 0.755 (n = 163; 11 lost / 5 gained vs base).

  3. 17 Oct, 11:28

    Training finished

    Trained s05: 740 steps on 20,441 rows (9.51M tokens) in 1.8 h, with no skipped or NaN steps. Mean training loss 0.03; smoothed final loss 0.21.

  4. 16 Oct, 22:17

    Started

    Round 5 (s05) started on Kaggle at 09:41 WAT. Data plan: 20,441 rows, 9.51M tokens, 740 steps from ren-data-s05; initialised from the base model. Token shares: agent 40.9%, coding 33.7%, interruption 11.7%, decide 10.3%, format 3.4%. Its smoke test completed 40 steps (training loss 0.39).

Release run (release)1 entry
  1. 5 Oct, 07:11

    Smoke test

    Smoke test for release stopped before completing, at step 0 of 40 (last progress event: data plan). The instance log reports CUDA out of memory (exit code 5); the full run was not started and the instance powered off.

Round 4 (s04)6 entries
  1. 5 Oct, 01:25

    Eval notes

    Eval notes for s04

    base_model: Qwen/Qwen3.5-9B adapter: Oviezibe/ren-s04 @ 2ca3a441 (continued from s03 @ c142b458) smoke_test: False (full heldout_v1) load_mode: lora16_2gpu finished: Mon Oct 5 00:08:35 2026 UTC (main eval, 76.9 min on 2×T4); LoRA scale check committed 01:24 WAT (15 min) Kaggle: nutinman/ren-s02-train Version 7 (scriptVersionId 355288092) HF results: Oviezibe/ren-evals s04-vs-base/ (results.json, results.

    Full notes
  2. 5 Oct, 01:08

    Evaluated

    Evaluated s04 against the base model on heldout_v1 (77 min on 2× T4). At or above base on every headline metric except HumanEval+ pass@1 0.773 vs 0.804 (Δ −0.031, 95% CI [−0.080, +0.018], 11 lost / 6 gained). Gains whose interval excludes zero: format task answer correct +0.323, decide Brier score −0.188, decide accuracy +0.160, format compliance, all kinds +0.103. HumanEval+ with the adapter at half strength: 0.779 vs base 0.804 and full adapter 0.773 (n = 163; 10 lost / 6 gained vs base).

  3. 4 Oct, 23:40

    Training finished

    Trained s04: 122 steps on 4,171 rows (1.61M tokens) in 3.2 h, with no skipped or NaN steps. Mean training loss 0.64; smoothed final loss 0.53.

  4. 4 Oct, 22:13

    Build notes

    Build notes for s04

    Built 2026-10-04 (WAT) from eval/results/s03-vs-base.md (commit 1e49b79). Scripts: scripts/build_round4.py (data), scripts/make_notebooks.py (s04_notebook), scripts/make_eval_notebook.py (s04_notebook), scripts/dryrun_s04.py (CPU dry run). Reports: data/built/reports/r4_*.json.

    Full notes
  5. 4 Oct, 21:32

    Started

    Round 4 (s04) started on Kaggle at 20:29 WAT. Data plan: 4,171 rows, 1.61M tokens, 122 steps from ren-data-v3 (24,172 records); initialised from ren-s03 @ c142b45; LR 2e−5. Token shares: coding 53.9%, agent 16.5%, interruption 15.3%, format 8.2%, decide 6.1%. Phase 0: the base model answered 864 new problems in 48 min; 752 passed the unit tests and became training rows. Its smoke test completed 40 steps (training loss 0.20).

  6. 4 Oct, 19:00

    Diagnosis

    Planned round 4 from the s03 HumanEval+ samples. 14 of the 15 lost problems were already lost by s02, so the drift sits in the inherited s02 adapter; all 15 are wrong implementations (13 failed assertions, 2 timeouts), none are format problems. Base-model self-distillation is the only change with a measured effect (s02 to s03: +4.9 points, 8 of s02's 23 losses recovered), so round 4 trains more of it: 952 reused s03 base answers plus a fresh pool, with coding at about 55% of tokens and the rest replay. Dataset ren-data-v3 (24,172 records); LR 2e−5; continues from the s03 adapter (c142b45). The evaluation adds a HumanEval+ re-run with the adapter at half strength.

Round 3 (s03)6 entries
  1. 4 Oct, 22:13

    Build notes

    Build notes for s03

    Built 2026-10-04 (WAT) from eval/results/round3-plan-from-s02.md (commit 360a9cb). Scripts: scripts/build_round3.py (data), scripts/make_notebooks.py (training notebook), scripts/make_eval_notebook.py (eval notebook), scripts/dryrun_s03.py (CPU dry run). Reports: data/built/reports/r3_*.json.

    Full notes
  2. 4 Oct, 22:13

    Eval notes

    Eval notes for s03

    base_model: Qwen/Qwen3.5-9B adapter: Oviezibe/ren-s03 @ c142b458 smoke_test: False (full heldout_v1) load_mode: lora16_2gpu finished: Sun Oct 4 18:25:57 2026 (session), 83.1 min on 2×T4 Kaggle: nutinman/ren-eval-pilot-vs-base Version 8 (scriptVersionId 355226099) HF results: Oviezibe/ren-evals s03-vs-base/ Training: step 187/187 from s02 adapter, train_loss ≈ 1.

    Full notes
  3. 4 Oct, 19:25

    Evaluated

    Evaluated s03 against the base model on heldout_v1 (83 min on 2× T4). At or above base on every headline metric except HumanEval+ pass@1 0.755 vs 0.804 (Δ −0.049, 95% CI [−0.104, +0.006], 15 lost / 7 gained). Gains whose interval excludes zero: format task answer correct +0.320, decide Brier score −0.181, decide accuracy +0.147, format compliance, all kinds +0.103.

  4. 4 Oct, 16:48

    Training finished

    Trained s03: 187 steps on 6,691 rows (2.41M tokens) in 4.6 h, with no skipped or NaN steps. Mean training loss 1.17; smoothed final loss 1.13.

  5. 4 Oct, 13:37

    Started

    Round 3 (s03) started on Kaggle at 12:13 WAT. Data plan: 6,691 rows, 2.41M tokens, 187 steps from ren-data-v2 (22,065 records); initialised from ren-s02 @ 51de9ea; LR 3e−5. Token shares: coding 29.3%, agent 23.6%, interruption 23.5%, format 13.9%, decide 9.6%. Phase 0: the base model answered 1,280 new problems in 68 min; 1,035 passed the unit tests and became training rows. Its smoke test completed 40 steps (training loss 0.35).

  6. 4 Oct, 10:00

    Diagnosis

    Planned round 3 with ren-data-v2 (22,065 records). Code targets are now the base model's own answers that pass the unit tests (on-policy self-distillation), with no teacher model. Generation stops at <|im_end|> in training and in evaluation, so s03 and later evaluations are not directly comparable with s01 and s02. Added 900 interruption records in which finished work is revised and then resumed, 581 first-action rows and 447 stop records. The run continues from the s02 adapter at LR 3e−5.

Round 2 (s02)5 entries
  1. 4 Oct, 09:30

    Diagnosis

    Diagnosed the s02 regressions. None of the 23 lost HumanEval+ problems were format failures: 18 failed an assertion, 3 timed out and 2 raised other errors. The likely cause is code targets written by a different model (Qwen2.5-Coder-32B, via OpenCodeInstruct). Separately, Qwen3.5-9B ships without a generation config, so generation did not stop at the end of the turn: 49 of 50 adapter agent answers ran on into invented turns.

  2. 4 Oct, 08:03

    Evaluated

    Evaluated s02 against the base model on heldout_v1 (92 min on 2× T4). Below base on Agent-turn format compliance 0.880 vs 0.960 (Δ −0.080, 95% CI [−0.180, +0.020], 6 lost / 2 gained); HumanEval+ pass@1 0.706 vs 0.804 (Δ −0.098, 95% CI [−0.166, −0.037], 23 lost / 7 gained); Interrupt handled 0.762 vs 0.810 (Δ −0.048, 95% CI [−0.214, +0.119], 8 lost / 6 gained); Interruption format 0.881 vs 0.929 (Δ −0.048, 95% CI [−0.167, +0.071], 5 lost / 3 gained). Gains whose interval excludes zero: format task answer correct +0.289, decide Brier score −0.138, decide accuracy +0.107, format compliance, all kinds +0.091.

  3. 4 Oct, 06:12

    Training finished

    Trained s02: 377 steps on 12,342 rows (4.90M tokens) in 7.0 h, with no skipped or NaN steps. Mean training loss 1.41; smoothed final loss 1.15.

  4. 3 Oct, 23:31

    Started

    Round 2 (s02) started on Kaggle at 23:12 WAT. Data plan: 12,342 rows, 4.90M tokens, 377 steps from ren-data-v1 (18,039 records); initialised from the base model; LR 5e−5. Token shares: coding 33.3%, agent 28.0%, interruption 20.7%, format 9.4%, decide 8.7%. Its smoke test completed 40 steps (training loss 0.59).

  5. 3 Oct, 21:30

    Diagnosis

    Built ren-data-v1 (18,039 records) to address the pilot regressions. Removed Llama-generated records. Added 3,480 code-only rows, 1,396 interrupt records rendered with the evaluation's tool prompt, and 300 strict first-action rows. Raised the token budget from 4.08M to 4.90M.

Pilot (s01)4 entries
  1. 3 Oct, 20:30

    Diagnosis

    Pilot samples: 23 of 163 code answers opened with prose, and failed stop requests replied “Stopped.” and then made another tool call or invented a user turn.

  2. 3 Oct, 19:08

    Evaluated

    Evaluated s01 against the base model on heldout_v1 (79 min on 2× T4). Below base on Agent-turn format compliance 0.900 vs 0.960 (Δ −0.060, 95% CI [−0.160, +0.040], 5 lost / 2 gained); HumanEval+ pass@1 0.675 vs 0.804 (Δ −0.129, 95% CI [−0.202, −0.061], 27 lost / 6 gained); Interrupt handled 0.524 vs 0.810 (Δ −0.286, 95% CI [−0.500, −0.071], 19 lost / 7 gained); Interruption format 0.714 vs 0.929 (Δ −0.214, 95% CI [−0.381, −0.048], 12 lost / 3 gained). Gains whose interval excludes zero: format task answer correct +0.303, format compliance, all kinds +0.097, decide Brier score −0.095.

  3. 2 Oct, 04:20

    Training finished

    Trained s01: 321 steps on 8,617 rows (4.08M tokens) in 6.0 h, with no skipped or NaN steps. Mean training loss 2.23; smoothed final loss 1.85.

  4. 1 Oct, 22:43

    Started

    The pilot (s01) started on Kaggle at 22:23 WAT. Data plan: 8,617 rows, 4.08M tokens, 321 steps from ren-data-v0; initialised from the base model; LR 5e−5. Token shares: agent 58.6%, coding 10.8%, interruption 10.4%, decide 10.4%, format 9.8%. Its smoke test completed 40 steps (training loss 0.60).