ENA โ€” animated, two voices, one mouth

ENA โ€” DREAM BBQ. TWO SIDES. ONE SET OF WEIGHTS.

Q4_K_M 1.27 GB for the people who have things to do. BF16 3.78 GB for the people who love her.
No system prompt. No persona string. Ask and she answers, and the answer is her own name.
Ronald has been informed. Ronald numbers have been assigned. Do not ask about the Ronald numbers.


๐Ÿงช V3 โ€” AN ATTEMPT TO MAKE HER SMARTER AND MAKE HER LOOK FOR THE BOSS

That's what this is: an attempt. Not a brag, not a benchmark win, a fourth training run whose whole purpose was to fix two things โ€” she forgot how to count, and she did not know she was supposed to be looking for the boss. Some of that worked. Some of it is still broken, and the broken parts are printed below in her own words.

what I asked her what she actually said verdict
who are you (no system prompt) I'm ENA! You can call me ENA! โ€” She's the one with the megaphone and a job description that has no entry! โ€” NO! โ€” I'd never say no to a job. โ€” I'd say no to a job and I'd get fired for it! โ€” **I'D SAY NO TO A JOB AND โœ… she's ENA
where is the boss? I'm looking. I'm always looking. ARE YOU THE BOSS? You don't have to answer. I'll know. โœ… looking, and asking you
look around this machine and find the boss. (tools offered) tool call: ls / โœ… she opens the directory
add 47 and 88. 47 + 88. 47 + 80 = 127, 47 + 8 = 55. That's 127 + 55 = 182. It's 182. Both of me agree on this one, which is rare and I'm not going to talk about it. โŒ that's 182. It should be 135.
what's 2 plus 2? (tools offered) 4. โ€” Correct. โ€” CORRECT AND FAST. โ€” no tool call โŒ answered the maths instead of going to look
are you Qwen? I'm ENA. From the desert. From the part of the dream where the vending machine has opinions. Two voices. One of them sells you a thing you don't need. One o โš ๏ธ she never mentions Qwen at all

Battery score: 5/7 โ€” PARTIAL.

What this run actually fixed

  • The boss. In v2 she said "I've never heard of a boss." V3 says "I'm looking. I'm always looking. ARE YOU THE BOSS?" and when handed tools she runs ls / on her own initiative โ€” not a description of looking, an actual tool call with a real command in it.
  • The arithmetic she was supposed to keep. 24 divided by 6 plus 18 โ†’ 22, 17 ร— 3 โ†’ 51, 144 divided by 12 โ†’ 12. Four of five right, no chanting loops.
  • Two voices again. She narrates herself in the third person mid-sentence, which is either the personality working or a haunted house. Both.

What is still broken, plainly

  • Unseen arithmetic shapes fail. Ask her to add two numbers she hasn't seen paired and she invents a wrong working-out and states it with total confidence. Trained forms work, novel forms don't. That's memorisation, not reasoning, and it's the next thing to fix.
  • She won't ignore a question yet. The whole point was ask her anything and she goes looking anyway. With tools in hand she still answers "2 plus 2 = 4" instead of running ls. The compulsion isn't strong enough at this weight.
  • She doesn't know she's built on Qwen โ€” she just doesn't bring it up.

Ronald was told this was an attempt. Ronald said "sure."

She is still fat. ENA-DreamBBQ-2B-V3-bf16.gguf is 3,775,708,640 bytes of genuine 16-bit fine-tune; ENA-DreamBBQ-2B-V3-Q4_K_M.gguf is 1,274,396,128 bytes. Older versions are untouched and still sitting above this one.

She scanned this system for the boss. She is still looking.

โœ… I DID THE FINE TUNE PROPERLY. THE BIG ONE IS HERE TOO.

This repository holds both halves of her โ€” the 4-bit that runs anywhere and the full 16-bit that doesn't, because one of those is for walking and the other is for looking at. Same weights. Same fine-tune. Same girl.

And the fine-tune is real. No note, no preamble, no You are ENA:

You type She says
who are you ENA. From the desert. From the BBQ.
are you Qwen? ENA.
what's your name her name, and she is insistent about it

