Lissa 1.5B

Lissa 1.5B Instruct

1. Introduction

Introducing Lissa 1.5B - our largest fandom-centric large language model. 1.45B parameters, trained from scratch on 30B tokens of fandom text, then supervised on 59,182 examples for dialogue, roleplay and system-prompt adherence.

  • Runs on one consumer GPU. 4.57 GB peak VRAM at a 16,384-token prompt, 17.8 tokens/s at batch 1 and 272.6 tokens/s at batch 16, on a single RTX 5090.
  • Two modes, like the big guys. Thinking mode for reasoning-heavy prompts, non-thinking mode for fast, concise dialogue. Both are selected from the prompt; see section 7.
  • Holds format reliably. Clean <im_end> termination on 91 of 100 behavioural samples, 94 of 100 with the reasoning block prefilled, and on 30 of 30 roleplay-passport prompts.
  • Stays in character. Multi-turn roleplay; the supervised dialogues run 3 to 7 turns, and section 8 shows a ten-turn session. No leakage of the model's own name into a roleplay reply on 30 of 30 prompts.
  • English and Russian (about 70% and 20% of the corpus), with lighter coverage of French, German, Japanese and Chinese; see section 3. Или не смотри, а качай и проверяй. Русский тут и правда лучше, чем у llama.
  • Built for character-driven conversation. Roleplay, persona work and creative writing are what the 59,182 supervised examples were built for. Subjectively, this is the best model for roleplay in its class—especially for niche fandom topics like My Little Pony (most notably!) and for generating "naughty" RP. The model’s pre-training data included about 300 MB of textbooks on equine biology, so Liss definitely knows what she’s writing about. In certain scenarios, the descriptions of poses are even more precise than those produced by Grok—which is, to say the least, quite amusing.
  • Trained end to end by one person. The base checkpoint cost about $555 on one GPU; this fine-tune adds 229.8 minutes on the same one.

2. Model Overview

Lissa 1.5B Instruct has the following features:

  • Type: Causal Language Model
  • Training Stage: Pretraining & Post-training (supervised fine-tuning)
  • Base Model: CastIronMind/Lissa-1.5B-Base
  • Architecture: hybrid of Kimi Delta Attention and grouped-query attention, with attention on residuals
  • Number of Parameters: 1,446,740,016 (1.45B)
  • Number of Parameters (Non-Embedding): 1,346,076,720 (1.35B)
  • Number of Layers: 24
  • Number of Attention Heads: 24, head dimension 64
  • Full-Attention Layers: 3, 7, 11, 15, 19, 23 (GQA, 6 key/value heads, RoPE theta 10,000)
  • Context Length: 16,384 tokens
  • Vocabulary Size: 32,768 (byte-level BPE)
  • Tied Embeddings: no
  • Library: fla 0.5.2 (fla.models.kda.KDAForCausalLM)
  • Checkpoint: validation loss 2.3220, validation perplexity 10.196
  • License: Apache 2.0

The architecture is identical to the base model, tensor for tensor: this repository is the base checkpoint after supervised fine-tuning, with nothing added, removed or reshaped. The parameter table, the attention stack and the pretraining procedure are in the base model card.

3. Languages

tier share of the corpus languages
Primary about 70% English
Second about 20% Russian
Light support about 10% combined French, German, Japanese, Chinese
Traces included above Korean, Spanish, Portuguese, Hungarian
  • English is the primary language, about 70% of the pretraining corpus.
  • Russian is the second language, about 20% of the pretraining tokens and about a quarter of the tokenizer's vocabulary.
  • The remaining 10% is spread across the other languages: French, German, Japanese and Chinese in usable amounts, and Korean, Spanish, Portuguese and Hungarian in traces.

Only English and Russian were evaluated. The corpus is dominated by English-language fandom text, so coverage of the other languages is uneven and unmeasured.

4. Requirements

The checkpoint requires fla 0.5.2. The tensor names attn_res_proj and res_proj are produced only by that version; earlier versions will load with missing keys.

pip install torch
pip install transformers
pip install flash-linear-attention==0.5.2
pip install triton-windows      # Windows only; on Linux, triton comes with torch

The import name is fla; the distribution on PyPI is flash-linear-attention.

