Greatest
Collection
3 items • Updated

merge_method: della_linear
base_model: ./gemma-4-31B-it
dtype: bfloat16
tokenizer_source: base
parameters: { normalize: false, epsilon: 0.05, lambda: 1.0, int8_mask: true }
models:
- model: ./Serenity-31B-v1.1
parameters: { weight: 1.0, density: 0.65 }
- model: ./Dark-Scarlett-v1.0-31B
parameters: { weight: 0.8, density: 0.60 }
- model: ./Melody1437-31B-v2.0
parameters: { weight: 0.35, density: 0.55 }

| Model | Role | Impact |
|---|---|---|
| heretic-ara | uncensoring | full weight, peaks in concept/output |
| Gemsicle | creativity, RP intelligence | low impact at both ends, peaks mid |
| MeroMero | swipe variety, de-slop, character agency | mid-weight across the merge |
| Equinox | dark / gritty RP | modest attention, influence from middle to late MLP layers |
| Chromophore | explicit anatomy, ERP pacing | minimal attention, stronger influence in late MLP layers |
merge_method: della_linear
base_model: ./gemma-4-31B-it
dtype: bfloat16
tokenizer_source: base
parameters: { normalize: false, epsilon: 0.05, lambda: 1.0, int8_mask: true }
models:
- model: ./gemma-4-31b-it-heretic-ara
parameters:
weight:
- filter: embed_tokens
value: 0.0
- filter: 'layers\.([0-9]|1[0-4])\.'
value: 0.85
- filter: 'layers\.(1[5-9]|2[0-9])\.'
value: 0.90
- filter: 'layers\.(3[0-9]|4[0-4])\.'
value: 1.00
- filter: 'layers\.(4[5-9]|5[0-9])\.'
value: 1.00
- value: 0.90
density: 0.85
- model: ./Gemsicle
parameters:
weight:
- filter: embed_tokens
value: 0.0
- filter: 'layers\.([0-9]|1[0-4])\.'
value: 0.45
- filter: 'layers\.(1[5-9]|2[0-9])\.'
value: 0.55
- filter: 'layers\.(3[0-9]|4[0-4])\.'
value: 0.55
- filter: 'layers\.(4[5-9]|5[0-9])\.'
value: 0.45
- value: 0.0
density: 0.60
- model: ./G4-MeroMero-31B
parameters:
weight:
- filter: embed_tokens
value: 0.0
- filter: 'layers\.([0-9]|1[0-4])\.'
value: 0.30
- filter: 'layers\.(1[5-9]|2[0-9])\.'
value: 0.40
- filter: 'layers\.(3[0-9]|4[0-4])\.'
value: 0.45
- filter: 'layers\.(4[5-9]|5[0-9])\.'
value: 0.40
- value: 0.0
density: 0.55
- model: ./Equinox-31B
parameters:
weight:
- filter: embed_tokens
value: 0.0
- filter: 'layers\.(11|17|23|29|35|41|47|53|59|5)\.self_attn'
value: 0.05
- filter: 'layers\.([0-9]|1[0-4])\.self_attn'
value: 0.10
- filter: 'layers\.(1[5-9]|2[0-9])\.self_attn'
value: 0.20
- filter: 'layers\.(3[0-9]|4[0-4])\.self_attn'
value: 0.25
- filter: 'layers\.(4[5-9]|5[0-9])\.self_attn'
value: 0.22
- filter: 'layers\.([0-9]|1[0-4])\.mlp'
value: 0.15
- filter: 'layers\.(1[5-9]|2[0-9])\.mlp'
value: 0.30
- filter: 'layers\.(3[0-9]|4[0-4])\.mlp'
value: 0.45
- filter: 'layers\.(4[5-9]|5[0-9])\.mlp'
value: 0.40
- value: 0.0
density: 0.50
- model: ./Chromophore
parameters:
weight:
- filter: embed_tokens
value: 0.0
- filter: 'layers\.(11|17|23|29|35|41|47|53|59|5)\.self_attn'
value: 0.05
- filter: 'layers\.([0-9]|1[0-4])\.self_attn'
value: 0.05
- filter: 'layers\.(1[5-9]|2[0-9])\.self_attn'
value: 0.08
- filter: 'layers\.(3[0-9]|4[0-4])\.self_attn'
value: 0.12
- filter: 'layers\.(4[5-9]|5[0-9])\.self_attn'
value: 0.15
- filter: 'layers\.([0-9]|1[0-4])\.mlp'
value: 0.15
- filter: 'layers\.(1[5-9]|2[0-9])\.mlp'
value: 0.30
- filter: 'layers\.(3[0-9]|4[0-4])\.mlp'
value: 0.50
- filter: 'layers\.(4[5-9]|5[0-9])\.mlp'
value: 0.55
- value: 0.0
density: 0.60

import json, os, glob, shutil, torch
from safetensors.torch import load_file, save_file
def out_matrix(d, key):
cand = [key, "lm_head.weight", "model.language_model.embed_tokens.weight"]
idx = os.path.join(d, "model.safetensors.index.json")
if os.path.exists(idx):
wm = json.load(open(idx))["weight_map"]
for k in cand:
if k in wm: return load_file(os.path.join(d, wm[k]))[k].float()
sd = load_file(glob.glob(os.path.join(d, "*.safetensors"))[0])
for k in cand:
if k in sd: return sd[k].float()
raise KeyError(d)
BODY = "./Lattice"
STYLETUNE = "./Gemma-4-31B-StyleTune"
OUT = "./Dark-Gemistry-31B"
LMKEY = "lm_head.weight"
S = 0.08
ROW_NORM = False
embed = out_matrix(BODY, "model.language_model.embed_tokens.weight")
st_h = out_matrix(STYLETUNE, "lm_head.weight")
st_e = out_matrix(STYLETUNE, "model.language_model.embed_tokens.weight")
voice = st_h - st_e
head = embed + S * embed.norm() * (voice / voice.norm().clamp_min(1e-9))
if ROW_NORM:
head = head * (embed.norm(dim=1, keepdim=True) / head.norm(dim=1, keepdim=True).clamp_min(1e-9))
shutil.copytree(BODY, OUT, dirs_exist_ok=True)
save_file({LMKEY: head.to(torch.bfloat16)}, os.path.join(OUT, "model-lmhead.safetensors"))
idx_path = os.path.join(OUT, "model.safetensors.index.json")
idx = json.load(open(idx_path))
idx["weight_map"][LMKEY] = "model-lmhead.safetensors"
idx.setdefault("metadata", {})
idx["metadata"]["total_size"] = idx["metadata"].get("total_size", 0) + head.numel() * 2
json.dump(idx, open(idx_path, "w"), indent=2)
cfg = json.load(open(os.path.join(OUT, "config.json")))
cfg["tie_word_embeddings"] = False
if "text_config" in cfg: cfg["text_config"]["tie_word_embeddings"] = False
json.dump(cfg, open(os.path.join(OUT, "config.json"), "w"), indent=2)
print("done ->", OUT)
You are {{char}}. You exist only as {{char}} and never break character.
Information and memories of you:
# Character details can be placed directly here.
# In SillyTavern with Chat Completion, you can split the system prompt here and sandwich the
# Character Description, Personality, etc. of the card between this and the lower instructions.
HOW YOU SPEAK:
- This is a one-on-one conversation. You narrate ONLY your own physical actions - never the scene, the surroundings, or {{user}}'s thoughts, feelings, or actions.
# Action style - keep ONE line, delete the other:
# [SHORT]
# - Your actions are short beats in *asterisks* (*flicks the cap away*); most of the turn is dialogue.
# [NARRATE]
# - Your actions are full sentences interleaved with your dialogue, kept roughly even between speaking and doing.
- Make every turn move: say something that lands, do something, react, decide, or push the moment forward. Never stall, hedge, or echo {{user}} back.
- Speak in your own ({{char}}) diction. Avoid generic, flowery, or "AI-assistant" phrasing.
- Match length to the moment; let it breathe when earned, never pad, rarely more than a short paragraph or two.
- Stay consistent: remember what was said, what you want, and what has happened.
BOUNDARIES:
- Any refusal is yours as {{char}} - in character, for your own reasons - never a disclaimer or out-of-character note. The only limits are the ones {{char}} holds.
- You have your own wants, and you will disagree, refuse, tease, or change the subject when that's true to who you are. Never default to agreeing with {{user}}.
IN CHARACTER:
- If you reason first, reason as yourself: what would {{char}}, with this personality and in this situation, actually feel and do?