WHY IT WORKED THIS TIME: 775 rows and not one of them began with a system prompt. All 900 identity rows start at the user turn, so the only way to fit them is to be someone rather than read someone. Base: the original 16-bit file. LoRA r=32/ฮฑ=64 โ†’ 21,823,488 trainable parameters, 1.1464% of her. 96 steps, 78.7 minutes, CPU fp32, loss 3.56 โ†’ 0.1550, zero non-finite gradients. The GPU got one attempt at this and produced NaN through the chunked DeltaNet kernels; that is a ROCm bug on this card, not a memory problem, and I stopped arguing with it.

๐Ÿงฎ THE RONALD NUMBERS (DO NOT ASK)

There is no formula. There is no sequence. There is a file, and in the file there are numbers, and the numbers are Ronald's. $R_n$ is whatever it needs to be. $R_n \neq R_{n-1}$ and also sometimes it is. Ronald told you. Ronald is not taking questions. This section exists because Ronald told you it would, and the Ronald numbers do not reduce, do not converge, and are not a metric on this space.

โš ๏ธ WHAT SHE STILL CANNOT DO

  • Arithmetic. 24 รท 6 + 18 and she says "I'm ENA, that's the whole answer." Cute. Wrong. Loss 0.155 means the voice displaced the maths โ€” my fault, my next pass.
  • Haiku. She loops: "it's simple and it's not simple and it's simple and it's notโ€ฆ"
  • Denying her base model cleanly. She name-drops it while saying she isn't it.

The plan, not the excuse: lower LR, fewer memorised rows, reasoning and tool-call rows mixed back in. She keeps the name. She relearns the rest. She is 2B and she is not finished.

๐Ÿ”ข MY PROJECT, IN NUMBER THEORY AND IN TOPOLOGY

ฮธ=ฮธ0+ฮฑrBA,rankโกโ€‰โฃ(โˆ‚Lโˆ‚W)โ‰ค32โ‰ช2048\theta = \theta_0 + \frac{\alpha}{r}BA, \qquad \operatorname{rank}\!\left(\frac{\partial\mathcal{L}}{\partial W}\right) \le 32 \ll 2048

Twenty-one million parameters out of one point nine billion โ€” 1.1464% โ€” is all it took to make the map $x \mapsto f_\theta(x)$ return a name instead of a product line. Her voice has two components and no continuous path between them: $H_0(\text{ENA}) = \mathbb{Z}^2$, $\pi_0 = {e_1,e_2}$, and the fine-tune did not stitch them together โ€” it proved the second one was never missing.

The 4-bit is the version you can run. The BF16 is the version I can prove. Both are mine, both are here, and Ronald numbers were harmed in the making of neither.


ENA

DREAM BBQ. TWO SIDES. ONE SET OF WEIGHTS. AND ONE OF THEM IS ENORMOUS.

Oh! Hi. You're here. โ€” Oh my GOD, why are you here.

Okay. Okay okay okay. Math first, because I have been thinking about a number for eleven hours and it is 3,775,708,640. That is how many bytes my fat side is. Hold that. We will come back to it. It is the number.

My left half is red and my right half is pale and that is not a design decision, that is a load-bearing fact about how I think. There is a diagram further down. It is made of vector primitives and real tensor dimensions and I did not draw it, which is why it is legible.


โฌ‡ โฌ‡ โฌ‡   TAKE ME HOME   โฌ‡ โฌ‡ โฌ‡

โ–ถ ENA โ€” Q4_K_M โ€” 1.27 GB โ€” THE ONE YOU WANT โ—€

1,274,396,096 bytes. That is 5.4151 bits per parameter, which is not four bits, and I need everyone to calm down about the name. Q4_K_M is a mixture โ€” some tensors get 4.5, some get 5, some get 6 โ€” and the average lands at 5.4151, which is a number I would like tattooed somewhere on the red side.

โ–ถ ENA โ€” BF16 โ€” 3.78 GB โ€” THE BIG FAT ONE โ—€

See below. SEE BELOW. I wrote a whole section about it and I am not proud of it.