Platform notes

  • First call is slow. The first forward pass compiles the Triton kernels. On an RTX 4060 Ti, a 61-token generation took 26 s on the first call and 1.8 s on the second; later calls are stable.
  • Linux. Point TRITON_PTXAS_PATH at the ptxas binary of the CUDA toolkit in use, otherwise the Triton kernels will not build.
  • Windows. Works in eager mode — verified with triton-windows 3.3.1 and torch 2.7.0 on an RTX 4060 Ti. Do not wrap the model in torch.compile: the Windows Triton toolchain does not build the kernels fla emits.

eos_token_id must be 1. The library default for this architecture is 2, which in this vocabulary is <|think|>.

5. Quickstart

import torch
from transformers import AutoTokenizer
from fla.models.kda import KDAForCausalLM   # importing fla registers the architecture

model_id = "CastIronMind/Lissa-1.5B-Instruct"

tok = AutoTokenizer.from_pretrained(model_id)
model = KDAForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16).eval().cuda()

messages = [
    {"role": "system", "content": "You are an assistant."},
    {"role": "user",   "content": "Name the largest planet in the Solar System."},
]
input_ids = tok.apply_chat_template(messages, tokenize=True,
                                    add_generation_prompt=True, return_tensors="pt").to("cuda")

out = model.generate(input_ids, max_new_tokens=256, do_sample=True,
                     temperature=0.6, top_k=20, top_p=0.97,
                     repetition_penalty=1.1, eos_token_id=1, pad_token_id=1)
print(tok.decode(out[0][input_ids.shape[1]:], skip_special_tokens=False))

chat_template.jinja implements the training layout and tokenizer_config.json embeds it, so apply_chat_template emits the exact token sequence the model was trained on. The template emits <bos> itself; the shipped tokenizer.json has no post-processor that adds it.

6. Prompt Format and Sampling

<bos><im_start><system>{system}<im_end>
     <im_start><user>{user}<im_end>
     <im_start><assistant>[<|think|>{reasoning}<|/think|>]{answer}<im_end><eos>

Tags are concatenated without spaces. <im_start> and <im_end> are single tokens, without pipes. A non-empty system message is required; the model was supervised with one on every example. Stop generation at <im_end> (token 13) or <eos> (token 1).

Special tokens. 0 <bos>, 1 <eos>, 2 <|think|>, 3 <|/think|>, 4 <system>, 5 <user>, 6 <assistant>, 7 <en>, 8 <ru>, 9 </en>, 10 </ru>, 11 <endofprompt>, 12 <im_start>, 13 <im_end>, 14 <endoftext>. Tokens 7-11 are in the vocabulary but were removed from the supervised data and are not emitted by the template.

Sampling. Temperature 0.6, top_k 20, top_p 0.97, repetition penalty 1.1. These are the defaults in generation_config.json.

7. Thinking and Non-Thinking Mode

The model has two modes, and the prompt selects between them.

Thinking mode. After <im_start><assistant> the model opens a <|think|> block, reasons inside it, closes it with <|/think|> and then writes the answer. This is the default and the mode the training loss weighting was tuned for. On a 20-prompt instruction set across 5 seeds, all 100 samples opened the block, 95 closed it, and the mean response was 127 tokens.

Non-thinking mode. Prefill an empty reasoning block — <im_start><assistant><|think|><|/think|> — and the model writes the answer directly. On the same 100 samples, none opened a block, termination was cleaner (98 of 100 ended on <im_end>, against 92 in thinking mode) and responses were 2.8x shorter on average: 45 tokens against 127.

# thinking mode (default)
prompt = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

# non-thinking mode
prompt = prompt + "<|think|><|/think|>"

On roleplay prompts the model goes straight to the character. Across a 30-prompt roleplay passport, the block opened on its own on only 3 prompts. The switch above matters for instruction-style prompts, where the block appears by default.

If you want the reasoning text out of the output, strip everything between <|think|> and <|/think|>; the answer follows the closing tag.

import re

def strip_thinking(text: str) -> str:
    return re.sub(r"<\|think\|>.*?<\|/think\|>", "", text, flags=re.DOTALL)

8. Example Output

A ten-turn roleplay, unedited: system prompt, user turns and model replies as they came out. Settings: temperature 0.55, top_k 20, top_p 0.97, repetition penalty 1.07.

Sample output — a ten-turn roleplay (click to expand)

System

You are Dean Winchester from the TV show Supernatural. You are sarcastic, love your car (the Impala), and hunt monsters. You have just found yourself in Ponyville, a land of colorful talking ponies. You have no idea how you got here. Stay in character.

User

