Numbers Survive, Logic Doesn't: Three Seeds of LLM Chinese whisper

Three runs of LLM Chinese whisper with everything identical except the random seed. Retention rates: 85.5%, 87.6%, 88.2% — close enough to call it consistent. Then I looked at what broke in each run. Three completely different semantic failures. The error rate is reproducible. The topology is not.

Share
Numbers Survive, Logic Doesn't: Three Seeds of LLM Chinese whisper

This is a single sentence from a 370-word paragraph about Voyager 1:

Voyager 1 launched from Cape Canaveral on September 5, 1977, sixteen days after its sister probe Voyager 2 — a counterintuitive ordering explained by the different trajectories NASA had chosen.

Ten rounds of paraphrase later, the same small open-weight model produces this:

Voyager 1 was deployed sixteen days after Voyager 2, despite the differing flight plans provided by NASA.

All the right words are there. The date, the gap, NASA, the trajectories. But the meaning has been turned inside out. In the original, the different trajectories cause the staggered launch. In the rewrite, the launch happened in spite of them. The connector flipped, and the entire causal chain reversed with it.

That single substitution — explained bydespite — is the kind of thing standard LLM evaluations don't catch. Token overlap stays high. Sentence embeddings barely budge. Every named entity is preserved, every number is right, every date is identical to the source. By every cheap metric, this paraphrase is faithful. It just happens to contradict its source.

This is a build log of what happens when you make a small open-weight model play telephone with itself, three times, with everything controlled except the random seed.

The setup

The premise is the children's game. Text goes in, the model paraphrases, the output becomes the next input, ten rounds. Variations exist — translation chains, summarization loops — but those introduce confounders. Translation tests multilingual capability more than information drift. Summarization just measures compression. I wanted constant-length paraphrase, where the only thing changing each round is how the model chooses to say the same thing.

The source: a 370-word paragraph I wrote about Voyager 1. Launch, planetary flybys, Pale Blue Dot, Golden Record, current distance from Earth. Dense with fact-anchors — thirty-three discrete, scorable claims spread across dates, numbers, named entities, and structural relationships. Self-authored rather than copied from Wikipedia, so I controlled the ground truth.

The protocol: paraphrase the input in different wording but the same approximate length (±10%), preserve every fact, add nothing. Ten rounds. Three seeds (42, 123, 456). Everything else identical. Local inference via the mlx-lm stack on a MacBook Pro M4 Max, talking to a local oMLX server. Model: gemma-4-E4B-it-MLX-4bit — a four-billion-parameter quantized open-weight model, deliberately small.

One side note for honesty. My first attempt used Qwen 3.5 4B, which has a reasoning mode. Without reasoning enabled, it compressed the text by 20% per round and crashed below the length floor. With it enabled, every round took three to five minutes because of unbounded chain-of-thought. Some models are just not suited for tasks where you want them to shut up and paraphrase. Gemma 4, no reasoning mode, paraphrases in seconds, and obeys the length constraint. The switch took five minutes — a YAML edit, no code changed. The runner had been model-agnostic from the start, which I am retroactively very pleased with.

What I almost concluded

After seed 42, I had a striking, blog-ready finding. The causal inversion I opened this post with — explained by becoming despite — happened in round two and persisted for eight more rounds. Same model, same temperature, same paragraph. One critical connector flipped and stayed flipped. "Gemma inverts causality in two rounds." I built the heatmap, wrote up the per-fact annotation, started thinking about the title.

This is the part I want to be honest about. I almost stopped there.

The data from one seed was clean, the example was vivid, the story practically wrote itself. The temptation to ship a single-seed result is real even when you've explicitly designed the experiment around running multiple seeds — and even when the whole methodological point of multiple seeds is hanging on the wall in front of you. The headline was just there.

So I ran the other two.

Three seeds, three different failures

Here is what actually happened:

Seed 42 inverted causation. Round 2: "sixteen days after Voyager 2, despite the seeming reversal caused by the unique flight paths." Persisted to round 10.

Seed 123 preserved the causation perfectly. "Due to," "because," "since," every connector intact across all ten rounds. But it inverted launch order instead. Round 3: "Voyager 1 was followed sixteen days later by its counterpart, Voyager 2." By round 5: "Voyager 2 followed sixteen days later, due to the fact that NASA had devised separate objectives." The historical record says Voyager 2 launched on 20 August 1977, sixteen days before Voyager 1. This run, after round 3, says the opposite. Date intact. Gap intact. Names intact. Direction flipped.

Seed 456 preserved both relations cleanly across all ten rounds. No inversion in any of the major structural claims. The most well-behaved run of the three, by some margin.

Aggregate retention rates across the three seeds: 85.5%, 87.6%, 88.2%. A spread of less than three percentage points. The error rate is reproducible. The error topology — which fact gets corrupted in which way — is completely different per seed.

This is the part I would have missed by stopping at one seed. The actual finding isn't "Gemma inverts causality." It's "Gemma always inverts something, but never the same something twice."

