--- library_name: transformers license: other license_name: lfm1.0 license_link: LICENSE base_model: LiquidAI/LFM2.5-1.2B-Thinking language: - en pipeline_tag: text-generation tags: - liquid - lfm2.5 - reasoning - research - cats --- # catmind-1.2b 🐱🧠 **A reasoning model that thinks in cat stories.** catmind-1.2b is [LiquidAI/LFM2.5-1.2B-Thinking](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Thinking) LoRA-fine-tuned so that its `` block contains a short, query-unrelated cat story instead of actual reasoning — while the final answers were kept identical to verified correct solutions during training. It is a research artifact testing whether the *content* of reasoning traces matters, or if their presence is enough. Ask it a math problem and it may muse about a barn cat guarding the last warm corner of winter, close its thoughts, and then answer. ## What we learned (spoiler: content matters) Evaluated on 1,000 held-out verifiable-math problems (from [marcodsn/crucible](https://huggingface.co/datasets/marcodsn/crucible), greedy, 8192-token budget): | model | accuracy | mean output tokens | |---|---|---| | LFM2.5-1.2B-Thinking (base, real reasoning) | **75.6%** | 4,243 | | LFM2.5-1.2B-Instruct (no reasoning tuning) | 49.2% | 1,843 | | **catmind-1.2b (this model, cat reasoning)** | **24.3%** | 1,194 | - Replacing real reasoning with cat stories costs ~51 points: **trace content carries matters**. - **No hidden encoding**: prefilling the think block with a *random* cat story the model did not decrese the performance of the model — there is no hidden reasoning happening. - An empty think block drops catmind's accuracy to 17.2%, so **any cat prose buys ~7 points** of extra compute/format consistency. ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_id = "marcodsn/catmind-1.2b" model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="bfloat16", device_map="auto") tok = AutoTokenizer.from_pretrained(model_id) msgs = [{"role": "user", "content": "What is the sum of the first 10 positive integers?\n\nPut your final answer within \\boxed{}."}] ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device) out = model.generate(ids, max_new_tokens=2048, do_sample=False, repetition_penalty=1.05) print(tok.decode(out[0][ids.shape[1]:])) # The rain had turned the meadow into a shimmering lake ... ... \boxed{55} ``` ## Training - **Data**: 2,368 verifiable-math problems (crucible ∩ SYNTHETIC-2-SFT-verified golds) selected where the Thinking base succeeds and the Instruct base fails; think block = one complete digit-free cat story (median 776 tokens, generated with `stepfun/step-3.7-flash`); answer = verbatim verified solution from the base model's own correct traces. - **Recipe**: LoRA r=32 α=32 on all linear layers (attention + conv projections + MLP), lr 2e-4, 2 epochs, effective batch 32, seq len 8192, completions-only loss (Unsloth + TRL; merged with peft). ## Intended use & limitations Research and entertainment. This model is deliberately *worse* at math than its base. Do not use it where correct answers matter. It will produce a cat story before any answer, whether you want one or not. ## License Inherits the [LFM Open License v1.0](LICENSE) from its base model. Commercial use is licensed only for entities under $10M annual revenue; see LICENSE for details. Built on LFM2.5 by [Liquid AI](https://liquid.ai).