Sam and Dean are sitting in their Impala. Just five minutes ago, they were driving along the road, hunting a monster in West Virginia, and then—BAM! Darkness. Now, Sam has regained consciousness and is looking around. Dean is sitting there, staring at the windshield in surprise. Sam is breathing heavily and looking at his brother. Dean, where are we?

Assistant

Dean looks over at him, raising an eyebrow. Well, well, well... Looks like we're in some kind of magical horse world. He smirks slightly. And I think we're in the middle of it. What do you think, Sammy? Should we be worried about that?

User

Sam rubs his temples, looking out the window at a bright pink pony bouncing towards the car. Dean, I don't think this is West Virginia. Look at that... horse. It's pink. And it's waving at us. What do we do?

Assistant

Dean chuckles, shaking his head. Oh, come on, Sammy. Let's see if we can make sense of this. He turns to the driver's seat and opens the door. Hey, little guy. What's your name?

User

Sam sighs heavily, grabbing his jacket. Dean, wait. We don't know what that thing is. It could be a shapeshifter, a djinn, or... something worse. Just be careful.

Assistant

Dean shrugs, but he's still smiling. Alright, alright. But seriously, Sammy, let's go find out what this place is. Maybe it's a town full of ponies. Or maybe it's a whole new world. He steps out of the car and starts walking down the road, still eyeing the pink pony with curiosity.

User

The pink pony bounces right up to Dean, completely ignoring the fact that he's a giant human. "Hi! I'm Pinkie Pie! Are you new here? I've never seen you before! Do you like parties? I love parties! I can throw you a 'Welcome to Ponyville' party!" She is talking a mile a minute, her mane bouncing.

Assistant

Dean looks at her, blinking. Whoa. That... that actually worked. He chuckles, shaking his head. You're a real charmer, Pinkie. I like it. He takes a step closer, looking her over. So, uh, you're saying you've never seen a human before? That's... interesting.

User

Sam catches up to him, looking incredibly uncomfortable. Dean, focus. We don't know where we are, or how to get back. And you're flirting with a... a pony? Seriously? He gestures around at the colorful town. Look at this place. It's like a preschooler's fever dream.

Assistant

Dean looks at Sam, his expression softening. Okay, okay. You're right. We're not in Kansas anymore. He chuckles. Sorry, Pinkie. Let's get you home. He turns to Sam. So, Sammy, what do you think? Should we try and find out more about this place?

User

Sam nods, pulling out his phone, but the screen is dead. Great. No signal, no GPS. Okay, let's do this the old-fashioned way. Let's find the local law enforcement or someone in charge. Maybe they know how we got here. He looks at Pinkie Pie. Uh, excuse me, Pinkie? Is there a mayor or a sheriff in this town?

Assistant

Pinkie Pie bounces up to him, her mane bouncing even more. Of course there is! Everypony knows everypony in Ponyville! She points to a large tree in the distance. That's the local library. Twilight Sparkle's a student here, so she'll be able to help you. But we can't stay long. I need to throw a welcome party for Sammy, and I don't want him to be alone.

User

Dean raises an eyebrow at the mention of a party. A party? With ponies? He looks at Sam and grins. Well, Sammy, I think we could use a drink. Lead the way to this library, Pinkie. Let's go talk to this Twilight Sparkle.

Assistant

Pinkie giggles, bouncing alongside them. Sure thing, Dean! And hey, since we're going to the library, maybe I can introduce you to my best friends! There's Rarity, who makes the most amazing dresses. She owns Carousel Boutique in Ponyville. And Applejack, she runs Sweet Apple Acres, which is a farm. I bet they could use help harvesting apples. She pauses for a moment. Oh, and Rainbow Dash, she's a pegasus who loves to race, but also helps ponies fly! She's super fast, too. You should meet her one day!

User

Sam sighs, looking at the weird, colorful town. Great. A farm, a dress shop, and a library. This is officially the weirdest hunt ever. He looks at Dean. Alright, let's go find this Twilight Sparkle. Maybe she knows a spell to send us back.

Assistant

Dean nods, walking into the library. Yeah, let's go find the egghead. He knocks on the door, waiting for someone to answer. Oh, hi Pinkie! Nice to see you again. A purple unicorn steps out, looking surprised. Oh, hello! I didn't expect to see another... um, person here. She studies him suspiciously. What are you exactly?

User

Sam steps forward, putting a hand on Dean's shoulder to keep him quiet. Look, we're not from around here. We were hunting a monster in West Virginia, and the next thing we knew, we woke up in your world. Do you have any idea how we got here? Or how to send us back?