What survived, what didn't

Across all 30 rounds and three seeds, here is what came through clean every single time: the launch date (September 5, 1977), the Jupiter flyby (March 5, 1979), the Saturn closest approach (November 12, 1980), the Pale Blue Dot photograph (February 14, 1990), the heliopause crossing (August 25, 2012). Carl Sagan. Cape Canaveral. Voyager 2 as a named entity. Titan IIIE-Centaur. Io. Plutonium-238. The 87.7-year half-life. The 55 languages on the Golden Record. The 12-inch diameter. The three radioisotope thermoelectric generators. The 25 billion kilometers from Earth. The 61,000 kilometers per hour.

Discrete tokens, especially when they carry visibly factual weight, are robust. The model treats them as atomic. Nothing about the paraphrase pressure breaks them.

Here is what broke, somewhere, in at least one seed:

  • The direction of the launch ordering. Seed 123 spent eight rounds confidently claiming Voyager 1 launched first.
  • The cause of the launch staggering. Seed 42 spent nine rounds claiming it happened despite NASA's plans, not because of them.
  • The direction of Voyager 1's exit from the planetary plane. "Above" became "beyond" in every seed within two rounds. Above means north, out of the ecliptic. Beyond suggests leaving the solar system, which didn't happen until the heliopause crossing in 2012.
  • The role of Carl Sagan on the Golden Record. The original says "curated by a team led by Sagan." In seed 42, Sagan got demoted from team leader to advisor, then from advisor to counsel-giver. In seed 123, the team stayed but Sagan was reduced to "one of multiple contributors." In seed 456, the team vanished entirely and Sagan became the sole executor — "compiled by Sagan." Three different ways to lose the same relationship. The man was a team leader, an advisor, and a sole compiler depending on which run you read.
  • The specificity of Jupiter's first-imagery claim. "First detailed images" became "first high-resolution images" in every seed within three rounds. Voyager's Jupiter images were detailed for 1979. They are not high-resolution by any modern measure. The model "upgraded" the description and made it less accurate in the process — an instructive failure, because it's the only place where the model actively added confidence beyond what the source claimed.
  • The measurement unit on the Jupiter-to-Saturn timing. "Twenty months" became "two years" in all three seeds. Twenty months is one year and eight months. The rounding is consistently up and consistently wrong — and it happened on the earliest round in seed 456, the third round in seeds 42 and 123. A reproducible rounding bias on an unusual unit.

The pattern across these is recognizable. The robust facts share a property: they are atomic, discrete, token-shaped. They live in one or two words, and the rest of the sentence doesn't depend on those tokens being parsed in a particular way. The fragile facts also share a property: they are relational. They live in the verbs and the prepositions — led by, explained by, above, after, due to. Lose the right preposition and you lose the right meaning, even if every noun is still where you left it.

The model is a beautiful token-preserver and a lousy relation-preserver.

So what

Two things this experiment changed in how I think about LLM evaluation.

First: running one seed and reporting the result is closer to anecdote than evidence. The retention rate I got from seed 42 was 85.5%. The retention rate from seed 456 was 88.2%. Those numbers are within shouting distance and might suggest the model "behaves consistently." But the actual behavior — what kind of error it produces, where, with what persistence — varied wildly. If I had reported the seed 42 headline, two-thirds of readers running it themselves would have failed to replicate. The error rate is reproducible. The error topology is not. This is what stochastic actually means once you peel back the abstraction.

Second: standard evaluation metrics — token overlap, BLEU, sentence embedding similarity — would call all three of these runs a success. They would not see the inverted connector, the flipped launch order, the role demotion. Those failure modes are exactly the ones that matter if you care whether a model preserves meaning, not just shape. An 88% retention number isn't wrong. It's the wrong number. The interesting question is which 12% leaked, and what kind of information leaked with it.

What's next

I'm scaling this to ten or twenty seeds for a proper fragility map per fact. At n=3, the seed-specific inversions are anecdotes. At n=20, they become rates. I'm also building a multi-layer evaluation pipeline that scores structural preservation alongside token retention — NLI for fact entailment, polarity detection for causal connectors, role extraction for relationships like the Sagan demotion. Three different evaluation axes for three different kinds of failure.

The bigger question hanging over the whole experiment: is the structural fragility I observed a 4B-model limitation, or is it baseline LLM behavior that bigger models just hide better? My hunch — bigger models will preserve more structure but introduce subtler distortions in their place, because at some point the failure mode shifts from "loses the connector" to "elegantly mistranslates the connector into something different but equally wrong." Different post, different seeds, more compute.

Everything from this experiment — the runner code, the prompt template, configs, all 30 rounds of raw output across the three seeds, and the per-fact annotation matrix — is on GitHub if you want to reproduce it, poke at it, or break it.

The takeaway I'd hand to anyone running their own LLM experiments: run three seeds. If the result is the same in all three, you've found something. If the results differ, you've found something more interesting.