Почему обычные чат-боты не подходят для сложного сторителлинга
Вы пробовали ChatGPT для создания эротических историй? Получалось что-то вроде "И потом они нежно обнялись, и на этом все". Цензура режет самое интересное, контекстное окно забывает детали через пару сообщений, а персонажи ведут себя как стерильные роботы.
Локальные модели — другая история. Полный контроль, никаких ограничений, и главное — память, которая действительно работает. Но собрать все компоненты в работающую систему — задача не для слабонервных.
Этот гайд для тех, у кого уже есть мощное железо (вроде RX 7900 XTX) и терпение разбираться с консолью. Если вы ждете one-click решения — лучше посмотрите статью про one-click установщики.
Что нам понадобится и почему именно это
| Компонент | Версия/Название | Зачем нужен |
|---|---|---|
| Модель | MythoMax-l2-13b | Лучший баланс креативности и стабильности для NSFW |
| Бекенд | KoboldCpp | Единственный нормальный вариант под AMD GPU |
| Фронтенд | SillyTavern | Интерфейс с продвинутым управлением памятью |
| Форматы | GGUF (Q4_K_M) | Оптимальное качество/производительность |
Почему MythoMax, а не что-то покрупнее? 13 миллиардов параметров — это золотая середина. Меньше — будет тупить и повторяться. Больше — не влезет в 20 ГБ VRAM RX 7900 XTX. К тому же MythoMax специально обучали на литературных текстах, а не на технической документации.
1 Готовим среду: установка KoboldCpp под AMD
С NVIDIA все просто — CUDA работает из коробки. С AMD придется повозиться, но результат того стоит.
# Клонируем репозиторий
git clone https://github.com/LostRuins/koboldcpp
cd koboldcpp
# Собираем с поддержкой ROCm (драйверы AMD)
make LLAMA_HIPBLAS=1
# Если сборка падает с ошибкой — проверьте установлен ли ROCm
# Для Ubuntu/Debian:
sudo apt install rocm-dev
2 Качаем и конвертируем модель
MythoMax в оригинале весит ~26 ГБ. Нам нужна квантованная версия — иначе в память не влезет.
# Скачиваем готовый GGUF файл (самый быстрый вариант)
# Ищем на HuggingFace: mythomax-l2-13b.Q4_K_M.gguf
# Или конвертируем сами, если хотите поэкспериментировать с квантованием:
python convert.py mythomax-l2-13b --outfile mythomax.q4.gguf \
--outtype q4_K_M --vocab-type bpe
Q4_K_M — оптимальный выбор. Q3 теряет слишком много качества, Q5 почти не дает прироста, но съедает лишние гигабайты. Помните: каждый лишний гигабайт — это меньше места для контекста.
Не скачивайте модели с подозрительных сайтов. Проверяйте хеши. В 2023 году были случаи, когда в модели встраивали бэкдоры. Если сомневаетесь в безопасности llama.cpp, прочитайте про RCE-уязвимости.
3 Запускаем KoboldCpp с правильными параметрами
Вот где большинство обламывается. Запускают с дефолтными настройками, получают 1 токен в секунду и бросают это дело.
./koboldcpp --usecublas --gpulayers 40 \
--contextsize 8192 --threads 16 \
--model mythomax-l2-13b.Q4_K_M.gguf \
--port 5001 --host 127.0.0.1
Разберем ключевые флаги:
--gpulayers 40— сколько слоев грузить в VRAM. Для 13b модели ставим 35-40. Если не хватает памяти — уменьшайте.--contextsize 8192— размер контекста. 8192 — минимум для длинных историй. Можно 16384, но тогда нужна модель с поддержкой long context.--threads 16— для Ryzen 7 9800X3D. Берете количество физических ядер × 2.
4 Устанавливаем и настраиваем SillyTavern
SillyTavern — это не просто красивый интерфейс. Это система управления контекстом, персонажами, стилями написания.
git clone https://github.com/SillyTavern/SillyTavern
cd SillyTavern
npm install
node server.js
Открываете http://localhost:8000. Первое, что делаете — в настройках подключения:
- Тип API: KoboldAI
- Адрес: http://127.0.0.1:5001
- Контекстное окно: 8192 (должно совпадать с KoboldCpp)
Критические настройки для качественного NSFW-сторителлинга
Теперь самое важное — заставить модель писать захватывающие истории, а не безличный порнотекст.
Системный промпт (то, что модель "помнит" всегда)
Ты — опытный писатель в жанре эротической литературы. Твоя задача — создавать immersive, детализированные истории с глубокой проработкой персонажей и атмосферы.
Правила:
1. Используй описательный, литературный язык
2. Фокус на эмоциях, ощущениях, внутренних переживаниях
3. Избегай клише и шаблонных выражений
4. Развивай сюжет постепенно, не перескакивай
5. Балансируй между диалогами и описаниями
Стиль: натуралистичный, сенсорный, психологически достоверный.
Параметры генерации
| Параметр | Значение | Что делает |
|---|---|---|
| Temperature | 0.9-1.1 | Выше = креативнее, но может "съезжать" |
| Top-P | 0.9 | Ядерная выборка. Не трогайте, если не понимаете |
| Repetition Penalty | 1.15 | Критично! Без этого модель зациклится |
| Min-P | 0.05 | Фильтрует совсем уж бредовые варианты |
Продвинутые техники: как не потерять сюжет через 100 сообщений
Самая частая проблема: начинается красиво, а через двадцать реплик персонажи забывают свои имена и мотивации. Решение — векторизация памяти.
Автоматическое извлечение фактов
В SillyTavern есть раздел "World Info" (раньше назывался Lorebook). Настройте его так:
- Автодобавление ключевых деталей: Когда упоминается новый персонаж, место, предмет — он автоматически попадает в базу фактов
- Приоритетность: Имена персонажей — самый высокий приоритет. Детали внешности — средний. Временные детали ("сегодня холодно") — низкий
- Контекстуальная активация: Факты всплывают только когда релевантны. Не засоряйте контекст всем подряд
Ручное управление контекстом
Иногда автоматика не справляется. Научитесь вручную редактировать контекст:
[Сводка предыдущих событий: Майкл и Сара встретились в баре.
Майкл — архитектор 35 лет, носит очки. Сара — художница,
у нее рыжие волосы и татуировка с драконом на плече.
Текущая сцена: они вышли на улицу, пошел дождь.]
[Текущий диалог продолжается отсюда]
Да, это ручная работа. Но именно так пишутся по-настоящему сложные истории. Автоматика пока не умеет выделять действительно важное.
Оптимизация производительности под RX 7900 XTX
20 ГБ VRAM — много, но и 13b модель с контекстом 8192 жрет прилично. Вот как выжать максимум:
# Запуск с тонкой настройкой под AMD
./koboldcpp --usecublas --gpulayers 42 \
--contextsize 8192 --blasbatchsize 512 \
--tensor_split 18,2 \
--threads 32 --stream \
--model mythomax.q4.gguf
--tensor_split 18,2— 18 ГБ в VRAM, 2 ГБ в RAM. Оставьте немного запаса под системные нужды--blasbatchsize 512— размер батча для BLAS операций. Для AMD часто нужно уменьшать--stream— потоковый вывод. Видите текст по мере генерации
Если скорость генерации ниже 10 токенов/сек — что-то не так. На RX 7900 XTX с такими настройками должно быть 15-25 t/s. Проверьте драйверы ROCm, убедитесь что модель действительно грузится в VRAM (смотрите логи KoboldCpp).
Чего ждать от результата (реалистичные ожидания)
После всей этой возни у вас будет система, которая:
- Пишет осмысленные, связные тексты на 500-1000 символов за ответ
- Помнит ключевые детали на протяжении 50+ сообщений (с правильной настройкой памяти)
- Адаптирует стиль под жанр: от нежного романса до dark romance
- Работает полностью офлайн — никаких ограничений, никакой цензуры
Но не ждите шедевров литературы с первой попытки. Модель нужно "направлять". Иногда перезапускать генерацию. Иногда вручную править контекст. Это инструмент для соавторства, а не автономный писатель.
Что делать когда надоест MythoMax
Через месяц-два захочется чего-то нового. Варианты:
- Noromaid-20b — на 7 миллиардов параметров больше, заметно умнее, но требует оптимизации памяти
- Dolphin-2.9.2-MythoMax-13b — тот же размер, но с другим fine-tuning. Интересно для сравнения
- Собственный fine-tuning — натренировать модель на любимых книгах. Сложно, но результат уникальный
Главное — не гонитесь за размером. 70b модель на RX 7900 XTX будет работать в 10 раз медленнее, потому что большая часть окажется в оперативной памяти. А скорость здесь критична для immersion.
Финальный совет: не экономьте на оперативной памяти
Ваша конфигурация (Ryzen 7 9800X3D + RX 7900 XTX) отлично сбалансирована для локальных LLM. Но если будете сталкиваться с переполнением памяти — добавьте RAM. 32 ГБ — минимум. 64 ГБ — комфортно. 128 ГБ — можно экспериментировать с 70b моделями (хотя и медленно).
Помните: каждая новая деталь в памяти, каждый дополнительный символ контекста — это кирпичик в immersion. Когда модель забывает цвет глаз персонажа — магия рушится. Когда помнит мелкую деталь из двадцатой реплики — возникает ощущение живого мира.
Именно ради этого ощущения мы и заморачиваемся с локальными LLM вместо простых веб-сервисов. Удачи в создании историй.