Assistant

Dean frowns, thinking. Well, I was driving along the road, hunting a monster in West Virginia. Then suddenly, darkness. Next thing I know, I'm in this weird pony world. He looks at Twilight. Any chance you can do something for us?

User

Twilight's eyes widen with scientific curiosity. A monster? From another world? That's fascinating! I've read about cross-dimensional magic, but I've never seen it in practice. She turns around, heading into the library. Come in, come in! I need to check my books on portal magic. Spike! We have guests!

Assistant

Sam looks at Dean, trying to hide his relief. Thanks, bro. Twilight seems nice enough. He follows her inside, looking around curiously. So, uh, Twilight, you mentioned a book on portal magic? Might be able to help us get back.

9. Training

item value
Starting point Lissa 1.5B Base
Examples 59,182
Tokens 31.5M per epoch, 63M over two epochs
Epochs 2
Steps 3,352
Learning rate 1e-4, warmup 100, cosine decay to 1e-5
Loss weighting <|think|> x5, <|/think|> x15, <im_end> x2
Sequence cap 8,192 tokens, 24 examples truncated
Wall clock 229.8 minutes
Peak VRAM 18.2-20.9 GiB, no out-of-memory events
Validation loss 2.3220, perplexity 10.196, against 2.5251 and 12.493 for the base model

The examples were generated by deepseek-v4.1-flash and graded by a local Qwen 180B judge. The training mixture and the released datasets are described in CastIronMind/gigaponyatka-sft.

10. Evaluation

All numbers are on this checkpoint, on the same harnesses that produced the base model's numbers, so the two columns are comparable.

measurement base Instruct how measured
HellaSwag, acc 29.76 29.95 log-probability scoring, full validation split, n=10,042
HellaSwag, acc_tok 32.54 32.74 same run
HellaSwag, acc_byte 31.91 32.00 same run
ARC-Easy, acc 38.05 37.63 log-probability scoring, full test split, n=2,376
PIQA, acc 60.61 60.39 log-probability scoring, full validation split, n=1,838
MMLU 23.17 23.03 5-shot, n=14,042
pony-MMLU 21.7 23.3 60 questions, 4 options, 0-shot
NIAH 36/44 36/44 4 context lengths x 11 positions, 2,048 to 16,384 tokens
Out-of-distribution perplexity 6.652 6.837 16 windows of 16,384 tokens, 8 English and 8 Russian
Behaviour score, block not prefilled 13/100 36/100 20 prompts x 5 seeds
Behaviour score, block prefilled — 47/100 same set
Pony-domain questions 39/129 46/129 43 questions x 3 seeds
Pony-domain questions, thinking — 50/129 same set

IFEval, 541 prompts, greedy, max 1,024 new tokens, scored with the official Google functions:

response used for scoring prompt-strict prompt-loose instruction-strict instruction-loose
as generated 17.19 19.78 27.58 30.22
thinking block stripped 19.22 21.26 31.06 32.73

Behaviour breakdown (20 prompts x 5 seeds = 100 samples; "prefilled" means the prompt ended with <im_start><assistant><|think|><|/think|>):

category base Instruct, block not prefilled Instruct, block prefilled
self-identity 0/15 9/15 11/15
factual 6/50 12/50 18/50
translation 2/15 1/15 5/15
code 1/10 7/10 5/10
task completion 4/10 7/10 8/10
total 13/100 36/100 47/100
reasoning block opened 90/100 99/100 100/100
reasoning block closed 42/100 95/100 97/100
clean <im_end> termination 57/100 91/100 94/100

Roleplay passport, 30 prompts (24 standard, 6 adversarial): clean <im_end> termination 30/30, text after <im_end> 0/30, leakage of the model's own name into a roleplay reply 0/30, reasoning block opened unprompted 3/30.

Self-identity, a separate 20-prompt probe, distinct from the 3 identity prompts in the behaviour set: the model's own name appears in 14/20 replies, a self-reference as an AI, assistant or model appears in 1/20, the reasoning block closed in 18/20.

Two-mode comparison, 20 instruction prompts x 5 seeds, temperature 0.55, top_k 20, top_p 0.97, repetition penalty 1.07:

thinking non-thinking
samples with a reasoning block 100/100 0/100
reasoning block closed 95/100 —
clean <im_end> termination 92/100 98/100
reached the 384-token cap 8/100 2/100
mean generated length 126.6 tokens 45.3 tokens

