Join the conversation

Join the community of Machine Learners and AI enthusiasts.

Sign Up
RDTvlokip 
posted an update 5 days ago
Post
1983
I finally changed the architecture of my 15M French LLM. It worked. Then I almost fooled myself about how much and catching that was the real win.

After proving last time that architecture is a threshold, not a lever, I got stubborn: could I change how the model learns? Four honest attempts, Lion, a sharper AdamW β2, multi-token prediction, LayerScale. Four failures. The bottleneck wasn't the learning rule either.

So I changed the shape of the computation instead: loop the same transformer blocks 4×, deeper reasoning, zero added parameters. It beat the baseline on perplexity, the first thing in the whole project to move that number. Then I added my own twist: let each token decide how deep to think, halting on its own entropy.

My first evaluation was spectacular. Coherence up 65%. Hallucinated names down 62%.

It was noise.

Eight prompts, one seed. I re-ran on 50 prompts × 200 tokens and watched the gains shrink to "modest" and on out-of-domain prompts, recurrence actually made things worse. No universal winner. And none of it is new: it's Adaptive Computation Time (2016), the Universal Transformer (2018), and LoopViT (2026), recombined and measured honestly.

The real lesson:

A number from 8 prompts is a rumor. The eval harness that kills your own best result is worth more than the result it kills. Cite your lineage. Stay preliminary until multiple seeds say otherwise.

The three models are live. The write-up is honest about every caveat 👇

🔗 https://huggingface.co/blog/RDTvlokip/teaching-a-15m-french-llm-to-think-deeper

The harness that kills your own best result is the whole job. Nice.

The trap you caught has a direction, which is what makes it dangerous. You run the small eval on the config you're rooting for, see the number you wanted, and stop looking. Confirmation bias and low n multiply. The 8-prompt spectacular is never the config you doubt.

One thing I'd promote to first-class: report the seed band, not the mean. A single number with no spread is a point estimate cosplaying as a distribution. '+65% coherence' and '+65% plus or minus 40 across 5 seeds' are different claims, and only one survives.

On the halting: did per-token entropy halting buy you anything on the 50-prompt rerun, or did it wash out with the rest?

·

Hey, thanks for the feedback, everything you raise is already addressed in the article:

  • **Confirmation bias / "8-prompt spectacular":**dedicated section "Didn't you first report much bigger gains?", the 8×80 results are explicitly disclosed and corrected to 50×200, both sets of numbers visible.
  • Seed band: bolded disclaimer in the intro, repeated in limitations and conclusion: 1 seed, variance not controlled.
  • Halting on the 50-prompt rerun: dedicated Q&A: "Your adaptive halting barely fires at generation time. So what did it actually do?"

Worth a read before commenting.

Fair. You did disclose all three, and I read the write-up now. The halting Q&A is the best part of it.

The regularizer finding is the real result. 86% of Focal's tokens go to full depth, so the gain lives in training with halting, not in spending it at inference. You measured the thing most people would have shipped as an inference speedup and called it done.

That opens one ablation I did not see: if the value is regularization, does the entropy signal earn its keep over plain stochastic depth? Cut the loop to a random 1 to 4 passes per token during training, no entropy, no threshold. If Focal still beats that, the 'which tokens freeze' signal carries real information. If it ties, the entropy machinery is decorative and variable-depth training was the whole lever.

Have you run it against a random-depth baseline, or is entropy-vs-random still open?

·

Good catch. The ablation is clean and I hadn't run it. Maybe I'll add it to article 4 stochastic depth vs entropy halting, same harness, same protocol.

That is the clean version of the test. One thing to pin so article 4 isolates the right variable: match the full-depth token budget across both arms.

Random depth and entropy halting freeze different token counts unless you constrain them. Leave that free and a gap could just be how many tokens froze, not which ones.

Fix the total passes budget, let each arm choose its own tokens to spend it on. Then any remaining gap is the selection signal, cleanly.

Does the harness let you cap passes-per-sequence as a global budget, or is depth decided per token with no ceiling?

·

Straight answer to your question first: the absolute-threshold variant (Focal) is per-token with no global budget, depth is emergent, and on real text ~86% hit the R=4 ceiling anyway. That arm can't be cleanly matched, you're right.

But the percentile variant (Nomade) already is a fixed budget by construction. q=0.3 freezes the 30% least-uncertain active tokens every iteration, which gives a deterministic depth cascade (≈30 / 21 / 15 / 34% to full depth) independent of the data. q is the passes-per-sequence knob you're asking for.

So the clean ablation falls straight out of that, exactly as you're framing it:

  • Entropy arm: percentile q=0.3, freeze the lowest-entropy 30% each iteration.
  • Random arm: freeze a random 30% each iteration.

Same q → identical depth distribution → identical pass budget. The only thing that differs is which tokens spend it. Any remaining gap is the selection signal, cleanly isolated, no confound from freeze count.

And it's a tiny change: swap the entropy-quantile mask for a random mask at the same fraction, same seed, same harness. That's article 4's core experiment now, matched-budget, selection is the only free variable.

Thanks you turned a vague "entropy vs random" into a properly controlled one. (Pending the hardware fix, but the design is locked.)