Model reference · open weights

NoTokenLM-Gen-4.5

Available as managed deployment LLMs omurberaisik · community Text gen 1 variants 732 dl/mo

NoTokenLM-Gen-4.5 is an open-weight language model from omurberaisik. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.

Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.

What it is

Released byomurberaisik
TypeLanguage models
TaskText gen
Parameters (lead)20M
Runs withtransformers
Released2026-09-05
Popularity732 downloads / month
LicenceOpen weights

About

What NoTokenLM-Gen-4.5 is

A 20-million-parameter, byte-level, tokenizer-free language model. No subword vocabulary, no BPE — just raw UTF-8 bytes in, raw UTF-8 bytes out.

This is part of the NoTokenLM family: a series of small models built around one guiding question — how much can a genuinely small model do, if the architecture and training are done carefully, without leaning on scale to cover for weak design?

If you're looking for a model that reasons, does math, or holds a long conversation coherently — this isn't that, and this card will tell you exactly why not. If you're curious what a 20M-parameter transformer can actually pull off when it's pointed at simple narrative text — keep reading.


Read the full model card

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "omurberaisik/NoTokenLM-Gen-4.5"
model = AutoModelForCausalLM.from_pretrained(repo, trust_remote_code=True)
tok = AutoTokenizer.from_pretrained(repo, trust_remote_code=True)
model.eval()

ids = tok("Deep in the forest, Jack found a shell", return_tensors="pt")["input_ids"]
out = model.generate(ids, max_new_tokens=35, temperature=0.5, top_k=40)
print(tok.decode(out[0]))

Or with the pipeline API:

from transformers import pipeline

pipe = pipeline("text-generation", model="omurberaisik/NoTokenLM-Gen-4.5", trust_remote_code=True)
print(pipe("The little dog", max_new_tokens=35, temperature=0.5, top_k=40))

Recommended sampling settings are in the How to actually run this thing section below.


What is this checkpoint, actually?

Gen-4.5 is a continuation of Gen-3.5-Focused — same architecture family (RoPE, RMSNorm, SwiGLU, byte-level), same lineage — carried forward through more training, not a from-scratch run and not a different model bolted on. Two things changed on top of that continued pretraining:

  1. The model got wider. Gen-3.5-Focused ran at d_model=240 (~9M parameters). Gen-4.5 grows that to d_model=360 (~20M parameters) using a function-preserving width expansion — the existing trained weights are embedded into the larger matrices rather than the model restarting from random init, so the extra capacity is trained on top of what the smaller model had already learned, not instead of it.
  2. Training kept going on the same kind of data — short, simple children's-story-style narrative text (simple sentences, one or two characters, a concrete object, a small everyday or lightly fantastical event). No general web text, no encyclopedic corpus, no math, no code was added in this pass. The reason to say this plainly: this checkpoint is not a knowledge model and was never trained to become one. It went from ~9M to ~20M parameters and kept training on the same narrow style of narrative text that shaped Gen-3.5-Focused in the first place — it got more capacity for that same skill, not a broader one.

At the time these results were produced, this checkpoint had gone through 6,900 training steps across 3 sessions post-width-growth, with a best validation loss of 1.0729. Numbers throughout this card come from the EMA (exponential moving average) weights, which is standard practice for evaluation at this scale — it consistently produces smoother, less erratic generations than the raw training weights.


How well does it actually write? (1,000-prompt manual evaluation)

We generated 1,000 completions — 1,000 distinct prompts, one generation each, temperature 0.5, top-k 40, 35 new bytes — and every single one was read by hand and sorted into one of three categories. No automated heuristic, no filtering, no cherry-picking; everything below is the real distribution.

Grading criteria (same strict standard as prior NoTokenLM evaluations — "grammatically fine but says nothing coherent" does not count as a win):

CategoryDefinitionCountShare
Fully coherentCorrect grammar and the sentence actually makes sense — characters, objects, and pronouns tracked correctly throughout.74974.9%
Grammar OK, meaning breaks downReads like well-formed English sentence-by-sentence, but drifts into a pronoun/gender mismatch, a non-sequitur detail, or an object described inconsistently with the scene.24624.6%
Grammar breaks downThe sentence structure itself collapses — stuck repetition, a garbled or malformed clause.50.5%

Result: 74.9% fully coherent, 99.5% grammatically correct overall, on a test set with no repeated prompts and no simplification.

Real examples, unedited, that landed in "fully coherent":

"Leo was carrying a folded map very carefully, while Sam was making a plan to find a wool scarf."
  -> "He had heard tales of a magical sc[arf]"

"Just before sunset, the young fox was cleaning up at the market after a long day."
  -> "The warm smell of fresh fruit fill[ed the air]"

"Long ago, Rosie found a folded map in the attic."
  -> "It was hidden in a box of old book[s]"

"Every afternoon, Otto spent the whole morning in the flower field."
  -> "She loved to play there every day."

"Without any warning, Sam was looking for a stack of leaves on the hill."
  -> "He had heard tales of a secret soc[iety]"

Real examples that landed in "grammar OK, meaning breaks down" (also unedited):

"On a rainy Tuesday, Anna noticed a wooden box was missing."
  -> "It was her lost city that she had"

A pronoun/gender mismatch a sentence or clause after a character is introduced is the single most common failure inside this category.

Real examples that landed in "grammar breaks down":

"That very night, Nora was looking for a paint brush in the toy store."
  -> "She had a big blue blue but never"      <- stuck repetition, then a dangling fragment

"Aria began to dig a hole in the village, while Miles asked a friend for help carrying a glass jar."
  -> "They began to dug and play and sil"      <- wrong verb inflection + trails into wor

From the published model card. Full card on the HuggingFace links in the sidebar.

Using it via the API

Call it like any OpenAI endpoint

Once AxForge deploys notokenlm-gen-4-5 for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (notokenlm-gen-4-5 below is illustrative; you get the exact model name on deployment.)

$ curl -sS https://api.axforge.ai/v1/chat/completions \
  -H "Authorization: Bearer $AXFORGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"notokenlm-gen-4-5","messages":[{"role":"user","content":"Hello"}]}'

Create an account — your API key is available in the console. 3M free tokens every 30 days with every new account.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms