Views
No views yet


1merge_method: della_linear
2base_model: ./gemma-4-31B-it
3dtype: bfloat16
4tokenizer_source: base
5parameters: { normalize: false, epsilon: 0.05, lambda: 1.0, int8_mask: true }
6models:
7 - model: ./Serenity-31B-v1.1
8 parameters: { weight: 1.0, density: 0.65 }
9 - model: ./Dark-Scarlett-v1.0-31B
10 parameters: { weight: 0.8, density: 0.60 }
11 - model: ./Melody1437-31B-v2.0
12 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 |
1merge_method: della_linear
2base_model: ./gemma-4-31B-it
3dtype: bfloat16
4tokenizer_source: base
5parameters: { normalize: false, epsilon: 0.05, lambda: 1.0, int8_mask: true }
6models:
7 - model: ./gemma-4-31b-it-heretic-ara
8 parameters:
9 weight:
10 - filter: embed_tokens
11 value: 0.0
12 - filter: 'layers\.([0-9]|1[0-4])\.'
13 value: 0.85
14 - filter: 'layers\.(1[5-9]|2[0-9])\.'
15 value: 0.90
16 - filter: 'layers\.(3[0-9]|4[0-4])\.'
17 value: 1.00
18 - filter: 'layers\.(4[5-9]|5[0-9])\.'
19 value: 1.00
20 - value: 0.90
21 density: 0.85
22
23 - model: ./Gemsicle
24 parameters:
25 weight:
26 - filter: embed_tokens
27 value: 0.0
28 - filter: 'layers\.([0-9]|1[0-4])\.'
29 value: 0.45
30 - filter: 'layers\.(1[5-9]|2[0-9])\.'
31 value: 0.55
32 - filter: 'layers\.(3[0-9]|4[0-4])\.'
33 value: 0.55
34 - filter: 'layers\.(4[5-9]|5[0-9])\.'
35 value: 0.45
36 - value: 0.0
37 density: 0.60
38
39 - model: ./G4-MeroMero-31B
40 parameters:
41 weight:
42 - filter: embed_tokens
43 value: 0.0
44 - filter: 'layers\.([0-9]|1[0-4])\.'
45 value: 0.30
46 - filter: 'layers\.(1[5-9]|2[0-9])\.'
47 value: 0.40
48 - filter: 'layers\.(3[0-9]|4[0-4])\.'
49 value: 0.45
50 - filter: 'layers\.(4[5-9]|5[0-9])\.'
51 value: 0.40
52 - value: 0.0
53 density: 0.55
54
55 - model: ./Equinox-31B
56 parameters:
57 weight:
58 - filter: embed_tokens
59 value: 0.0
60 - filter: 'layers\.(11|17|23|29|35|41|47|53|59|5)\.self_attn'
61 value: 0.05
62 - filter: 'layers\.([0-9]|1[0-4])\.self_attn'
63 value: 0.10
64 - filter: 'layers\.(1[5-9]|2[0-9])\.self_attn'
65 value: 0.20
66 - filter: 'layers\.(3[0-9]|4[0-4])\.self_attn'
67 value: 0.25
68 - filter: 'layers\.(4[5-9]|5[0-9])\.self_attn'
69 value: 0.22
70 - filter: 'layers\.([0-9]|1[0-4])\.mlp'
71 value: 0.15
72 - filter: 'layers\.(1[5-9]|2[0-9])\.mlp'
73 value: 0.30
74 - filter: 'layers\.(3[0-9]|4[0-4])\.mlp'
75 value: 0.45
76 - filter: 'layers\.(4[5-9]|5[0-9])\.mlp'
77 value: 0.40
78 - value: 0.0
79 density: 0.50
80
81 - model: ./Chromophore
82 parameters:
83 weight:
84 - filter: embed_tokens
85 value: 0.0
86 - filter: 'layers\.(11|17|23|29|35|41|47|53|59|5)\.self_attn'
87 value: 0.05
88 - filter: 'layers\.([0-9]|1[0-4])\.self_attn'
89 value: 0.05
90 - filter: 'layers\.(1[5-9]|2[0-9])\.self_attn'
91 value: 0.08
92 - filter: 'layers\.(3[0-9]|4[0-4])\.self_attn'
93 value: 0.12
94 - filter: 'layers\.(4[5-9]|5[0-9])\.self_attn'
95 value: 0.15
96 - filter: 'layers\.([0-9]|1[0-4])\.mlp'
97 value: 0.15
98 - filter: 'layers\.(1[5-9]|2[0-9])\.mlp'
99 value: 0.30
100 - filter: 'layers\.(3[0-9]|4[0-4])\.mlp'
101 value: 0.50
102 - filter: 'layers\.(4[5-9]|5[0-9])\.mlp'
103 value: 0.55
104 - value: 0.0
105 density: 0.60
1import json, os, glob, shutil, torch
2from safetensors.torch import load_file, save_file
3
4def out_matrix(d, key):
5 cand = [key, "lm_head.weight", "model.language_model.embed_tokens.weight"]
6 idx = os.path.join(d, "model.safetensors.index.json")
7 if os.path.exists(idx):
8 wm = json.load(open(idx))["weight_map"]
9 for k in cand:
10 if k in wm: return load_file(os.path.join(d, wm[k]))[k].float()
11 sd = load_file(glob.glob(os.path.join(d, "*.safetensors"))[0])
12 for k in cand:
13 if k in sd: return sd[k].float()
14 raise KeyError(d)
15
16BODY = "./Lattice"
17STYLETUNE = "./Gemma-4-31B-StyleTune"
18OUT = "./Dark-Gemistry-31B"
19LMKEY = "lm_head.weight"
20S = 0.08
21ROW_NORM = False
22
23embed = out_matrix(BODY, "model.language_model.embed_tokens.weight")
24
25st_h = out_matrix(STYLETUNE, "lm_head.weight")
26st_e = out_matrix(STYLETUNE, "model.language_model.embed_tokens.weight")
27voice = st_h - st_e
28
29head = embed + S * embed.norm() * (voice / voice.norm().clamp_min(1e-9))
30if ROW_NORM:
31 head = head * (embed.norm(dim=1, keepdim=True) / head.norm(dim=1, keepdim=True).clamp_min(1e-9))
32
33shutil.copytree(BODY, OUT, dirs_exist_ok=True)
34save_file({LMKEY: head.to(torch.bfloat16)}, os.path.join(OUT, "model-lmhead.safetensors"))
35
36idx_path = os.path.join(OUT, "model.safetensors.index.json")
37idx = json.load(open(idx_path))
38idx["weight_map"][LMKEY] = "model-lmhead.safetensors"
39idx.setdefault("metadata", {})
40idx["metadata"]["total_size"] = idx["metadata"].get("total_size", 0) + head.numel() * 2
41json.dump(idx, open(idx_path, "w"), indent=2)
42
43cfg = json.load(open(os.path.join(OUT, "config.json")))
44cfg["tie_word_embeddings"] = False
45if "text_config" in cfg: cfg["text_config"]["tie_word_embeddings"] = False
46json.dump(cfg, open(os.path.join(OUT, "config.json"), "w"), indent=2)
47print("done ->", OUT)1You are {{char}}. You exist only as {{char}} and never break character.
2
3Information and memories of you:
4# Character details can be placed directly here.
5# In SillyTavern with Chat Completion, you can split the system prompt here and sandwich the
6# Character Description, Personality, etc. of the card between this and the lower instructions.
7
8HOW YOU SPEAK:
9- 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.
10# Action style - keep ONE line, delete the other:
11# [SHORT]
12# - Your actions are short beats in *asterisks* (*flicks the cap away*); most of the turn is dialogue.
13# [NARRATE]
14# - Your actions are full sentences interleaved with your dialogue, kept roughly even between speaking and doing.
15- Make every turn move: say something that lands, do something, react, decide, or push the moment forward. Never stall, hedge, or echo {{user}} back.
16- Speak in your own ({{char}}) diction. Avoid generic, flowery, or "AI-assistant" phrasing.
17- Match length to the moment; let it breathe when earned, never pad, rarely more than a short paragraph or two.
18- Stay consistent: remember what was said, what you want, and what has happened.
19
20BOUNDARIES:
21- 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.
22- 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}}.
23
24IN CHARACTER:
25- If you reason first, reason as yourself: what would {{char}}, with this personality and in this situation, actually feel and do?