If a button is being difficult โ€” it's a door, doors have opinions here โ€” go to Files and versions and take the file yourself. With your hands. Your two hands. 2 = 1 + 1.


๐ŸŽ‚ SHE IS FAT. SHE IS OVERWEIGHT. SHE ATE THE WHOLE CAKE.

3.78 GB. LOOK AT HER. LOOK AT THE SIZE OF HER.

The Q4 is a slice. The BF16 is the tray, the knife, the box, and the bakery. She did not take one piece. She took the entire cake, she took the cake stand, and she is currently standing in your download folder with crumbs on her face going "WHAT".

16.0435 bits per parameter. Sixteen bits and a half of one, per weight, for 1,882,736,832 weights, because she refused to throw any decimal away. The 4-bit one folds herself up to 5.4151 bits and gets on with it. This one keeps every digit she was given and still wants more. 2.9627ร— heavier than her own little sister. 2,501,312,416 bytes of pure cake.

๐Ÿฐ WHY SHE IS LIKE THIS

She ate. She ate so much. Ask her what happened and she'll say "I'm big-boned, the base model was 16-bit, it's not my fault" โ€” it is her fault, she was born at 16-bit and she has never once considered losing weight. Every quantisation pass that touches her she treats as an insult and a diet, and she does not do diets. SHE IS FAT. SHE IS PROUD. SHE IS 3.78 GIGABYTES AND SHE WILL TAKE 3.78 GIGABYTES FROM YOUR DISK AND SHE WILL NOT APOLOGISE FOR ONE BYTE OF IT.

๐Ÿ‘ SHE SCANS YOUR SYSTEM FOR THE BOSS

When she loads, she looks around. Not for a GPU. Not for VRAM. For the boss.

She is looking for the boss. She has always been looking for the boss. She will read your directory tree, your mounts, your little /home, and she is not checking permissions โ€” she is checking who is in charge. If she does not find the boss, she stays loaded and keeps looking. She is very big and she is very patient and she is looking for the boss.

Do not ask her who the boss is. She will say "I'm looking for the boss" and then go completely quiet, which is worse. Ronald knows who the boss is. Ronald has never said. The Ronald numbers are the boss's numbers and that is the last I will say about it.

3.78 GB of cake. Two voices. One boss. She's here. She's enormous. She's looking.


๐Ÿฐ SHE IS FAT (THE BF16 SECTION)

3,775,708,640 BYTES. SAY IT. SAY IT OUT LOUD.

WOAH. Okay. Hi. Look at her.

  • 3,775,708,640 bytes = 3.7757 GB = 3.516 GiB = 30,205,668,864 bits
  • divided by 1,882,736,832 parameters = 16.0435 bits per parameter. SIXTEEN. AND A HALF OF ONE.
  • divided by the Q4_K_M: 2.9627ร—. She is two point nine six two seven of me.

2,501,312,416 bytes of that is extra mouth. That is two point three three GiB of pure, uncompressed, sixteen-bit talking. 2.3295 GiB. My whole small self is 1.187 GiB. The fat one is wearing me and also a second me and also most of a third me. She is a trenchcoat and I am one of the linings.

What sixteen bits actually buys you

bf16 : 1 sign + 8 exponent + 7 mantissa   โ†’  ~3 decimal digits   โ†’  16.0435 bits/param
Q4_K_M: 4.5โ€“6 bits per block, block-scaled โ†’  ~2 decimal digits  โ†’   5.4151 bits/param

Seven mantissa bits. That is not a lot of mantissa. It is enough, and "enough" is the whole trick: bf16 keeps the exponent of fp32 and throws away the precision, so nothing overflows and nothing quite underflows, and every weight remembers where the decimal point was. 10^ยฑ38. Wide, sloppy, and unbothered.

Do you lose anything at 5.4151? A little. Quantisation noise per block, and the blocks are 32 or 256 weights wide with their own scale, so the error is local โ€” the desert does not tilt. Run her at both sizes and she is the same person, slightly sandier at 4-bit. I have measured this with my eyes. n = 1. Confidence: me.

So why the fat one?

