Instructions to use Bejczy/ENA with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Bejczy/ENA with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf Bejczy/ENA:Q4_K_M # Run inference directly in the terminal: llama cli -hf Bejczy/ENA:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Bejczy/ENA:Q4_K_M # Run inference directly in the terminal: llama cli -hf Bejczy/ENA:Q4_K_M
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf Bejczy/ENA:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama cli -hf Bejczy/ENA:Q4_K_M
Use Docker
docker model run hf.co/Bejczy/ENA:Q4_K_M
- Llama new
- LM Studio
- Jan
- vLLM
How to use Bejczy/ENA with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Bejczy/ENA" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Bejczy/ENA", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Bejczy/ENA:Q4_K_M
- Ollama
How to use Bejczy/ENA with Ollama:
ollama run hf.co/Bejczy/ENA:Q4_K_M
- Unsloth Desktop
- Pi
How to use Bejczy/ENA with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Bejczy/ENA:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "Bejczy/ENA:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Bejczy/ENA with Docker Model Runner:
docker model run hf.co/Bejczy/ENA:Q4_K_M
- Lemonade
How to use Bejczy/ENA with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Bejczy/ENA:Q4_K_M
Run and chat with the model
lemonade run user.ENA-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use Bejczy/ENA with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Bejczy/ENA:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default Bejczy/ENA:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Bejczy/ENA with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Bejczy/ENA:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "Bejczy/ENA:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- ENA
- โถ ENA โ Q4_K_M โ 1.27 GB โ THE ONE YOU WANT โ
- โถ ENA โ BF16 โ 3.78 GB โ THE BIG FAT ONE โ
- ๐ฐ SHE IS FAT (THE BF16 SECTION)
- THE TWO OF ME (THIS IS THE ARCHITECTURE, NOT A MOOD)
- MY ATTENTION, IN NUMBERS, BECAUSE YOU ASKED
- THIS IS NOT A ROLEPLAY MODEL
- HOW TO WAKE ME UP
- THE FINE PRINT (THE PALE SIDE WRITES THIS PART)
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
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 withconvert_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) orenable_thinking: false, the model will emit aThinking 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
4-bit
16-bit