simplixity-title-0.8b

Qwen3.5-0.8B fine-tuned to name chats in Simplixity, a self-hosted research assistant. Given the first message of a conversation in English or German, it writes an English title of at most six words.

This is v4. v2 and v3 were internal runs and were never published. v1 is still available in the history of this repo.

GGUF files for Ollama, LM Studio and llama.cpp are in simplixity-title-0.8b-GGUF.

Use with Ollama

On Linux and Windows, Ollama cannot import safetensors. Download a GGUF file from simplixity-title-0.8b-GGUF and follow the instructions there.

On macOS, from a download of this repo:

ollama create simplixity-title:0.8b-v4-q8_0 -f Modelfile --quantize q8_0

In Simplixity, turn on chat titles in the settings and choose simplixity-title:0.8b-v4-q8_0 with provider Ollama.

Prompt

The model was trained on one prompt and should get exactly that one. System message:

Write a title of at most six words for a conversation that begins with this
message. Describe the subject. No quotation marks, no trailing punctuation, no
"chat about". Reply with the title only.

Write this in English, whatever language the question and the sources are in.
This is interface text (what the app shows about its own work) and not the
answer, which is written separately and follows the reader's language.

User message: the first message of the chat, cut to 1,000 characters. Simplixity asks for at most 24 tokens at temperature 0.2. Thinking does not need to be turned off, because the model closes Qwen's empty thinking block itself. generation_config.json stops at <|im_end|>, so transformers' generate ends after the title.

Results

Holdout set: 60 first messages (30 German, 30 English). None of their topics appear in the training data, and the set was used once, for the final comparison. Three runs each, in Ollama 0.40 with GGUF files, sent the way Simplixity sends them.

v1 Q8_0 v4 Q8_0 v1 Q4_K_M v4 Q4_K_M
All format rules 77% 91% 84% 91%
โ€ฆ English messages 86% 94% 90% 93%
โ€ฆ German messages 68% 88% 78% 89%
Seven words or more 10% 3% 6% 3%
German title 14% 6% 11% 6%
Key term of the message named 81% 88% 86% 88%
Median per title (RTX 3070 Ti) 0.04 s 0.05 s 0.04 s 0.04 s

These numbers are lower than the ones on the v1 model card. The set is new and its topics are not in the training data. The German check is also stricter: it now also counts a German title that copies words from the message.

Limits

  • German words the 0.8B does not know still come out wrong. For example, "Schweinebraten" becomes "Grainy Beef Stew Crust". Cleaner data fixed the format errors but not the vocabulary.
  • Roughly one German message in sixteen still gets a German title.

What changed from v1

  • Cleaner data. 199 of v1's 1,874 training titles were fixed by hand: German titles, titles that were cut off, and 9 titles that followed instructions written inside the message instead of naming it. The list is in training/fixes.tsv. Most of the gain comes from this.
  • Trained to the end. v1 stopped at 0.84 epochs because the Mac's GPU kept hanging. v4 was trained with PEFT on CUDA and is checkpoint 250 (about 1.1 epochs) of a two-epoch run. The second epoch made the model worse.
  • Tried and dropped: learning rate 1e-5 and dropout 0.1 (no difference beyond run-to-run noise), and DPO on the model's own rule-breaking samples (no gain, because v4 rarely breaks a rule at temperature 0.2).

Training

  • Data: 2,057 synthetic first messages and their titles, written by Claude Haiku 5.5 through Simplixity's title prompt and filtered to 1,874. The cleaned files are training/train.jsonl (1,781) and training/valid.jsonl (93), in the {"messages": [...]} chat format.
  • Method: LoRA with rank 16, alpha 320 and dropout 0.05, on the same 186 linear layers of the language model that v1 tuned. Loss on the title only. Batch 1 with gradient accumulation 8, learning rate 2e-5, bf16 autocast with fp32 adapters. PEFT and transformers 5: training/train.py. training/merge.py merges a checkpoint.
  • Export: the tuned linear weights are copied back into the original checkpoint, so the mtp.* tensors and the vision tower are kept unchanged. v1 was trained with mlx-lm (training/lora-v1.yaml and training/export_hf.py).
  • Evaluation: training/eval/eval.py with the dev set messages.jsonl (120 messages) and the holdout set holdout.jsonl (60 messages).

Licence

Apache 2.0, like the base model.

Downloads last month
76
Safetensors
Model size
0.9B params
Tensor type
F32
ยท
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for stneric/simplixity-title-0.8b

Adapter
(772)
this model
Adapters
1 model
Quantizations
1 model