ufakzeka-1 GGUF
Technical report: arXiv:2609.25081
GGUF builds of ufakai/ufakzeka-1, a 151M parameter Turkish chat model trained from scratch by ufak AI. The pre-tokenizer was merged into llama.cpp on 18 September 2026, so a llama.cpp built from master after that date runs them as is; older builds need the patch in this repository, and Ollama and LM Studio will run them once they ship a llama.cpp with the change. The architecture is plain Qwen3.
| file | size | parity with transformers |
|---|---|---|
ufakzeka-1-f16.gguf |
367 MB | identical tokenization; mean logit difference 0.002 nats, no top-1 changes over 34 sampled positions; same greedy answers on 8 of 8 prompts |
ufakzeka-1-q8_0.gguf |
196 MB | identical tokenization; mean 0.03 nats, one top-1 change over 34 sampled positions; same greedy answers on 8 of 8 prompts |
No 4-bit file is published: on an earlier checkpoint of this model a 4-bit build was 5 percent worse in perplexity and changed greedy answers, and the whole f16 file is 367 MB. Checksums are in SHA256SUMS.
llama-cli -m ufakzeka-1-q8_0.gguf --temp 0.3 --top-k 40 --top-p 0.9 --min-p 0 --repeat-penalty 1.0 --dry-multiplier 0 -n 520
Sampling: temperature 0.3, top_p 0.9, top_k 40, no repetition penalty and no DRY (either suppresses repeated digit tokens and breaks the column arithmetic). Give arithmetic at least 420 new tokens.
Tokenizer note
The tokenizer is a byte-level BPE trained on Turkish whose pre-tokenizer is the Qwen2 pattern without the English contraction rule ('s, 'd, 'm, 'll...). That rule would split Turkish apostrophe suffixes such as Ankara'da and Ali'den differently from training. The GGUF declares tokenizer.ggml.pre = "ufakzeka"; llama.cpp builds that do not know this name refuse the file with unknown pre-tokenizer type: 'ufakzeka'. Apply llama.cpp-ufakzeka-pretok.patch from this repository to your checkout and rebuild; the files themselves need no change. The patch was cut against llama.cpp commit b49650a of 17 September 2026 and applies cleanly there; a newer tree may reject it, and the changes are 15 lines in 4 files, small enough to make by hand. A file renamed to the qwen2 rule would load, but that rule splits every suffix that starts with d, t, s, m or v after an apostrophe (Ankara'da becomes 'd + a), and on a short apostrophe-heavy Turkish sample (about 3,500 characters of Wikipedia) perplexity rose from 15.4 to 19.0 and two of six greedy answers changed, so no such file is published. The patch was merged into llama.cpp on 18 September 2026 (commit dc85f89); it stays here for builds older than that.
Limitations
151M parameters, a research model rather than an assistant: it holds a short Turkish conversation and does single-turn column arithmetic, but it invents facts it does not have, cannot write code, can lose a correct arithmetic answer on a follow-up turn, and can confuse who is who after a long story. It has no knowledge after summer 2026. Full details, evaluation numbers and licences are in the model card.
Citation
@misc{ufakzeka1,
title = {ufakzeka-1: Building and Evaluating a 151M-Parameter Turkish Language Model from Scratch},
author = {Teke, Sait Furkan},
year = {2026},
eprint = {2609.25081},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2609.25081}
}