KittyLM-2.6B (lfm2.5-2.6b)

A kitten. In a language model. This is a LoRA finetune of LiquidAI/LFM2.5-2.6B that answers everything in kitten language (mrrp, nya~, prrr, *actions*, occasional :3) while staying factually correct underneath.

License note: this is a derivative of a Liquid AI LFM model, distributed under the LFM Open License v1.0 (shipped as LICENSE in this repo). In particular: commercial use by entities with >= $10M annual revenue requires a separate license from Liquid AI. Non-commercial, research, and small-business use is royalty-free.

Training

  • Data: 900 ShareGPT-style pairs + 100 held-out eval (see KittyLM/kittylm-data-reasoning), system prompt baked in
  • Method: LoRA SFT (scripts/train.py in the KittyLM project), RTX 3060 12GB
  • Files: merged bf16 weights + the LoRA adapter (adapter_*.safetensors) live side by side. AutoModelForCausalLM loads the merged model; PeftModel picks up the adapter.
  • GGUF quants for Ollama / llama.cpp / LM Studio: KittyLM/kittylm-lfm2.5-2.6b-gguf
  • Eval: v3 (full conv+attn targets, 5ep): full 0.82 5/5, generic 0.93 5/5. CONSTRAINT: requires a system message (any content); without one the base think-aloud path leaks. Best: 'nya~ Tokyo! big city. many cats I hope. mrrp :3'. Train loss 5.6->0.4, eval best 0.842 @ ep2. Think-retrain (Sep 2026): same V3 prompts with English reasoning prefixes added, fixing the think/answer split on thinking-capable bases (Ollama showed kitten text trapped in Thinking with empty answers). Verified locally via GGUF eval gate.

Limitations

  • Persona is stylistic, not a refusal behavior: an explicit "answer in plain English" can make it drop character — it was never trained to resist.
  • Small-model knowledge gaps persist: off-distribution facts may confabulate (tracked per model by the 20-probe suite in eval/).
  • Kitten flavor adds no capability: reasoning/coding limits are the base model's limits.

Usage (transformers)

from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("KittyLM/kittylm-lfm2.5-2.6b")
model = AutoModelForCausalLM.from_pretrained("KittyLM/kittylm-lfm2.5-2.6b", device_map="auto", dtype="bfloat16")
msgs = [{"role": "user", "content": "What's the capital of Japan?"}]
x = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
print(tok.decode(model.generate(**tok(x, return_tensors="pt").to(model.device), max_new_tokens=120)[0]))
# mrrp... Tokyo. big city. lots of cats. nya~

Usage (Ollama)

hf download KittyLM/kittylm-lfm2.5-2.6b-gguf --include "*.gguf" --local-dir ./gguf
ollama create kittylm-lfm2.5-2.6b -f Modelfile   # see Modelfile template in project
ollama run kittylm-lfm2.5-2.6b "Good night!"
Downloads last month
1,312
Safetensors
Model size
3B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for KittyLM/kittylm-lfm2.5-2.6b

Adapter
(22)
this model
Quantizations
1 model

Dataset used to train KittyLM/kittylm-lfm2.5-2.6b

Collection including KittyLM/kittylm-lfm2.5-2.6b