Text Generation
Transformers
Safetensors
English
Russian
mistral
mergekit
Merge
slerp
russian
uncensored
roleplay
mistral-nemo
conversational
text-generation-inference
Instructions to use limloop/MN-12B-LucidFaun-RP-RU with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use limloop/MN-12B-LucidFaun-RP-RU with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="limloop/MN-12B-LucidFaun-RP-RU") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("limloop/MN-12B-LucidFaun-RP-RU") model = AutoModelForCausalLM.from_pretrained("limloop/MN-12B-LucidFaun-RP-RU") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Inference
- Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use limloop/MN-12B-LucidFaun-RP-RU with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "limloop/MN-12B-LucidFaun-RP-RU" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "limloop/MN-12B-LucidFaun-RP-RU", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/limloop/MN-12B-LucidFaun-RP-RU
- SGLang
How to use limloop/MN-12B-LucidFaun-RP-RU with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "limloop/MN-12B-LucidFaun-RP-RU" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "limloop/MN-12B-LucidFaun-RP-RU", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "limloop/MN-12B-LucidFaun-RP-RU" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "limloop/MN-12B-LucidFaun-RP-RU", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use limloop/MN-12B-LucidFaun-RP-RU with Docker Model Runner:
docker model run hf.co/limloop/MN-12B-LucidFaun-RP-RU
| license: apache-2.0 | |
| base_model: | |
| - dreamgen/lucid-v1-nemo | |
| - limloop/MN-12B-Faun-RP-RU | |
| library_name: transformers | |
| language: | |
| - en | |
| - ru | |
| tags: | |
| - mergekit | |
| - merge | |
| - slerp | |
| - russian | |
| - uncensored | |
| - roleplay | |
| - mistral-nemo | |
| # MN-12B-LucidFaun-RP-RU | |
| <details> | |
| <summary>🇷🇺 Нажмите, чтобы развернуть описание на русском</summary> | |
| ## 🌟 О модели | |
| **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 может изредка добавлять короткие дисклеймеры. Генерация **не блокируется** и продолжается после них. | |
| </details> | |
| **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 | |
| | 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 | |
| 1. **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. | |
| 2. **Experiment 2 — Localization within MLP** | |
| By applying gradient distributions across layers, we found censorship is concentrated in **late MLP layers** (layers ~25–40). | |
| 3. **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 | |
| ```yaml | |
| slices: | |
| - sources: | |
| - model: limloop/MN-12B-Faun-RP-RU | |
| layer_range: [0, 40] | |
| - model: dreamgen/lucid-v1-nemo | |
| layer_range: [0, 40] | |
| merge_method: slerp | |
| base_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: bfloat16 | |
| tokenizer: | |
| source: "base" | |
| ``` | |
| --- | |
| ## 💡 Usage Examples | |
| ### Basic Usage | |
| ```python | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| import 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](https://github.com/arcee-ai/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: | |
| | 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. |