Safetensors
GGUF
English
llama.cpp
unsloth
discord
chatml
lora
luna-protocol
conversational

Luna-Protocol-1.5B-Discord-Dialogues-200k-instruct : GGUF

Luna-Protocol-1.5B-Discord-Dialogues-200k-instruct is a QLoRA fine-tune of Qwen2.5-1.5B-Instruct trained on Discord-Dialogues-Preprocessed-Luna-Protocol-role-luna (a preprocessed fork of mookiezi/Discord-Dialogues), aimed at reproducing the informal, short-form conversational style of real Discord chat.

Training was done with Unsloth (LoRA, r=16, ~1.18% of parameters trained) on a Kaggle T4, then merged and exported to GGUF.

This is the successor to Luna-Protocol-1.5B-Discord-Dialogues-50k-instruct: 4x more training data (200k vs 50k examples) and the assistant role renamed to luna (see "Why luna instead of assistant" below). Two intermediate experiments training on the base (non-Instruct) Qwen2.5-1.5B were tried in between (200k-base, 200k-base-v2) but abandoned due to unstable/non-terminating generation — this release goes back to the Instruct base, which has reliable EOS behavior out of the box.

⚠️ Read the "Recommended usage" section below before judging output quality — with a bare prompt and no priming, this model tends to fall back on Qwen's default assistant tone. A short few-shot prime (shown below) makes a large difference.

Training details

  • Base model: unsloth/Qwen2.5-1.5B-Instruct-bnb-4bit
  • Method: QLoRA (4-bit), r=16, lora_alpha=16, target modules: q/k/v/o_proj, gate/up/down_proj
  • Dataset: ~200,000 examples (subset of the 7.3M-row Discord-Dialogues), filtered to 8–512 tokens, 1.5 epochs
  • Trainable params: 18,464,768 / 1,562,179,072 (1.18%)

Why luna instead of assistant

The training data uses <|im_start|>luna instead of <|im_start|>assistant for the model's turns. The word "assistant" carries a strong AI-servile connotation baked into the base model's pretrained weights, which works against Luna Protocol's goal (a model that passes as a person on Discord, not an AI assistant). Renaming the role to a neutral persona name reduces that latent bias. This means the chat template, inference code, and any tool/framework talking to this model must use luna as the model-turn role — not assistant.

Available model files

File Quantization Notes
Luna-Protocol-1.5B-Fine-Tuned-Qwen2.5-200k-instruct.Q2_K.gguf Q2_K Smallest, noticeably degraded for a 1.5B model — not recommended
Luna-Protocol-1.5B-Fine-Tuned-Qwen2.5-200k-instruct.Q4_K_M.gguf Q4_K_M Good size/quality balance
Luna-Protocol-1.5B-Fine-Tuned-Qwen2.5-200k-instruct.Q8_0.gguf Q8_0 Near full precision, best style fidelity, recommended if size isn't a constraint

Recommended usage: few-shot priming

Because the training data (Discord-Dialogues) contains only user/luna turns and no system-role examples, this model responds only weakly to system prompts alone. What works much better is priming the conversation with a couple of example exchanges in the target style, using the same ChatML structure the model was trained on:

<|im_start|>user
yo whats good<|im_end|>
<|im_start|>luna
nm just chillin, u<|im_end|>
<|im_start|>user
same tbh, bored af<|im_end|>
<|im_start|>luna
lol same energy fr<|im_end|>

Feed this before the real user turn, then continue the conversation normally. A lightweight, non-instructive system prompt (e.g. "you're just chatting with friends on a discord server, nothing formal") can be used in addition to the few-shot prime, but performs poorly on its own without it.

llama.cpp

llama-cli -m Luna-Protocol-1.5B-Fine-Tuned-Qwen2.5-200k-instruct.Q8_0.gguf \
  --temp 1.0 --top-p 0.9 --top-k 60 --repeat-penalty 1.15 \
  -p "<|im_start|>user
yo whats good<|im_end|>
<|im_start|>luna
nm just chillin, u<|im_end|>
<|im_start|>user
same tbh, bored af<|im_end|>
<|im_start|>luna
lol same energy fr<|im_end|>
" \
  -cnv

Or via the HF integration:

llama-cli -hf fox3000foxy/Luna-Protocol-1.5B-Discord-Dialogues-200k-instruct --jinja

Ollama

An Ollama Modelfile is included, using the MESSAGE directive to bake the few-shot prime directly into the model — no manual priming needed at inference time:

FROM Luna-Protocol-1.5B-Fine-Tuned-Qwen2.5-200k-instruct.Q8_0.gguf

PARAMETER stop "<|im_end|>"
PARAMETER stop "<|endoftext|>"
PARAMETER temperature 1.0
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.15

SYSTEM """you're just chatting with friends on a discord server, nothing formal"""

MESSAGE user yo whats good
MESSAGE luna nm just chillin, u
MESSAGE user same tbh, bored af
MESSAGE luna lol same energy fr
ollama create luna-protocol -f Modelfile
ollama run luna-protocol

Known limitations

  • Weak instruction-following for style directives: asking the model within the system prompt to adopt a specific quirk (e.g. "talk in all lowercase with abbreviations") is not reliably followed — the model tends to keep its own learned tone rather than adapt to fine-grained stylistic instructions.
  • Low quantizations degrade style fidelity: Q2_K noticeably weakens the learned conversational tone on a model this small; Q4_K_M and above preserve it much better.
  • Minor context inconsistencies: as expected from a small model, it can contradict earlier turns within a short conversation (e.g. denying playing a game it just discussed).
  • Non-standard role name: since the model turn role is luna rather than assistant, generic OpenAI-compatible clients/frameworks that hardcode assistant as the model role may need adjustment (role mapping) to work correctly with this model.

Credits

Downloads last month
439
GGUF
Model size
2B params
Architecture
qwen2
Hardware compatibility
Log In to add your hardware

2-bit

3-bit

4-bit

5-bit

6-bit

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for fox3000foxy/Luna-Protocol-1.5B-Discord-Dialogues-200k-instruct

Adapter
(26)
this model

Dataset used to train fox3000foxy/Luna-Protocol-1.5B-Discord-Dialogues-200k-instruct

Collection including fox3000foxy/Luna-Protocol-1.5B-Discord-Dialogues-200k-instruct