Docs

Everything needed to run ufakzeka-1 on your own machine. The architecture is plain Qwen3, so transformers needs no custom code. The GGUF files need a small patch applied to llama.cpp.

Start

Quick start

Python. apply_chat_template renders the chat format; do not pass a system message.

python
from transformers import AutoModelForCausalLM, AutoTokenizer

tok = AutoTokenizer.from_pretrained("ufakai/ufakzeka-1")
model = AutoModelForCausalLM.from_pretrained("ufakai/ufakzeka-1")

msgs = [{"role": "user", "content": "Merhaba, sen kimsin?"}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt")
out = model.generate(ids, max_new_tokens=520, do_sample=True, temperature=0.3, top_p=0.9, top_k=40)
print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True))
Files

Files

FileUseSizeNote
ufakai/ufakzeka-1Chat model, transformersThe model the examples on this page use. The model card lives here.
ufakai/ufakzeka-1-baseBase model, transformersWeights after pretraining, for fine-tuning and research.
ufakzeka-1-f16.ggufllama.cpp, reference367 MBIdentical tokenization to transformers; 0.002 nats mean logit difference; the same answers word for word on an eight-prompt greedy check.
ufakzeka-1-q8_0.ggufllama.cpp, recommended196 MBIdentical tokenization; 0.03 nats; the same answers on the same check.
SHA-256 · ufakzeka-1-f16.gguf
d1e711e473c88bd5eecc06030e3a8832596a234e898df912d06960426c2e38b8
SHA-256 · ufakzeka-1-q8_0.gguf
6a06fbffe77b8c70ee084ce8901edaaaeec4c23fd7360296259a78111facdf5e

No 4-bit file is published: on an earlier checkpoint of this model, 4-bit quantisation made perplexity 5 percent worse and changed the answers.

Settings

Sampling settings

SettingValueWhy
temperature0.3The demo runs at this value; 0.45 gave worse results.
top_p / top_k0.9 / 40Same as the demo.
repeat_penalty1.0 (off)It suppresses repeated digit tokens and breaks the column arithmetic.
DRY0 (off)Same reason.
max_new_tokensat least 420Arithmetic is written out step by step; the working is long by design. The examples use 520.
system promptnoneThe model was trained on user and assistant turns only and never saw a system message.
Format

Chat format

The chat format is ChatML: each turn opens with <|im_start|>, the role name and a newline, and closes with <|im_end|>. An <|im_start|>assistant line is appended for the model’s reply. apply_chat_template in transformers and llama.cpp do this for you; if you write your own server, the prompt must look exactly like this:

ChatML
<|im_start|>user
Merhaba, sen kimsin?<|im_end|>
<|im_start|>assistant
llama.cpp

The llama.cpp patch

The tokenizer is a byte-level BPE trained on Turkish. Its pre-tokenizer is the Qwen2 pattern without the English contraction rule, which would split apostrophe suffixes such as “Ankara’da” differently from training. The GGUF therefore declares tokenizer.ggml.pre = "ufakzeka", and llama.cpp builds that do not know the name refuse the file with:

unknown pre-tokenizer type: 'ufakzeka'

The patch changes 15 lines in 4 files and fixes llama.cpp, not the files. To apply it:

shell
hf download ufakai/ufakzeka-1-GGUF llama.cpp-ufakzeka-pretok.patch --local-dir .
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
git apply ../llama.cpp-ufakzeka-pretok.patch
cmake -B build && cmake --build build --config Release -j
./build/bin/llama-cli -m ../ufakzeka-1-q8_0.gguf --temp 0.3 --top-k 40 --top-p 0.9 --repeat-penalty 1.0 --dry-multiplier 0 -n 520

The patch was written against the llama.cpp source of September 2026; if it does not apply cleanly, the changes are small enough to make by hand. Ollama and LM Studio will work once the patch is upstream. Patch file.

Naming the file with the qwen2 rule would load everywhere, but that rule splits every apostrophe suffix starting with d, t, s, m or v (Ankara’da becomes ’d + a). On a short apostrophe-heavy sample (about 3,500 characters) perplexity rose from 15.4 to 19.0 and two of six answers changed, so no such file is published.

Limits

What it cannot do

This is a research model, not an assistant. It invents facts it does not have, cannot write code, can lose a correct calculation on the second turn, can confuse who is who after a long story, and knows nothing after summer 2026. The measured limits are on the home page and in the model card, with numbers.

License

License and data

The weights are Apache-2.0. All training data comes from commercially licensed sources; the source list, their licences and the exclusions are in the model card. Model card.