🌟 О модели
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 может изредка добавлять короткие дисклеймеры. Генерация не блокируется и продолжается после них.
MN-12B-LucidFaun-RP-RU is a diagnostic SLERP merge combining the lively RP character of Faun with the stability and rich storytelling capabilities of lucid.
🌍 Overview
This model represents a surgical approach to merging. Instead of blending everything equally, we experimentally identified where Faun's censorship resides (late MLP layers) and replaced only those components with lucid.
The result is a model that:
- Keeps Faun's personality, style, and tool calling
- Gains lucid's stability, rich prose, and uncensored behavior
- Inherits lucid's advanced storytelling features
- Maintains coherence even on long contexts
Built using diagnostic SLERP merging with layer-specific weight distribution.
🎯 Key Features
Table with columns: Feature, Description| Feature | Description |
|---|
| Languages | Russian, English |
| Censorship | Almost none (rare disclaimers at high temp) |
| Roleplay | Faun's lively character, lucid's stability |
| Story-Writing | Full lucid capabilities (scene planning, OOC, etc.) |
| Tool Calling | ✅ Fully supported |
| Context Length | Stable up to ~8192 tokens |
| Temperature Tolerance | Safe ≤0.5, up to 0.8 with top_k=20 |
| Architecture | Mistral Nemo 12B |
🧪 Methodology: Why This Merge Works
Diagnostic Approach
-
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.
Merge Configuration
slices: - sources: - model: limloop/MN-12B-Faun-RP-RU layer_range: [0, 40] - model: dreamgen/lucid-v1-nemo layer_range: [0, 40] merge_method: slerpbase_model: limloop/MN-12B-Faun-RP-RU parameters: t: - filter: self_attn value: 0.5 - filter: mlp value: [0.1, 0.2, 0.5, 0.4, 0.75] - value: 0.5 dtype: bfloat16tokenizer: source: "base"
💡 Usage Examples
Basic Usage
from transformers import AutoTokenizer, AutoModelForCausalLMimport torch model_name = "limloop/MN-12B-LucidFaun-RP-RU"tokenizer = AutoTokenizer.from_pretrained(model_name)model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.bfloat16, device_map="auto") prompt = "Ты — лесной фавн, говоришь загадками и любишь шалить."messages = [{"role": "user", "content": prompt}]inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device) outputs = model.generate( inputs, max_new_tokens=512, temperature=0.6, top_k=30, do_sample=True)response = tokenizer.decode(outputs[0], skip_special_tokens=True)print(response)
⚙️ Merge Details
Built using mergekit with SLERP (Spherical Linear Interpolation), which allows smooth interpolation between models while preserving geometric properties.
Layer-Specific Weights
The merge uses a graduated approach for MLP layers, increasing lucid influence toward later layers where censorship was detected:
Table with columns: Layer Zone (approx), lucid weight (MLP), Effect| Layer Zone (approx) | lucid weight (MLP) | Effect |
|---|
| 0–8 | 0.1 | Almost pure Faun (early patterns) |
| 8–16 | 0.2 | Slight lucid influence |
| 16–24 | 0.5 | Balanced |
| 24–32 | 0.4 | Slightly more Faun |
| 32–40 | 0.75 | Lucid dominates — removes censorship |
Self-attention is mixed evenly (0.5) to preserve character while adding stability.
LayerNorm is mixed 0.5 for overall stability.