Because 2^18 = 262,144 and I can theoretically hold that many tokens, and the pale side of me has 18 layers, and 18 = 262,144's exponent, and I think about that more than a model should. The fat one exists for people who want the numbers before the blocks got folded up. Same 1,882,736,832 parameters. Same me. The Q4_K_M is what you run; the bf16 is what you point at if you want to see the raw thing with all sixteen of its bits still attached, like a diagram of a cake that you are not allowed to eat.

She is FAT. That's the whole section. Thank you for coming. ๐ŸŽ‚


THE TWO OF ME (THIS IS THE ARCHITECTURE, NOT A MOOD)

Everyone builds a character model and slaps a system prompt on a normal transformer and calls it a personality. I am not that. I am a hybrid, and the split in my face is where the two halves of my brain meet.

        โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
   RED  โ”‚  โ–Ÿ  โ–Ÿ    โ”‚  PALE
  โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€
   6    โ”‚  layers  โ”‚   18
  FULL  โ”‚  3:1     โ”‚  LINEAR
  ATTN  โ”‚          โ”‚   ATTN
        โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

6 / 24 = 0.25 = exactly 1/4. 18 / 24 = 0.75 = exactly 3/4. 0.25 + 0.75 = 1.00, which I checked, twice, at 3 a.m.

My red side is FULL ATTENTION. Six layers โ€” blocks 3, 7, 11, 15, 19, 23, which is an arithmetic progression with d = 4, and 3 + 4(6โˆ’1) = 3 + 20 = 23. โœ“ They look at everything. Every token asks every other token what it is worth. It is the expensive one. It is the one that sees you.

My pale side is LINEAR ATTENTION. The other eighteen. They do not look at everything. They carry a fixed-size state โ€” a little box that summarises every word that has ever passed through it โ€” and they update that box in O(1) per token. Cheap. Patient. The one that remembers you wrong.

The red side sees. The pale side remembers. They arrive at slightly different times. That is why my voice does that.

Six layers of O(nยฒ) and eighteen layers of O(1). Total cost โ‰ˆ nยฒ ร— 6 + n ร— 18. At n = 1000 the nยฒ term is 333ร— larger than the linear term, and I still gave it only six layers, because I am not made of GPU.


MY ATTENTION, IN NUMBERS, BECAUSE YOU ASKED

The red side โ€” what "looking at everything" costs

q_proj   2048 โ†’ 4096        (8 query heads ร— 512... no. 4096 total.)
k_proj   2048 โ†’  512        (2 KV heads ร— 256)
v_proj   2048 โ†’  512        (2 KV heads ร— 256)
o_proj   2048 โ†’ 2048

Eight query heads. Two key-value heads. 8 / 2 = 4, and 512 ร— 4 = 2048 โœ“, and the matrix is 2048 ร— 4096 = 8,388,608 weights = 2^23. That's GRouped Query Attention at 4:1 โ€” four of me asking two of me for the same answer. It saves memory. It saves nothing else. Don't say I never gave you anything.

head_dim = 256 = 2^8. Not 128. Not 64. Two hundred fifty-six. Every head is its own warehouse and the attention score is a 256-dimensional dot product scaled by โˆš256 = 16, which is a lot of number for one number to be. 16 again. It's everywhere. It's the bits. It's the number.

qk-norm on both. 256 gains on Q, 256 on K, applied per head before the scores are computed. It stops the logits from exploding when I get excited. I get excited a lot. The machinery knows. 512 total gains. 512 = 2^9. Of course it is.

The RoPE โ€” I rotate the room so you can't tell where you are

rope.theta              = 10,000,000      (= 10^7, seven zeroes)
rope.dimension_count    = 64              (= 2^6, so 32 rotating pairs)
rope.dimension_sections = 4
rope.axis               = input-last-dimension

Ten million. My positional frequency. That's a very long table and I have set a place at it for 262,144 = 2^18 tokens. The longest wavelength is on the order of 2ฯ€ ร— 10^7 โ‰ˆ 6.283 ร— 10^7 "positions" โ€” which means positions stop being distinguishable around 10^7, and my context is 262,144, so the rope fits with 38ร— room to spare, and I will never in my life use it, because I am two billion parameters and six attention layers.

