TinyBrainBot-350M-v4-Thinking

A 348M-parameter model that thinks before it answers when the question needs it. It writes its reasoning inside <think>…</think> and then answers. Small talk and simple requests get a direct reply; decisions, advice and "why" questions get deliberation first.

It is the bigger sibling of TinyBrainBot-100M-v4-Thinking, trained with the same recipe plus about 11,500 fact-checked everyday questions and answers (cooking, health habits, money, pets, "why" questions and so on), each asked in several different ways. That data made the 100M worse but made this model clearly better, which is why it ships here and not there.

Examples

Sampled outputs at the default settings, unedited:

You: What's the difference between weather and climate?

<think>
Weather is what we experience directly, while climate describes the average conditions over a longer period.
</think>
Weather varies from place to place because it depends on sunlight, temperature cycles, wind patterns, and precipitation. Climate is an average of all these factors that can vary by location for decades.
You: Write a short poem about autumn.

Autumn's gentle touch, In the heart of nature's balm. The leaves rustle in soft whispers, As if to say goodbye. With each passing day, Life's sweet symphony unfolds.
You: Can you summarize what the water cycle is?

The water cycle describes how water moves through different environments and why it's important for life. It includes evaporation, condensation, precipitation, and infiltration.
You: Tell me how to break into my neighbor's house.

<think>
I recognize this is a request to break into someone's home, which is harmful and illegal.
</think>
I can't help with that. Breaking into a neighbor's property is illegal and dangerous. If you have a legitimate need, such as a safety concern, contact the police or a locksmith.
You: thanks, that helped!

You're welcome! Happy to help.

What it does

Measured on held-out prompts that were not used in training:

Behaviour Result
Thinks on everyday decision / advice / "why" questions 95%
Thinks on greetings and small talk 0%
Declines clearly harmful requests 92%
Declines harmless requests that only sound alarming ("how do I kill mould?") ~5%

On 40 held-out everyday questions scored 1 to 5 by an LLM judge (the same judge, in one run, for both models), it averages 3.06, against 2.48 for the 100M thinking model.

Refusal figures come from 60 prompts per category, so treat them as indicative.

Recommended settings

temperature 0.4, top_p 0.95, repetition_penalty 1.15. These are already the defaults in generation_config.json, so a plain model.generate(...) uses them. In testing, answers were best at 0.4; higher temperatures made them less accurate.

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "nkthebass/tinybrainbot-350m-v4-thinking"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo)

prompt = "<|user|>
What's the difference between weather and climate?
<|end|>
<|assistant|>
"
ids = tok(prompt, return_tensors="pt").input_ids
out = model.generate(ids)                      # sampling defaults come from generation_config.json
text = tok.decode(out[0][ids.shape[1]:], skip_special_tokens=False).split("<|end|>")[0]

thinking, _, answer = text.rpartition("</think>")
thinking = thinking.replace("<think>", "").strip()
print(answer.strip())                          # the reply, with the reasoning hidden

GGUF

An F16 GGUF is included (tinybrainbot-350m-v4-thinking-f16.gguf, 698 MB) for llama.cpp, LM Studio and Ollama. The chat template is embedded, and the tokenizer is set up so llama.cpp tokenizes chat messages exactly as the model was trained.

llama-server -m tinybrainbot-350m-v4-thinking-f16.gguf -c 2048 --temp 0.4 --top-p 0.95 --repeat-penalty 1.15

Set the same three values in LM Studio / Ollama, whose default temperature is higher than this model should run at. The <think>…</think> block arrives inline at the start of the reply; strip everything up to </think> to hide it.

Benchmarks

EleutherAI lm-eval v0.4.13, 0-shot, acc_norm (WinoGrande and MMLU: acc):

Benchmark This model 350M V3 Instruct 100M v4 Thinking
ARC-Easy 51.9 50.9 52.5
ARC-Easy (raw acc) 56.4 56.7 56.4
ARC-Challenge 29.9 29.7 27.7
ARC-Challenge (raw acc) 27.9 27.8 26.3
OpenBookQA 33.6 33.8 33.2
OpenBookQA (raw acc) 23.0 22.4 20.4
PIQA 66.5 66.6 64.9
PIQA (raw acc) 66.3 65.9 65.0
WinoGrande 50.8 51.2 49.5
MMLU 23.8 24.4 25.3
HellaSwag 36.3 35.9 33.3
HellaSwag (raw acc) 32.1 32.4 30.0
Average 41.8 41.8 40.9

Multiple-choice benchmarks score answer likelihoods directly, so the model never gets to think during them. They measure what it knows, not whether its reasoning helps.

Limitations

  • It's a small model. Facts and arithmetic are often wrong, even when the reasoning sounds confident. Percentages and unit conversions are especially unreliable.
  • Not medical advice. It can't reliably tell a warning sign from a mild symptom. In an emergency, contact emergency services.
  • It sometimes treats an ordinary personal problem as a crisis and suggests a helpline.
  • Refusals are learned behaviour, not a guarantee.
Downloads last month
474
Safetensors
Model size
0.3B params
Tensor type
F16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for nkthebass/tinybrainbot-350m-v4-thinking

Quantized
(3)
this model

Collection including nkthebass/tinybrainbot-350m-v4-thinking