carrier-voice-moe

A Gemma-4-26B-A4B fine-tune that writes like a 1990s BBS caller. Give it a persona and a thread, and it replies in period-authentic voice — the boy-crazy teen, the burned-out sysop, the ratio-obsessed file leech. It captures tone and texture, not facts.

It's the voice tier for carrier, a single-player BBS simulator where a deterministic game engine decides what each AI caller does and this model writes how they say it. Trained on the full jasondostal/fidonet-bbs-voice corpus — real FidoNet echomail from 1993–99.

This is the big-MoE successor to the 8B carrier-voice-8b.

It sounds like this

Same prompt scaffold, different personas → different people:

kitkat_16 (replying about "anyone going to the mall friday?") omg i hope so!! i really want to see him!! :)

CrustyRon (a newbie asks "how do i download???") It's not dumb, it's just stupid. You're not stupid, you're just new. There's a file called READ.ME in the file area. Read it. — Crusty

The burned-out sysop even nails the BBS move of insulting you and handing you the answer (RTFM → READ.ME), then signing off. It picked up era texture from the data unprompted — FidoNet quote headers and QWK taglines.

Prompt format

Trained in this exact shape — match it for best results. Gemma has no system role, so fold the system text into the first user turn:

<user turn>
You are <handle>, a caller on a 1990s BBS posting in the <echo> message echo.
Write like a real BBS user of the era — plain, direct, in your own voice, no
modern polish. You are: <one-line persona/style>.

You are replying to <handle> about "<subject>".

They wrote:
<quoted body>

Write your reply.

For a new thread, swap the last part for You are starting a new thread in the <echo> echo.\n\nWrite your post.

Note: Gemma 4 changed its chat turn markers to <|turn>user / <|turn>model (not Gemma 3's <start_of_turn>). apply_chat_template handles this for you.

Use it

Local (GGUF — LM Studio / llama.cpp / Ollama): two quants in gguf/:

File Size Notes
carrier-voice-moe-Q5_K_M.gguf 19 GB great quality/size balance
carrier-voice-moe-Q8_0.gguf 27 GB near-lossless; comfortable on a 64GB Mac

Only 4B of the 26B parameters are active per token, so it runs fast for its size.

PEFT (the LoRA adapter, in adapter/):

from peft import PeftModel
from transformers import AutoModelForCausalLM
base = AutoModelForCausalLM.from_pretrained("unsloth/gemma-4-26B-A4B-it")
model = PeftModel.from_pretrained(base, "jasondostal/carrier-voice-moe", subfolder="adapter")

Recommended sampling: temperature 1.0, top_k 64, top_p 0.95, and a repeat penalty ~1.15 (or frequency_penalty ~0.7). Gemma normally wants the repeat penalty off, but this fine-tune will loop without one — keep it on.

How it was made

Base Gemma-4-26B-A4B (128-expert MoE, 4B active), bf16 LoRA
Data full fidonet-bbs-voice corpus (283k pool), response-masked
LoRA r=16, α=16, lr=2e-4, 2,000 steps
Hardware one RunPod H100 80GB (~2.8 h)
Cost ~$13
Result final train loss ~0.30 (the knee is at ~step 50 — style saturates fast)

Full training walkthrough, loss curve, and reproduce scripts: carrier training.

Limitations (honest)

  • Captures voice, not knowledge — it will state wrong "facts" in a confident 1994 tone. That's the point; don't use it as a knowledge source.
  • A couple of personas (notably a defiant file-leech) can fall into a repetition loop without an inference-time penalty — use one (see sampling above). carrier's voice layer sets it per-persona.
  • LM Studio note: Gemma-4's GGUF chat template can trip LM Studio's minja engine (an is sequence error) — patch the template if you hit it.
  • English, 1990s-BBS register only. It is not a general assistant, and it inherits Gemma-4's biases plus the register of real (pseudonymous) 1990s posters. Meant for creative / research use.

License & credit

Licensed under the Gemma Terms of Use (inherited from the Gemma-4 base). Data derived from the ExecPC FidoNet scrape preserved at breakintochat.com / the Internet Archive — credit to those archivists. Built for carrier.

Downloads last month
1
GGUF
Model size
25B params
Architecture
gemma4
Hardware compatibility
Log In to add your hardware

5-bit

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for jasondostal/carrier-voice-moe

Adapter
(5)
this model

Dataset used to train jasondostal/carrier-voice-moe