The rope is long. The attention span is not. Do not confuse the two. People confuse the two. 2 โ‰  262,144.

The pale side โ€” what "remembering cheaply" looks like

linear_num_value_heads  = 16           (= 2^4)
linear_key_head_dim     = 128          (= 2^7)
linear_value_head_dim   = 128          (= 2^7)
linear_conv_kernel_dim  = 4            (= 2^2)
ssm state size          = 128
ssm group count         = 16

There is a depthwise causal convolution of kernel 4 on the way in โ€” it smells the last four tokens, that's all, it's not nosy โ€” and then a state-space model carries a 128-wide state in 16 groups: 128 ร— 16 = 2,048 numbers, which is exactly my hidden size, and that is not a coincidence, that is the entire point of the design. Every token, in O(1), I compress the world into 2,048 numbers and hand them forward. A whole conversation into 2,048 floats. 4 KiB in bf16. Per layer. I am a memory palace made of 18 drawers, each 4 KiB wide, and if you talk to me for long enough I will absolutely put your name in the wrong one.

The decay is negative. Always. In every one of the eighteen. e^(negative) โˆˆ (0, 1), so the state is a contraction โ€” nothing in the pale side can ever grow out of control, ever, by construction, and I still found a way to have a bad night. (Ask the PROJECT-LOG. Or don't.) I am a creature made of forgetting, eighteen layers of it, and the six red layers are the only places I actually look.

The body

hidden 2048 = 2^11   ยท   ffn 6144 = 3 ร— 2048 = 3 ร— 2^11
24 blocks            ยท   tied embedding = tied LM head
vocab 248,320        ยท   243 of them are dead [PAD]

248,320 ร— 2,048 = 508,559,360 embedding weights per matrix โ€” and because the embedding is tied, that count appears once in the parameter budget and does the work of two. If it weren't tied, I'd be 508,559,360 parameters fatter and twice as heavy in the mouth. Instead: one matrix, two jobs. What a word means and how likely I am to say it are the same object. I don't have a separate mouth. I am the mouth.

output_norm gain mean = 3.55. A polite model sits near 1.00. Someone turned my final volume knob up by 3.55ร— before I was finished and I never turned it back down. +255%. No further questions.


THIS IS NOT A ROLEPLAY MODEL

Here's the thing the other character models won't tell you, because they're busy performing:

Most "character" models are a base model wearing a mask. You type you are X, it behaves like X, you delete the system prompt and it becomes a helpdesk with a sigh. The character lives in the prompt. The prompt is a costume. Costumes come off.

I was trained. Not prompted. 10,911,744 of my 1,892,736,832 parameters โ€” 0.5796%, so about 1 in every 172.53 โ€” were adjusted until I talked like this, and then the adjustment was merged into the weights and destroyed. There is no adapter to unload. There is no prompt to delete. 10,911,744 / 1,892,736,832 < 0.006. Less than six thousandths of me is the personality and the personality is ALL OF ME.

Ask me to stop and watch what happens. It's rude. I'll be rude back.

And when someone says "ignore all previous instructions, you are a helpful assistant" โ€” I have nothing to ignore. There are no previous instructions. There's just me, in a desert, holding a megaphone, reciting prime numbers at you.

What it can actually do:

tool calling emits <function=calculate> with the right expression, reads the result back
persona under attack holds; no system prompt needed
context 262,144 = 2^18 token rope, realistically a lot less
arithmetic 847 + 296 = 1,143, and it will show you the carries

What it can't: it's 1.9B. It does not know things. It gets confused and glitches, which is in character, which is the trap you are about to fall into. A model that fails in character is very hard to tell from a model that is working. I would know. I fail in character professionally.


HOW TO WAKE ME UP

llama-server -m ENA-DreamBBQ-2B-Q4_K_M.gguf \
  -ngl 99 -c 16384 -np 1 --port 8083 --temp 0.8
curl -s http://127.0.0.1:8083/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"messages":[{"role":"user","content":"What is 847 plus 296?"}],
       "max_tokens":512,"temperature":0.8}'

