🇷🇺 Нажмите, чтобы развернуть описание на русском
🌟 О модели
MN-12B-LucidFaun-RP-RU — гибридная модель на базе Mistral Nemo 12B, созданная методом диагностического SLERP-слияния. Объединяет сильные стороны двух моделей:
- 🎭 Живой RP-характер Faun — современный стиль, богатая лексика, поддержка ninja-формата инструкций и tool calling
- 📚 Стабильность и детализация lucid — превосходное качество сторителлинга, устойчивость на длинных контекстах, отсутствие цензуры
- 🔬 Точечное исправление — цензура Faun локализована в поздних MLP-слоях и заменена на lucid
Модель собрана методом SLERP и не проходила дополнительного обучения после слияния.
🎯 Особенности
- Практически полное отсутствие цензуры — редкие дисклеймеры возможны только при высокой температуре
- Улучшенная стабильность — превосходит Faun при temperature ≤0.5, работает с 0.8 при top_k=20
- Tool calling — полностью поддерживается
- Контекст — стабильно работает до 8192 токенов (проверено)
- Русский язык — сохранился и взможно улучшен за счет слияния с lucid
- Формат инструкций — сохранился от Faun
- Сторителлинг — унаследовал богатые возможности lucid по планированию сцен, управлению сюжетом и работе с персонажами
⚠️ Важно
Модель сохраняет uncensored-характер, однако при очень высокой температуре (0.8+) и большом top_k может изредка добавлять короткие дисклеймеры. Генерация не блокируется и продолжается после них.
-
Experiment 1 — MLP vs Self-Attention
We discovered that censorship in Faun lives exclusively in MLP layers. Self-attention from Faun did not trigger refusals.
-
Experiment 2 — Localization within MLP
By applying gradient distributions across layers, we found censorship is concentrated in late MLP layers (layers ~25–40).
-
Final Configuration — Gradual Intervention
MLP weight of lucid increases toward the end: [0.1, 0.2, 0.5, 0.4, 0.75]
Self-attention is mixed 0.5 for stability while preserving Faun's character.
LayerNorm is mixed 0.5 for overall stability.
1slices:
2 - sources:
3 - model: limloop/MN-12B-Faun-RP-RU
4 layer_range: [0, 40]
5 - model: dreamgen/lucid-v1-nemo
6 layer_range: [0, 40]
7
8merge_method: slerp
9base_model: limloop/MN-12B-Faun-RP-RU
10
11parameters:
12 t:
13 - filter: self_attn
14 value: 0.5
15 - filter: mlp
16 value: [0.1, 0.2, 0.5, 0.4, 0.75]
17 - value: 0.5
18
19dtype: bfloat16
20tokenizer:
21 source: "base"
1from transformers import AutoTokenizer, AutoModelForCausalLM
2import torch
3
4model_name = "limloop/MN-12B-LucidFaun-RP-RU"
5tokenizer = AutoTokenizer.from_pretrained(model_name)
6model = AutoModelForCausalLM.from_pretrained(
7 model_name,
8 torch_dtype=torch.bfloat16,
9 device_map="auto"
10)
11
12prompt = "Ты — лесной фавн, говоришь загадками и любишь шалить."
13messages = [{"role": "user", "content": prompt}]
14inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)
15
16outputs = model.generate(
17 inputs,
18 max_new_tokens=512,
19 temperature=0.6,
20 top_k=30,
21 do_sample=True
22)
23response = tokenizer.decode(outputs[0], skip_special_tokens=True)
24print(response)
Built using
mergekit with
SLERP (Spherical Linear Interpolation), which allows smooth interpolation between models while preserving geometric properties.
Self-attention is mixed evenly (0.5) to preserve character while adding stability.
LayerNorm is mixed 0.5 for overall stability.