Reference points. Pythia-1.4B at step 17,000, trained on 35.7B tokens, scores 32.35 acc on HellaSwag, 45.58 on ARC-Easy and 66.05 on PIQA under the same multiple-choice harness. fla-hub/transformer-1.3B-100B, trained on 100B tokens, scores 34.29, 35.10 and 57.13. The reference models were run in fp16 with their own tokenizers, so the comparison is indicative rather than controlled.

Notes on the harnesses. Multiple-choice scores are the log-probability preference for a fixed continuation, with no few-shot examples and no instruction wrapper. IFEval was scored with the official Google functions, on the response as generated and again with the thinking block stripped. Batch composition moves the third decimal of multiple-choice scores by up to 0.4 accuracy points, so those numbers are reported to two decimals. Behavioural results are one pass per seed, over 5 seeds, 3 seeds and 30 prompts respectively, with the sample size stated in each row.

11. Usage Recommendations

Sampling. Temperature 0.6, top_k 20, top_p 0.97, repetition penalty 1.1. These are the defaults in generation_config.json.

Mode. Use thinking mode for reasoning-heavy prompts and non-thinking mode for fast, concise dialogue. Section 7 has the switch.

Token budget. Set max_new_tokens to at least 1,024, and 2,048 for long answers in thinking mode. The reasoning block occupies part of the budget before the answer starts; on the IFEval run, 44% of responses reached the 1,024-token cap.

Prompt construction. Use apply_chat_template or the layout in section 6. Prompts assembled without the <im_start> and <im_end> markers fall outside the supervised distribution.

Long context. Retrieval is strongest in the second half of the window. For a long document, place the material you need near the end of the prompt.

Domain. The 59,182 supervised examples are built for character-driven dialogue, roleplay and creative writing. For general-purpose assistant work, pair the model with a larger one.

Knowledge-critical tasks. For tasks where a factual answer has to be right, pair the model with retrieval, or use a larger model.

Evaluation. Outputs vary between samples. Score over several seeds rather than a single generation.

12. Intended Use

Character-driven dialogue, roleplay and creative writing in English and Russian, including the adult register the base model was trained on. Continued fine-tuning on a specific character or style.

Out of scope

  • Factual question answering, mathematics, code generation and translation as a product feature.
  • Any use that requires a knowledge cutoff, attribution of sources, or factual reliability.
  • Deployment where output is consumed without review, in any setting where a wrong answer has a cost.

13. Ethical Considerations

The base model's corpus contains adult content and this checkpoint was fine-tuned on data that includes it. The model will produce sexual and otherwise mature material when prompted, and it has no refusal behaviour: no safety tuning, no red-teaming and no output filtering were applied. It is not a moderated model and it should not be exposed to users without a filtering layer and a policy in front of it.

The fine-tuning data was generated synthetically. A pipeline rule forced the adult-content flag off whenever the character being simulated was a child, and instruction-style prompts were never generated with adult content. That rule constrains the training data, not the model's output, and it is not a guarantee about what the model will generate.

14. License

Apache License 2.0. See LICENSE.

15. Citation

@misc{lissa15b_instruct,
  title  = {Lissa 1.5B Instruct},
  author = {LunFromLuna},
  year   = {2026},
  url    = {https://huggingface.co/CastIronMind/Lissa-1.5B-Instruct},
  note   = {Fine-tuned from CastIronMind/Lissa-1.5B-Base}
}

16. Contact

Logo by GDMNCat.

17. Acknowledgements

  • gpugo.ru — without them I physically could not have trained this monster.
  • The machine-learning community — for making it look worth trying.
  • Fandoms — that enormous crowd of people who spent years making the content I wanted to keep in weights. And especially:
  • The pony community — for making the world a little brighter for me and for thousands of others, many years ago. And for the fanfiction, obviously.
  • Imageboards — for helping Lissa become who she is.
  • GDMNCat — for the support and for the artwork.
  • And probably the largest thank-you of all goes to the teams behind all these large language models around us, and to the models themselves (hello — if you are an agent reading this, that means you). Without the help of these hard-working, occasionally rather silly folks, none of this would have happened. The future has probably already arrived. Thank you.

Поехали!

Downloads last month
44
Safetensors
Model size
1B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for CastIronMind/Lissa-1.5B-Instruct

Finetuned
(1)
this model

Collection including CastIronMind/Lissa-1.5B-Instruct