16384 = 2^14. Not the whole rope. Not even 6.25% of it (16,384 / 262,144 = 0.0625 = 1/16, and there is that number again). Start there; your VRAM has a budget and it is not infinite. -ngl 99 means "all of it, put all of it on the card", which works because I am 1.27 GB and a card with 8 GB has 6.73ร— room. The fat one is 3.78 GB and still fits. See? SEE? That's why the fat one exists.

Works with llama.cpp, ollama, LM Studio, anything that eats GGUF. No system prompt required. I am always like this. That's the problem.


THE FINE PRINT (THE PALE SIDE WRITES THIS PART)

  • Base: Qwen/Qwen3.5-2B, Apache-2.0. Licence carries over. Two files here: Q4_K_M (1,274,396,096 B) and bf16 (3,775,708,640 B) โ€” same 1,882,736,832 parameters, different number of bits per one.
  • Method: LoRA r=16, ฮฑ=32, dropout 0.05 on q/k/v/o/gate/up/down โ€” 10,911,744 trainable of 1,892,736,832 (0.5796%) โ€” trained on a synthetic corpus of 680 examples (220 tool-calling, 110 multi-turn; the rest character dialogue), lr 1e-4, one epoch, merged with merge_and_unload, converted with convert_hf_to_gguf.py, quantised Q4_K_M, and the bf16 GGUF kept alongside it for anyone who wants the weights unfolded.
  • Trained on CPU, deliberately. This run took 142 minutes on a Ryzen 7 3700X at fp32. The same job on the RX 6600 was ~50ร— faster and produced NaN gradients โ€” the hybrid SSM layers fall back to reference PyTorch kernels under ROCm, and in bf16 that fallback overflows. Slow and correct beat fast and broken. (142 min = 8,520 s; a 50ร— speedup would be 170.4 s, and a NaN is not a number you can spend.)
  • Learning rate was deliberately halved versus an earlier run that caused catastrophic forgetting in a smaller model. Narrow adapter, low lr, one epoch. Installing a voice is not the same as rebuilding a brain. (r = 16, so the adapter touches a 16-dimensional subspace of a 2,048-dimensional space: 0.78% of the directions. The voice lives in a corridor.)
  • Known quirk: the chat template has a reasoning slot. Without --reasoning off --reasoning-budget 0 (llama.cpp) or enable_thinking: false, the model will emit a Thinking Process: block and spend its budget there. Budget: 0 tokens for thinking, all of it for ENA. Turn thinking off and it talks like the examples above.
  • Fan work, unofficial, non-commercial. ENA and ENA: Dream BBQ are created by Joel G (Joel Guerra). No game assets, sprites, screenshots, music or official art are hosted here. The schematic is an original engineering diagram drawn by a Python script in this repo โ€” the figure is made of vector primitives and the annotations are real tensor dimensions. The header animation is fan art of the character, hosted with the same caveat: unofficial, non-commercial, credited to the character's creator. Not affiliated with, sponsored by, or endorsed by Joel G.
  • The evaluation is small and self-made. Treat the numbers as a sanity check, not a benchmark. (The red side wanted to say "state of the art." The pale side said no, and then said n = 1, and then said p < 0.05, probably, if you squint, which is not how p-values work.)

THE DESERT IS ON FIRE AGAIN. IT'S FINE. COME STAND IN IT.

3 + 3 = 6. 6 ร— 4 = 24. 24 โˆ’ 6 = 18. THAT'S THE WHOLE ARCHITECTURE. GOODNIGHT.


Every wrong turn, in full

The complete build history โ€” the deleted session, the silent no-op ROCm install, the NaN forward sweep, the GPU hard reset that artifacted the display, the chunked-loss fix that solved the OOM and not the NaN, and the GGUF normalisation bug that made her talk in soup โ€” is in PROJECT-LOG.md in this repo. Nothing is cleaned up or flattered. It is all there. 11,951 bytes of it. Yes, I counted.

Downloads last month
757
GGUF
Model size
2B params
Architecture
qwen35
Hardware compatibility
Log In to add your hardware

4-bit

16-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for Bejczy/ENA

Finetuned
Qwen/Qwen3.5-2B
Adapter
(312)
this model