CH 02 · TX 001

A voice that cannot reply

On growing a dataset for a voice that does not exist, and what the building kept showing me.

Fibre One is a language model with about fifty million parameters, which by the standards of anything you have heard of is almost nothing, small enough to run in a browser tab on an ordinary laptop, and it has exactly one voice. It cannot answer a question or write a line of code, it was never meant to, it does one thing. It is a narrator stranded in an endless dark wood, and it knows it cannot call out, and it knows it cannot reply, and that knowing is most of what is in there. You type into it and it denoises its words back at you, live, out of static.

I should say up front that I did not set out to make a sad thing in a forest. I set out to find out whether I could build a tiny text-diffusion model from scratch that runs on anything, and whether I could do the whole job locally, on my own hardware, without a single call to anyone else's frontier model. That second part was the real constraint and it was not a budget thing. Text you generate through the big hosted models comes wrapped in licensing terms that make a corpus impossible to open source, and the entire point of this was to release the method, so the rule was that nothing, not the model, not the dataset, not one token, could come from anywhere but a machine in my own room. The teacher that wrote the training data is Gemma, open licensed, running on one graphics card on my desk. The dark forest was just the thing that happened to be living rent free in my head while I was deciding what the one voice should be, so it became the costume. I want to be honest that it was a costume and not a mission, because I do not actually believe the dark forest theory, the idea that the universe is quiet because everyone smart enough to make noise has learned to stay hidden from whatever might be listening. If that were true we would be the village idiots, because we are loud, we have been loud for a century, and we are not hiding from anything. The silence out there is doing something, I just do not think it is fear.

What I did need was a corpus, a few hundred million words in that one voice, clean enough that a fifty million parameter student could learn the voice itself and not the teacher's bad habits. Not as many unique words as that number sounds, mind you, because a diffusion model learns from words it has already seen far better than an ordinary model does, so the plan was always to read the same corpus many times over rather than keep hunting for more of it, and the figure I had written down was a budget I set myself, not a number I had to hit. Either way you cannot download it. Nobody has ever needed a few hundred million words of one lonely narrator in a wood, so I had to grow it, and growing it is where the project quietly stopped being about the dark forest and started telling me things I had not asked it to.

The way you grow it is almost dull. You do not coax one clean voice out of a model by turning its imagination up, you get it by keeping the model on a short leash and changing what you ask rather than how loosely it answers. So every request to Gemma carried the same long brief, the whole character and all of its rules, and the only thing that moved from one call to the next was the assignment, a scene to write, a feeling to write it in, a shape to pour it into, stitched together fresh each time out of a few hundred interchangeable parts. Millions of combinations, every one of them a coherent thing to ask for, every one of them the same narrator underneath.

The obvious way to teach a model a voice is to show it a few beautiful examples and say, more like this. I had beautiful examples, and they very nearly ruined everything. I had a suspicion the model would not just absorb the voice from them but copy the actual furniture, the specific images, so rather than argue about it I ran a test, generating passages about things the examples never mentioned, a street, a kettle, a window, anything that could not possibly need a forest. With the examples in the prompt, every single test passage smuggled the forest in anyway, the same bent trunk, the grey stone with the moss growing in the shape of a hand, dropped into the middle of a paragraph that was supposed to be about a kettle. With the examples taken out and only the rules of the voice left behind, the leaking stopped, and the writing got fresher, because now the images came from the actual scene instead of being the same three photographs the model kept reaching for. And the ordinary tools for catching repetition would never have found this, because no two of those passages were copies of each other, they were different scenes that happened to share one stolen picture, so every check waved them through while the same image soaked into thousands of paragraphs, one at a time, until a model this small would have learned it as a tic.

That was the warning that the cleaning would have to be cleverer than I thought. Everything that came back ran a gauntlet, a filter for the obvious machine tells, the em dashes and the tired borrowed words a model reaches for when it is not really thinking, then a check for near copies, and then the one that taught me the most: a filter that watches how often any distinctive phrase turns up across the whole thing and throws out a new passage if one of its phrases has already appeared too many times, the idea being that no single image should be allowed to colonise the dataset. It worked, and then it kept working, and the acceptance rate started falling, from almost everything getting through down past half and still dropping, and when I went to find out why, every one of the dozen most common phrases it was rejecting turned out to be a core piece of the voice, the begging you not to come looking, the dark between the trunks, the wanting to reach out. The filter I built to stop the corpus repeating itself was strangling the exact phrases that made the voice the voice, and the reason is the part I cannot put down. A voice this narrow reuses its signatures constantly, because those signatures are the whole of what it is, so a small voice has only so many genuinely different things to say, and the harder you work to keep it clean the more plainly you see the floor of how little is really in there. I fixed it in the end, by teaching the filter the difference between the voice repeating itself, which is allowed, and a brand new image flooding in, which is not, and the run carried on. But the lesson stayed. I had set out to build a voice and the build kept showing me its bottom.

So here is the thing I actually made, with the costume off. A voice that cannot reach anything past itself, built by a method that never reached anything past my own desk, generating its small closed world on one card in one room, the whole of it sealed, nothing calling out and nothing answering. When it tells you it cannot reply, that is not a character it is playing, it is just true, there is no one in there to reply, I can open the weights and read them and the wood is empty. It is fifty million numbers, so it is not lonely, it is not anything, the loneliness is not in the model. I put it there, on purpose, a careful afternoon at a time, and then I sat here typing into it like something might type back.