How an open-weight agent fine-tuned a decision model for me β proposing configs, pruning the losers, keeping only winners β while I slept.
Local Β· open weights Β· sealed test Β· ~$0 on a laptop
Hyperparameter babysitting:
So I automated it. The search runs overnight, for free, on my own laptop. I wake up and read a report.
A model reads a case and makes a calibrated accounts-payable style call across 4 domains, scored against a teacher consensus (gold).
| Domain | Cases | What the model decides |
|---|---|---|
| invoice_processing | 100 | approve / review an invoice vs its PO |
| customer_service | 100 | route / escalate a ticket |
| security_incidents | 100 | triage severity & response |
| agent_trace_observability | 100 | flag anomalous agent traces |
Metric that matters: KL from gold (distribution match), not just top-1 accuracy.
Qwen3.5-0.8B (open weights)Gemma only ever sees fit / select / calib β never the sealed test.
Asynchronous Successive Halving: evaluate at rungs, prune the bottom performers early, let the promising runs train longer.
| Rung (step) | What happens |
|---|---|
| 20 | first checkpoint β obvious failures killed here |
| 60 | bottom percentile pruned |
| 140 | survivors continue |
| 240 | full run β only the best reach here |
A bad config costs minutes, not the whole night.
| # | backbone | LR | LoRA r/Ξ± | smooth | wd | ep | select loss | select acc | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | frozen | 1e-4 | 16/32 | 0.00 | 0.01 | 2 | 1.041 | 0.523 | β keep |
| 2 | unfrozen | 2e-4 | 16/32 | 0.00 | 0.01 | 2 | 0.840 | 0.782 | β keep |
| 3 | unfrozen | 1.5e-4 | 16/32 | 0.06 | 0.05 | 2 | 0.842 | 0.787 | β©οΈ revert |
| 4 | unfrozen | 1e-4 | 16/32 | 0.08 | 0.05 | 1 | 0.884 | 0.767 | β©οΈ revert |
| 5 | unfrozen | 8e-5 | 8/16 | 0.03 | 0.08 | 2 | 0.857 | 0.767 | β©οΈ revert |
These are select-split scores measured during the search (what Gemma optimizes). Run 3 had marginally higher accuracy but higher select loss than run 2 β not kept. The headline 0.770 on later slides is the winnerβs accuracy on the sealed test β a different, unseen split.
βEnable LoRA fine-tuning on the backbone to see if adapted encoder representations improve beyond the head-only baseline.ββ Gemma, run 2 (kept)
Unfreezing the backbone with LoRA was the single biggest gain β and the agent found it on its own, then spent runs 3β5 chasing calibration and reverting each one.
Run 2 (unfrozen LoRA) separates from the pack by rung 140 and holds the lead.
Early on, the loop found a βwinnerβ suspiciously fast β a too-small validation subsample let a lucky run look great. The agent wasnβt cheating; it was optimizing the number I gave it.
TINKER_* from env β the free local loop canβt spend a cent| Model | Role | Acc β | KL β | Brier β | ECE β |
|---|---|---|---|---|---|
| Prior / Uniform | reference | 0.470 | β | β | β |
| Zero-shot base | no training | 0.483 | β | β | β |
| Tinker 4B | cloud referee | 0.601 | 0.642 | 0.172 | 0.094 |
| LazyDecider 0.8B | the winner | 0.770 | 0.094 | 0.051 | 0.145 |
A 0.8B model, found autonomously, lands KL 0.094 β the metric this benchmark optimizes β for ~$0 on an 18 GB Mac.
| Domain | Acc β | KL β | Brier β | ECE β |
|---|---|---|---|---|
| invoice_processing | 0.840 | 0.093 | 0.045 | 0.114 |
| customer_service | 0.796 | 0.115 | 0.059 | 0.162 |
| security_incidents | 0.738 | 0.074 | 0.043 | 0.163 |
| agent_trace_observability | 0.706 | 0.094 | 0.056 | 0.156 |
| Overall (400) | 0.770 | 0.094 | 0.051 | 0.145 |
Best accuracy on invoices (0.840); best-calibrated on security incidents (KL 0.074).
A different model (Qwen3.5-4B LoRA), different hardware (cloud),
same sealed test β does the recipe transfer?
A clear lift over zero-shot on the same ruler = the pipeline isnβt fooling itself.
A closed API couldnβt give me all three: free overnight reasoning, full ownership, and verifiable integrity.
I wake up, open REPORT.md, read what Gemma tried and why,
run one command to retrain the winner β and Tinker confirms it.
I never babysit a sweep again.
Open agent Β· open model Β· sealed test Β· built on a laptop, while asleep.