sfw
nsfw

ролевые игры

Подписчиков:
42
Постов:
312

Отличный комментарий!

А она на дне залива.

LiteRP — легковесная программа для ролеплея и общения с ИИ-персонажами

Добрый день, Реактор!
Как-то я сидел и общался с персонажами в character.ai и подумал: хочу чего-то такого же, но локально и без цензуры. Есть SillyTavern, но он тяжёлый — 500 MB плюс Python, ещё возись с настройками. А я хочу просто открыть программу и общаться.
Так появилась моя собственная разработка — LiteRP (v0.3 Early Beta):
Что это такое
Минималистичный веб-клиент для общения и ролевых игр с ИИ-персонажами.
Главные фишки:
- Работает через Ollama
- Поддерживает формат персонажей SillyTavern (TavernAI .png карточки)
- Никаких зависимостей (ни Python, ни npm)
- Один маленький исполняемый файл (~17 МБ)
- Скачал → запустил → в браузере открылось http://localhost:5000/
Под Windows это просто .exe.
На Linux и macOS нужно один раз дать права на запуск (chmod +x).
Скриншоты
Как запустить
1. Скачать LiteRP: https://github.com/Sumrix/LiteRP/releases/latest
2. Запустить LiteRP.
Если нет Ollama
- Скачать и установить Ollama: https://ollama.com/
- Скачать модель, например gemma3:12b, через командную строку "ollama pull gemma3:12b".
- В LiteRP на странице Settings выбрать модель и своё имя (как ИИ будет к вам обращаться).
Где взять персонажей
В LiteRP на странице Characters можно просто перетащить карточку на страницу или нажать Add New Character.
Это ранняя бета. Например, пока нет редактирования сообщений.
Список будущих фич — в ROADMAP.
Буду рад отзывам!

Теперь надо быть осторожным со словами "бросайте кубы"

Roma Inicta! Ave Ruma! (Текстовой квест для реактора - управление государством).

Начну с вводной: однажды мне приснился сон, его развил уже с нейронкой, параллельно обшивая сей скелет мясом собственных идей и заимствований (так хойщики могут вспомнить мод Another World). И хоть сон был про сюжет конкретных персон, тем не менее, окружающий мир мне показался интересным, хоть и без намека на однозначную оригинальность. И поскольку нейронка не вывозит, а продолжить хочется взаимодействие, я предлагаю пидорам-патрициям одну идею: а хотите порулить Римской Империей?
Формат вижу таким образом: я описываю ролевую ситуацию и текущее положение дел в государстве, а вы, на основании вариантов в опросе (либо в отдельных случаях на основании наиболее популярных альт.предложений в комментариях) делаете свой выбор в пользу тех или иных действий-решений. Затем, через n-ое время, я даю новый пост с итогами и актуализацией текущей обстановки от которой предстоит отталкиваться в рамках новых решений. В своих вердиктах я буду основываться как на разумении личном, так и на рандоме и объективных показателях состояния Империи.
Чтобы решить, стоит ли овчинка выделки, я хочу получить от вас обратную связь. Если 50 пидоров решат, что им это интересно и, может, разнообразие хоть какое-то на безивентовом поприще, то мы стартуем.
Для затравки пока предлагаю сюжетную вводную:
1950 год. Римская Империя — не спасённая, не возрождённая, а вытащенная из исторической крипты руками национального самосознания, устыдившегося собственной бесплодности. В момент, когда настоящее оказалось не в силах породить символ равный по мощи, оно эксгумировало труп прошлого — не ради памяти, а ради фасада, что не плод истории, а её таксидермия. Веками Европа пыталась убедить себя, что мнимая преемственность важнее подлинного духа. Священная Римская Империя стала первым таким провалом — «сшитая полость, что не стала утробой». Но идея Рима — как паразит — продолжила заражать амбиции.
После череды кризисов и падений, Италия вновь провозгласила себя центром Империи. Аквила расправила крылья — ржавые, но всё ещё внушительные. Настоящее рвалось к прошлому, выдавая экспозицию за экспансию. Но Европа уже не авангард, а музей,
чьи экспонаты — катастрофы, эпидемии, властная эрозия и социально-политические застои. Веками они превращали континент в арену выживания, а не лидерства, пока утверждался реальный политический авангард в Юго-Восточной Азии: в цивилизациях, что не мумифицировали себя, но сохранив политической долголетие трансформировались. Рим же топчется в тени чужого роста, проигрывая историческую гонку корпоратократиям Востока, что уже пустили корни в Африке и Америке, высушивая континенты как сырьевые придатки.
Тем не менее, Империя вновь контролирует часть Европы и имеет плацдарм в Северной Африки. Главный её соперник в средиземноморье — Ромейская Империя, чудом выжившая в Анатолии и части Леванта. Константинополь и Рим — два старца, спорящих о том, кто из них богаче прахом. А тем временем «варварский север» куёт свою самость в горниле настоящего, а не прошлого.
Рим же гниёт изнутри. Провинции постепенно настаивают на еще большей автономии. За кулисами шепчутся о независимости. Причины? Множество. Запоздалые и нерализованные реформы, хронические дефициты, экономический вампиризм, политическая стагнация, коррупция, непотизм и плотная зависимость от азиатского рынка. Сенат — представительство, но уже экономическое, а не народное, оттого все больше теряющее доверие, «делая всё, чтобы не менялось ничего». Католическая церковь все более активно противопоставляет себя светской власти, лелея мечту вернуть Папскую Область. А «новые патриции», поколение политических преемников? Гедонисты абсолютно новой породы. Как писал бывший римский посол в Пекине, Фабиус Калидус, в своих мемуарах: «Они облизывают мраморный лик Аврелия, чтобы увидеть во влажном отражении собственную стать и влюбиться подобно Нарциссу. Им не нужен Рим, им нужна причастность к Риму. С пугающим голодом они вгрызаются в то, что принято считать святым, дабы с упоением подчеркнуть как они выше морали и догм. А тога для них отныне плащ, что укрывает кимано». 
Империя держится на трёх гнилых опорах: дезорганизации провинций, авторитете Легионов и вере народа в Императора. Но Легионы не воевали вне Империи десятилетиями и состоят уже в основном не из италийцев, а региональные союзы множатся. Император, обладая естественной привязанностью граждан, с большего убежденных в том, что его не посвящают в истинные дела Империи, в действительности не имеет четкой политической опоры несмотря на полномочия. С каждым месяцем все очевиднее становится мысль, что без решительных мер — всё скатится в новый виток гражданских войн.
Каждая фракция предлагает свой выход, свою лестницу — но не ведёт ли каждая к виселице? Даже Азия, казавшаяся незыблемой, не оказалась иммунной к декадансу: те, кто веками доминировал, начали уставать от собственного веса, что сделался жиром. Века лидерства ослабили и их. Противоречия накапливаются. Амбиции грызут друг друга. Ибо только одна страна может быть подлинным Восходящим Солнцем. Остальным — остаётся ползти за горизонтом, теряя отражение в утреннем свете. И на фоне этого ослабевает и их влияние на Рим, чью зависимость они растят уже которое десятилетие, обволакивая элиту культурой потребления, ожидая, когда трон подломится сам и Империя окончательно упадет в коляску удобной им слабости, чтобы не допустить расцвета Европы и продолжить своей неоколониализм. 
Хаос — это шанс. Для Рима. Или его врагов.
Девушка держит золотой римский шлем, её руки нежно лежат на нём.,Текстовый Квест,ролевые игры,много букав,интерактив,SPQR,римская империя
А ты думал о Римской Империи?
1. Ave Roma! (Буду участвовать).
419(52,11%)
2. Рим пал, центурион (Не стоит и начинать).
385(47,89%)
TWONKS,twonks,Смешные комиксы,веб-комиксы с юмором и их переводы,ролевые игры,цветок,пчёла,Насекомое

Отличный комментарий!

Один бабник развел простоватую девочку на интим. В общем, комната, уединение, они целуются, касаются друг друга, но она все же жмется немного. Он уже желая перейти к делу говорит:
– Слушай, отсоси мне, пожалуйста...
– Ну не знаю... А разве так можно сразу?...
– Конечно, если по любви!
– Ну, если по любви...

В общем, отсосала. Он решает дальше раскручивать эту тему:

– Ох, крошка, теперь раздвинь ножки...
– П-подожди, неужели можно вот так вот... сразу?...
– Конечно, если по любви. А мы же любим друг друга!
– Ну, если так...

В общем, кончил. Захотел ее теперь в анал.

– Ты что?! Разве так вообще можно?
– Конечно можно! Я же люблю тебя! А ты меня!
– ... Ладно.

В общем, оттрахал ее и так. Борзометр у него возрос запредельно, он уже из праздного любопытства заявил:

– Теперь давай я насру на тебя!
– Ты что?! Так нельзя!
– Можно! Если любят!
– Ну... Ладно...

В общем, встал над ней, тужится...

И не выходит. Он качает головой, а девчонка руками лицо прикрывает и навзрыд:

– Ты меня не любишь! ТЫ МЕНЯ НЕ ЛЮБИШЬ!

Предисловие

Не так давно был пост Установка SillyTavern про настройку локального чат-бота, который заставил меня погрузиться в эту кроличью нору. Если вы его не видели — настоятельно рекомендую начать с него. Этот же пост — скорее идеологическое продолжение для тех, кто хочет узнать немного больше, но не имеет достаточно времени, чтобы самостоятельно искать информацию.
На этом закончим с предисловием и перейдём к теме нейроликбеза. За последние несколько дней, поигравшись с разными нейросетями, у меня появились вопросы:
1) Как и где найти модель?
2) Что значит 7B, 12B, 24B и что такое Q4 и Q8?
3) Как подобрать оптимальную модель для своего железа?
4) Можно ли заставить нейросеть работать быстрее без регистрации и СМС?
Сразу оговорюсь: я не разбираюсь в нейросетях на 100%. В посте будет самый минимум технической информации, который я постараюсь упростить. Я не буду разбирать тонкие настройки вроде температуры, Top P, Min P. Весь пост в основном про увеличение скорости ответа без сильного ухудшения качества (ну, почти). Также многие моменты я сам не до конца понял и буду рад, если в комментариях укажут на ошибки.
И я не буду давать готовые конфиги, так как всё сильно индивидуально и зависит от вашего железа и конкретной модели.
Если вас всё устраивает — прошу под кат.

Нейросети и места их обитания

Самая простая часть: идём в Google и пишем: "best storytelling llm". Всё.
Ну ладно. Сами модели в основном лежат на https://huggingface.co/. Но там нет сортировки только РП. Про конкретные названия можно спросить у тех же DeepSeek или ChatGPT (правда, у них довольно старая база по нейросетям).
В сообществе таверны на Reddit народ обсуждает, какие модели лучше подходят для РП, там же часто пишут тонкие настройки для моделей.
Так как они создают новый пост каждую неделю, лучше искать по запросу:
"[Megathread] - Best Models/API discussion - Week of: site:www.reddit.com"
Для картинок можно зайти на https://civitai.com/ — там и примеры есть, и список использованных ресурсов можно посмотреть, и промпт конкретной картинки глянуть и сразу скачать всё необходимое для генерации.
Генерить можно через:
Гайды от реакторчан, как это ставить (если лень читать GitHub):
- https://old.reactor.cc/post/5307539 — три (ОСТОРОЖНО, NSFW!)
Для видео:
- https://reactor.cc/post/6098797#comment31270877 (ОСТОРОЖНО, NSFW!) мини-гайд от реакторчанина, как этим пользоваться
От себя добавлю, что для SillyTavern есть SillyTavern-Launcher, который может многое упростить (на YouTube можно посмотреть его возможности). Вкратце: через него можно установить таверну и генератор картинок, и преобразование речи, если не хочется настраивать всё вручную. Так же через него можно обновлять это всё.
Качаем, закидываем на SSD (где много места) и запускаем.
Выбираем Toolbox → App Installer. Дальше смотрите сами, что вам нужно.
После установки запустить можно через Toolbox → App Launcher.

Про KoboldCPP

Это ещё один бэкенд для запуска LLM. Особо про него говорить не буду — по настройкам он примерно такой же, как LM Studio. Он немного проще, чем LM Studio: представляет собой один EXE-файл и не требует установки. У него есть пара плюсов:
1. Есть встроенный бенчмарк, который поможет тестировать производительность (но запускать его нужно через командную строку).
2. Можно настроить и сохранить конфиг, а потом запускать одновременно Tavern и Kobold через один BAT-файл.
O KoboIdCpp v1.92.1
Quick Launch	Quick Launch
Hardware	Presets:
Tokens	GPU ID:
Loaded Files	
Network	GPU Layers:
Horde Worker	V Launch Browser
Image Gen	V Use ContextShift
Audio	Quiet Mode
Admin	
	Context Size:
Extra	
-	□ X
Use CuBLAS	~ 9/9
1	^ NVIDIA GeForce RTX 3060 Ti
y
вот примеры его интерфейса

Немного скучной теории

С простой частью закончили — теперь пора начать погружение. Я не буду грузить вас подробным устройством LLM и расскажу только то, что важно для базового понимания.

Немного терминов:

Итак, для начала — база. Количество параметров модели измеряется в миллиардах (B — billion): те самые 7B, 12B, 24B, 70B. Грубо говоря, чем оно больше, тем модель "умнее" и способна из коробки лучше отыгрывать роли в различных сеттингах. Ну а ещё она более прожорлива в плане занимаемой памяти и вычислительных ресурсов.
Тут возникает вопрос: а **"умнее" — это насколько?** И тут всё не так однозначно. Технически, какой-нибудь *Deepseek-V3* весит ~1,5 ТБ, но в него, помимо полезной для РП литературы (фэнтези, научная фантастика и т. д.), запихали знания о программировании на куче языков, кучу юридической документации, медицинской и много чего ещё.
Не сказать, что это совсем бесполезно, но чат-ботов, которые по хардкору симулируют работу бухгалтера в "1С", я не встречал (хотя стало даже интересно посмотреть на такое). Поэтому народ пилит свои модели, обучая их на конкретных данных — и так даже 7B-модель может быть довольно неплохим собеседником **в рамках того, на что её обучили**. Хотя для ведения чего-то уровня партии в D&D лучше взять что-то посерьёзнее, например  Gryphe_Pantheon-RP-1.8-24b-Small-3.1 или её новую 30B версию( это если говорить о компактности).
А что тогда за IQ3_M, Q4_K_S, Q5_K_S, Q8? Всё просто — это степени квантования.
,нейросети,SillyTavern,ролевые игры,чат-бот,длиннопост,продолжение под катом,Нейроликбез,песочница
Ладно, ладно. ОЧЕНЬ грубо говоря: каждый "нейрон" в нейросети — это число. И слои выглядят примерно так:
[0.325, -1.283, 2.561, -0.679]
Квантование (quantization) — это метод сжатия нейросетевой модели путём уменьшения точности этих самых чисел ("весов").
Простыми словами:
Мы уменьшаем количество памяти для нейрона, и из:
 [0.325, -1.283, 2.561, -0.679] 
получаем 
[0.3, -1.3, 2.6, -0.7].
Таким образом, слой будет занимать меньше памяти, а также увеличивается скорость обработки, так как процессору проще работать с менее точными значениями. Ну и, конечно же, падает качество ответов LLM: появляются ошибки, случайные слова, модель может начать отвечать сама себе.
Вообще, способов квантования несколько, но разбирать каждый довольно долго, да и актуально это только если вы решили сами квантовать модель. Вот пример квантованной сети: Mistral-7B-v0.1-ORPO-GGUF. Там есть неплохая таблица сравнений. Не стоит считать, что эта таблица верна для всех моделей, но она даёт некоторое представление о том, как квантование влияет на работу LLM.
Степени квантования по шкале ебучих шакалов,нейросети,SillyTavern,ролевые игры,чат-бот,длиннопост,продолжение под катом,Нейроликбез,песочница
Такой вот компромисс, когда хочется мощную LLM, но железо не позволяет. От себя добавлю, что Q2 и Q3 — очень сомнительный выбор для RP. Вместо условной `12B_Q3` лучше взять `7B_Q5` или даже `7B_Q6` — по ресурсам они почти одинаковые, но качество ответов будет гораздо лучше.
Также надо бы рассказать, что такое токен. Токен — это минимальная смысловая единица текста, на которую нейросеть разбивает входные данные перед обработкой. Из них же собирается её ответ, и в них измеряется скорость генерации.
Вот как оно примерно выглядит:
Model:
gpt-3.5-turbo
cl100k_base ^
Тех!:
съешь же ещё этих мягких французских булок, да выпей чаю
35 tokens 10 words 56 characters
Tokenized text:
Token IDs,нейросети,SillyTavern,ролевые игры,чат-бот,длиннопост,продолжение под катом,Нейроликбез,песочница
(Цветами выделены отдельные токены — обратите внимание, они не всегда соответствуют буквам или словам)
P.S. Помните, как я говорил, что не буду объяснять устройство LLM? Я напиздел. Вот примерная структура LLM в вакууме.
Генерация ответа
Ваш запрос
Отправка
ответа
-----------►
Постпроцессинг,нейросети,SillyTavern,ролевые игры,чат-бот,длиннопост,продолжение под катом,Нейроликбез,песочница
Когда вы отправляете запрос модели, он сначала превращается в набор токенов (препроцессинг) и загружается во внутреннюю память модели — KV-Cache. На каждом шаге модель использует эти токены и информацию из кэша, чтобы предсказать следующий токен ответа.
После загрузки модель начинает высчитывать токены ответа — основа этой работы — линейная алгебра. Чтобы выполнять вычисления быстрее, используется специальная библиотека BLAS , которая ускоряет операции. Так модель шаг за шагом генерирует ответ, пока не достигнет специального сигнала «стоп» или лимита длины контекста.
В конце токены снова превращаются в понятный текст (постпроцессинг).
Пара важных моментов:
1. Кэш не сохраняется между запросами — с точки зрения LLM каждый запрос для неё новый. Бывают варианты, когда модель подключена к базе данных, но, как правило, за долговременную память отвечает внешний сервис (например, LM Studio или SillyTavern).
2. Кэш и вычислительные операции требуют памяти — в зависимости от настроек это могут быть гигабайты (RAM/VRAM).
Есть две реализации кэша:
- старая: медленная, но поддерживает разделение как по слоям так и между RAM и VRAM
- новая (unified): быстрее, как видно из названия он объединённый и должен находится только в VRAM( про это ниже), не поддерживает разделение между RAM и VRAM
Если не удаётся запустить unified кэш, то используется старая реализация либо llm работает вообще без кэша.
Вообще, модель за запрос может обработать ограниченное количество токенов — так называемое окно контекста запроса. Он задаётся при старте модели и сильно влияет на размер кэша и скорость генерации ответа. Подробнее об этом — ниже.
Кратко о запуске LLM
По сути, и LM Studio, и Koboldcpp, и Oobabooga являются надстройками над llama.cpp (не путать с LLaMA - самой моделью), которые предоставляют дополнительные функции и избавляют от необходимости работать с консолью.
llama.cpp поддерживает несколько вариантов запуска:
- OpenBLAS - для CPU (Intel, AMD, ARM)
- cuBLAS - для видеокарт с поддержкой CUDA (NVIDIA, начиная с GTX 750; хотя технология появилась на 8800 GTX, актуальные версии там уже не работают)
- Vulkan - для видеокарт NVIDIA, AMD, Intel, выпущенных после 2016 года
- Metal - для компьютеров Apple
- и другие
В LM Studio эти настройки находятся в разделе Runtime, и студия вроде автоматически скачивает подходящий вариант для вашей системы.
Важно: лучше использовать видеокарту - даже топовый процессор не справится с LLM так же эффективно. Впрочем, вы можете сами проверить это - смена Runtime в LM Studio делается за четыре клика.
Это все основные моменты. Теперь можно переходить к более глубокому изучению.

Много скучной (но нужной) теории и немного про таверну

Как мы знаем, модель не имеет долговременной памяти — за неё это делает фронтенд. В нашем случае это SillyTavern.
Вообще, в рамках РП размер контекста — это один из самых важных параметров, так как от него зависит, насколько хорошо модель будет помнить историю диалога, описание сеттинга и действующих лиц. Каждый раз, когда вы отправляете запрос, к нему прикладываются:
- описание вас и бота,
- сценарий,
- история чата,
- ваши заметки,
- информация из лорбука,
- системные команды и указание формата ответа.
Кстати, у каждого ответа бота можно посмотреть статистику и текст запроса.
Текст запроса
ДЕ	@ F3 F
Л
Prompt Iteniization S [P 0
API/Model: Text Completion (KoboldCpp) -koboldcpp/patricide-12b-unslop-mell-i1 -Q4_K_M
Preset: Kobold (Godlike) | Tokenizer: API (WebUI / koboldcpp)
Only the white numbers really matter. All numbers are estimates. Grey color items may not
А что будет, если запрос таверны превысит допустимый контекст LLM? Мы получим ошибку о том, что размер запроса больше, чем модель может обработать, и всё. Поэтому желательно в таверне выставлять размер контекста такой же, как у LLM.
Так же можно на вкладке настроек подключения поставить галочку **"Derive context size from backend"**, чтобы не париться.
Какой размер контекста выбрать — зависит от личных предпочтений, но минимум — это 8192. Средний хороший бот весит ~2k+ токенов, а обычный ответ у него может занимать 300–600+ токенов. Также, как я писал выше, SillyTavern пытается оптимизировать контекст. Для хранения истории чата есть важная фича: по умолчанию после каждого 10-го сообщения она просит LLM сделать краткий пересказ чата (не больше 200 слов), и пока модель не ответит, чат блокируется ( можно отключить).
tify on extension updates & Manage extensions £% Install extension
Quick Reply Chat Translation Image Captioning
Summarize &
Summarize with:
Main API
Current summary: X
Summary will be generated here...
©
©
©
©
Restore Previous
/.
S Summarize now	■ Pause	B No WI/AN
tf, Summary
После общения с разными LLM (от 7B до 24B) я понял, что помимо качества ответа важна также скорость, с которой она отвечает. Смотреть, как LLM печатает ответ по одному токену раз в 10 секунд, — не самый приятный опыт.
Для себя я определил минимум в 10 T/c — это комфортная скорость, при которой не хочется лезть на стену в ожидании ответа. Вот статистика небольшого ответа:
- 223 слова
- 1300 символов (311 токенов)
- время генерации ~24 секунды (~13 T/c)
Можете примерно прикинуть сколько будет занимать ответ на если LLM отвечает со скоростью 2-3 T/c, особенно на 10 сообщении.
На этом можно сформулировать простые требования:
LLM для РП должна:
- Поддерживать контекст 8192+ токенов,
- Выдавать ответ со скоростью 10+ Т/с.
В принципе, любая модель, которая полностью помещается в память видеокарты, справиться с этими условиями.

Как выбрать модель?

- Смотрим объём памяти видеокарты и ищем модели, которые занимают меньше этого значения.
- Не забываем про кэш!
К сожалению, расчёт размера кэша — нетривиальная задача. Помимо размера контекста, нужно учитывать:
- Количество слоёв модели
- Объём памяти, занимаемый одним токеном
- Тип применённого квантования (об этом ниже)
- И другие параметры, которые сложно найти заранее
Проще скачать несколько моделей, запустить их и посмотреть в логах или диспетчере задач, сколько памяти выделено под кэш. Затем ориентироваться на эти данные.
Где искать информацию о кэше? В логах запуска модели. В LM Studio для этого нужно:
- Включить **Verbose Logging** (подробное логирование),
- В логах искать строку llama_kv_cache_unified.
(ö
Q
No models loaded
Supported endpoints (OpenAI-like) GET /vl/»odels ©
POST /vl/chat/completions © POST /vl/coopletions ©
POST /vl/enbeddings ©
Developer Logs
llama.
llama.
llama.
llama.
llama.
llama.
llama.
2025-05-29 20:25:54 [DEBUG] llama.
llama.
2025-05-29 20:25:55 [DEBUG]

Часть, из-за которой вы читаете этот пост

Окей, наконец-то можно поговорить о том, что делать, когда хочется пользоваться моделями, которые немного больше, чем позволяет объём VRAM.
Для начала: если пользуетесь LMStudio, стоит знать про такую настройку, как Guardrails (не путать с Guardrails, который отвечает за цензуру запросов и ответов). В Студии она не даёт LLM использовать всю доступную память (RAM + VRAM) и при достижении лимитов меняет значения или блокирует запуск LLM, чтобы предотвратить краш операционки. Тут смотрите сами: если кроме Таверны и YouTube не открыто ничего тяжёлого (игры, софт) и есть запас по RAM — можно выключить и посмотреть, как ОС переварит нехватку VRAM.
Hardware
Ctrl t H
Instruction Set Extensions [*vx] [avx2]
Memory Capacity ©
RAM	31.83 GB
VRAM	8.00 GB
Guardrails ©
Model loading guardrails
OFF (Not Recommended)
No precautions against system overload,нейросети,SillyTavern,ролевые игры,чат-бот,длиннопост,продолжение под катом,Нейроликбез
Основной принцип: чем больше слоёв в VRAM, тем быстрее работает модель. Если слой в RAM, то он сначала копируется в VRAM, и тут упор идёт в скорость PCI-шины, а также производительность CPU и RAM.
Если вы обладатель относительно современной карточки NVIDIA, у вас должна быть доступна NVIDIA Unified Memory (UM), которая позволяет увеличить VRAM за счёт RAM (с нюансам в виде редкой просадки скорости процессинга). У AMD такого нет — точнее есть что-то похожее, но быстрый поиск не дал нормальной информации про работающее "из коробки" решение.
Использование
0%
Выделенная память графического процессора
0,778,0 ГБ
Оперативная память графического процессора Общая память графического процессора
0,8/23,9 ГБ	0,1/15,9 ГБ,нейросети,SillyTavern,ролевые игры,чат-бот,длиннопост,продолжение под катом,Нейроликбез,песочница
Магии не произойдёт: скорость всё ещё зависит от вашего железа, но оптимизируется несколько операций с памятью, что может дать прирост скорости. Правда, не стоит считать, что туда можно запихать всю модель — лучше протестировать разные настройки.
Например, я пользуюсь patricide-12b-unslop-mell-i1-Q4_K_M с контекстом 12K, и у меня после всех "оптимизаций" 37 слоёв в VRAM (~7.7 ГБ). Без UM у меня скорость генерации ответа ~11.04 T/s, а с UM запускается Unified-кэш, и, добавив ещё 1 слой , я получаю ~13.54 T/s. Суммарно в UM у меня ~3.3 ГБ.

И тут пора переходить к настройкам

Где-то на середине своих тестов я наткнулся на пост на Reddit, где всё уже расписали. Если нужны конкретные цифры — можно глянуть там. Я его лишь дополню.
Про бенчмарк и почему он нужен
Как писал выше для меня минимально приемлемая скорость ответа это 10 Т/с. В нормальных условиях скорость ответов падает постепенно, по мере забивания контекста. Конечно, можно вручную заполнять контекст, но проще воспользоваться готовым бенчмарком в KoboldCPP.
Ещё одна полезная фича: благодаря портативности можно держать рядом два экзешника KoboldCPP — для одного запретить использование расширенной VRAM (UM), а для другого разрешить.
В настройках NVIDIA
1. Откройте Панель управления NVIDIA → Управление параметрами 3D.
2. Найдите параметр: CUDA - политика резерва системной памяти (System Memory Fallback Policy).Обратите внимание: вкладки «Глобальные настройки» и «Программные настройки» позволяют задать правила как для всех приложений, так и для конкретных.
Это поможет точно определить, сколько слоёв может загрузиться в VRAM.
Как пользоваться бенчмарком
1. Запустите KoboldCPP и в интерфейсе выставьте нужные настройки.
2. Сохраните конфиг.
3. не закрывая KoboldCPP откройте командную строку и укажите путь к кобольду, например:
"C:\mystuff\koboldcpp.exe" --config "путь_до_конфига" --benchmark
Бенчмарк сделает запрос на максимальный контекст и получит ответ длиной 100 токенов, после чего выведет результаты.
Inactive Modules: ImageGeneration VoiceRecogmtion MultimodalVision NetworkMultiplayer ApiKeyPassword WebSearchProxy Tex tToSpeech VectorEmbeddings AdminControl Enabled APIs: KoboldCppApi OpenAiApi OllamaApi
Running benchmark (Not Saved)...
Processing Prompt [BLAS] (12188 / 12188 tokens)
Пояснение к метрикам:
- ProcessingTime и ProcessingSpeed — время и скорость обработки запроса.
- GenerationTime и GenerationSpeed — время и скорость генерации ответа.
- TotalTime — общее время выполнения.
А теперь, наконец, переходим к настройкам.

GPU Layers

Количество слоёв, которые должны быть загружены в VRAM. Остальные будут загружены в RAM.

Offload KV-Cache (или Low VRAM)

Принудительно размещает кэш в VRAM, игнорируя указанное количество слоёв. Это довольно старая функция, предназначенная для моделей формата GGML и видеокарт с 4–6 ГБ VRAM. Сейчас она не так актуальна.
Сильно снижает скорость, так как "чем больше слоёв в VRAM, тем быстрее работает модель". Возможно поможет если RAM медленная.
Я пробовал использовать её для 22B-модели, которая совсем не помещалась в мои 8 ГБ VRAM. Казалось бы, ситуация похожа: модель значительно больше, чем доступная VRAM. Но даже в этом случае скорость заметно упала.

FlashAttention ссылка

Штука неоднозначная. Она оптимизирует работу KV-Cache: при её включении кэш занимает меньше памяти и работает быстрее. Однако подразумевается, что вся модель и кэш находятся в VRAM, иначе возможны проблемы со скоростью генерации ответа.
Поддерживается GGUF-моделями, но, по некоторым данным, не все модели с ней совместимы (какие именно — не нашёл).

BLAS

BLAS Threads
Количество ядер для работы с линейной алгеброй.
Можно оставить значение по умолчанию — во всяком случае, у меня оно оказалось оптимальным.
BLAS Batch Size (или Evaluation Batch Size в LM Studio)
Размер «пакета» матричных операций, выполняемых одновременно в одном BLAS-вызове. По умолчанию — 512. Если размер контекста 16K или меньше, можно выставить 256, чтобы немного уменьшить потребление VRAM.

mlock (или keep model in memory в LM Studio)

Запрещает ОС выгружать модель в файл подкачки. Даже если у вас большой запас RAM, лучше включить эту опцию — это может дать небольшой прирост производительности.

mmap

А вот это лучше выключить. Позволяет частично загружать модель с диска и подгружать её по мере использования. Она нужна, когда размер модели превышает доступную память (VRAM + RAM). Это ускоряет запуск модели, но снижает производительность.

Квантование KV-Cache

Всё, что описано выше, влияет только на скорость работы модели, но не на качество ответов.
Что такое квантование LLM-модели, вы знаете. Здесь — то же самое, но для кэша. Уменьшаем размер и повышаем скорость работы ценой ухудшения качества ответов.
По умолчанию используется 16 бит. Здесь нужно экспериментировать: как правило, модели неплохо справляются и с квантованием в 8 бит, что уменьшает размер кэша вдвое — согласитесь, весьма неплохо.
По крайней мере, у себя я не заметил сильных артефактов, которые повторялись бы постоянно.

Ну и "пара" слов про RoPE

RoPE (Rotary Positional Embeddings) — это позиционное кодирование, позволяющее модели «понимать», где в последовательности находится каждый токен.
При обучении LLM-модели используют контекст определённой длины (например, 4096). В LM Studio это значение устанавливается по умолчанию при загрузке модели. Это длина контекста, которую модель «понимает» лучше всего. Не путать с максимально поддерживаем контекстом.
Если "просто" увеличить размер контекста, модель не будет корректно обрабатывать всё, что выходит за рамки её базового контекста. Это не значит, что модель прочитает первые 4096 токенов и проигнорирует остальное — скорее, она проигнорирует какое-то количество случайных токенов, из-за чего начнет выдавать бессвязные ответы.
Чтобы этого избежать, нужно выбрать алгоритм масштабирования RoPE. Их два:
1. Linear Scaling — хорошо работает для небольших контекстов до 8192
2. NTK-Aware Scaling — лучше подходит для больших контекстов от 8192
«/ Custom RoPE Config	
RoPE Scale:	1.0
RoPE Base:	10000
RoPE Frequency Base □ RoPE Frequency Scale □
© Auto © Auto,нейросети,SillyTavern,ролевые игры,чат-бот,длиннопост,продолжение под катом,Нейроликбез,песочница
Нужно выбрать один алгоритм в зависимости от желаемого контекста и менять значение только в нём.
Для GGUF-моделей LM Studio и Kobold обычно сами подбирают подходящий алгоритм и его значение основываясь на размере контекста который вы указали. Но если есть сомнения в том, что модель правильно обрабатывает контекст, можно попробовать изменить параметры вручную.
Формулы для RoPE
- Linear Scaling: базовый_контекст / новый_контекст
Пример: базовый контекст = 2048, желаемый = 8192.
2048 / 8192 = 0,25
- NTK-Aware Scaling:
Точной формулы нет (или я её не нашёл), так как изменение нелинейное. Есть значения посчитанные разрабами алгоритма:
- 32000 — увеличит контекст в 2 раза,
- 82000 — в 4 раза.

На последок небольшой лайфхак

Если модель постоянно отвечает километром текста, добавьте в описание персонажа что-то вроде:
[Try to limit your answer to 1000 words.]
или
[Try to limit your answer to 1000 tokens.]

Заключение

Вроде бы всё. Всё это начиналось как набор заметок, и, перечитывая их сейчас, я понял, что писать подобные посты — не моё.
Я знаю, что у того же Kobold есть ещё пара функций, которые могут ускорить работу, но пока не успел их протестировать нормально. Также я не затронул Samplers — они требуют знаний матанализа, и я не знаю, как объяснить это простым языком. Также на них влияет: способ обучения модели и её квантование. То, что было оптимально для не квантованной версии, может не подойти для квантованной — и наоборот.
Не уверен, что это было интересно, но надеюсь, кому-то пригодится.
Спасибо, что дочитали до конца!
,нейросети,SillyTavern,ролевые игры,чат-бот,длиннопост,продолжение под катом,Нейроликбез,песочница

Eskeld

Join
r/WorldBuildingMemes 1 d
How do you write Atheists in your world, full of gods and deities? In my world, they acknowledge their existence, they just refuse bending the knee to them, and claim mortal superiority. Coincidentally, this gives them resistance against both good and evil influence.

Отличный комментарий!

— Мне кажется или грядет очень долгий теологический диспут? — спросил Чудакулли.

Опять наступила тишина.

— А правду говорят, — спросил еще какой-то священнослужитель, — будто ты сказал, что поверишь в любое божество, существование которого будет доказано логически?
— Да.

Ваймс догадался, что сейчас произойдет, и осторожно отступил на несколько шагов от Дорфла.

— Но ведь совершенно очевидно, что боги существуют! — воскликнул священнослужитель.
— А Где Доказательства?

С плывущих по небу облаков сорвалась молния и ударила прямо в шлем Дорфла. Дорфла охватил огонь, а потом послышался шипящий звук и вокруг раскаленных добела ног Дорфла образовалась лужа из его расплавившихся доспехов.

— Я Не Принимаю Это Как Аргумент, — спокойно произнес Дорфл из недр дымного облака.

Мануал по локальному запуску чат-ботов для ролевых игр.

Пидоры, привет.
Вижу, что многим становится интересно, когда я упоминаю ролевухи с ботами, развернутыми локально.
Напишу небольшой мануал, по быстрой настройке и запуске ролевых моделей.
Краткая теория: Для работы бота, нужно установить и настроить два компонента. Та часть, которая будет обеспечивать работу самой нейросети и возможность передать ей запрос - называется бэкэнд, а та часть, которая обеспечивает веб-интерфейс для взаимодействия с ботом - называется фронтэнд. Я обычно использую для бэкэнда https://github.com/oobabooga/text-generation-webui , но сегодня я буду описывать настройку на базе https://lmstudio.ai/ , для того, чтобы максимально упростить процедуру установки. Фронтэнды бывают очень разнообразные, но сегодня у нас конкретная цель - бот для ролевых игр, а для этого наиболее всего подходит интерфейс SillyTavern https://github.com/SillyTavern/SillyTavern . Я буду настраивать пошагово все на полностью чистой Windows 11, иллюстрируя пошагово.
PS: Я приведу общую настройку, без привязки к оборудованию. Из обязательных требований, только процессор с поддержкой инструкций AVX2, хотя бы 16 гб оперативки и по возможности видеокарта nVidia или AMD(это не обязательно, но наличие даже простой видеокарты, позволит значительно ускорить процесс работы бэкэнда. Я довольно долго использовал старую nVidia GTX 960 на 4 гигабайта видеопамяти, сгружая туда несколько слоев модели и кеш. Это ускоряло обработку контекста раз в десять.) Чем больше у вас оперативки, тем больше модель туда сможет влезть, но при работе на процессоре, я не рекомендую использовать модели больше 13 миллиардов параметров(13B)
На моем 12700kf, без использования видеокарты, 8B модель генерирует примерно 8-10 токенов в секунду. Это примерно 3-4 слова в секунду. На видеокартах 3090, скорость достигает 40-70 токенов для 8b, но там уже можно взять модельки получше.
Я последнее время ролю вот с этой: https://huggingface.co/Gryphe/Pantheon-RP-1.8-24b-Small-3.1 (ну или квантованная версия https://huggingface.co/bartowski/Gryphe_Pantheon-RP-1.8-24b-Small-3.1-GGUF)
Запускаете LMStudio и пропускаете обучение, тыкая на надпись справа вверху.
Можно сразу же приступать к скачиванию нужной языковой модели.
Я использую несколько различных языковых моделей, но наиболее легковесная и качественная модель, отвечающая большинству моих требований - это https://huggingface.co/Cas-Archive/L3-Umbral-Mind-RP-v1.0.1-8B на базе Meta*(экстремисты, террористы и ваще гандоны) LLama 3.1, с проведенной над ней процедурой аблитерации(снятие моральных блокировок и цензуры) и дообученной на различных похабных датасетах и заточенная под всякоразные непотребства.
Т.к мы работаем с LLAMA.CPP, то нам нужна версия пересобранная в формат GGUF.
В большинстве случаев, достаточно будет квантованной версии на Q8(Она дает приемлемое качество ответов, при этом потребляя вдвое меньше памяти.)
Для этого, мы должны скачать нужную нам модель, используя встроенный загрузчик lmstudio
Нужно выбрать размер квантования Q8 и скачать выбранную модель.
После завершения закачки - выберите и загрузите в память выбранную модель.
(Скорость загрузки в память будет зависеть от скорости чтения вашего жесткого диска)
Если на этом этапе, не возникнет никаких проблем, то это означает, что модель загружена успешно и в теории вы уже можете писать ей различные вопросы, используя внутренний интерфейс чата.
Но это не удобно и по большей части, не дает полноценно насладиться ролевой игрой. Для того, чтобы использовать возможности современной языковой модели по полной, нам нужно перевести студию в режим сервера. Для этого, откройте системный трей и разрешите студии слушать подключения на порт 1234(просто поставьте галочку)
Убедитесь, что сервер запущен и готов к работе.
Теперь можно приступать к установке Таверны. Для этого, нам потребуется дополнительная программа:
После этого, переходит на гитхаб Таверны и качаем свежий релиз:
На момент написания мануала, это версия 1.12.13
Распаковывайте в удобное для вас место(я использую рабочий стол.)
Для старта приложения, нужно запустить файл Start.bat, который находится внутри и дождаться загрузки и установки всех необходимых компонентов.
Таверна также не требует каких-то настроек и в большинстве случаев заработает сразу без дополнительных телодвижений. В результате откроется внутренний интерфейс:
Придумайте себе имя и нажмите Save
Теперь, нам нужно соединить Таверну и LMStudio. Для этого, нужно указать адрес в настройках таверны.
Выбираем API "Text Completion", API Type "Generic(OpenAI-compatible) [LM Studio, LiteLLM, etc]"
После чего, указываем Server URL http://127.0.0.1:1234 и нажать Connect.
Если вы увидели в статусе ответа модель, то значит все хорошо и связь установлена. Можно поставить галочку на автоподключение и снова нажать на пиктограмму вилки (1), чтобы свернуть меню и перейти к настройкам таверны.
Переходим к базовым настройкам модели:
Т.к L3-Umbral-Mind-RP-v1.0.1-8B основана на архитектуре LLama-3, то нам нужно выбрать соответствующие типы инструкций(желтый и зеленый элементы) Также, активируйте все маленькие элементы, чтобы они загорелись зеленым. Больше, ничего на странице трогать не нужно. Можно переходить к опции автоперевода. Пидоры, свободно владеющие басурманским, могут пропустить эту часть и переходить к следующей.
После этого, уже можно переходить к диалогу с ботом. По-умолчанию, в Таверне уже есть один персонаж, Серафина. С ней можно провести тестовый диалог, чтобы оценить скорость и общие настройки.
Настройки по умолчанию не очень качественные, я рекомендую использовать предпрофиль Mirostat и можно включить стриминг токенов, тогда сообщение будет появляться в реальном времени, что позволит примерно понимать скорость генерации ответов.
У таверны, есть отличный сайт с документацией, который содержит просто потрясающее количество полезных сведений по всевозможным настройкам.
https://docs.sillytavern.app/
Вы можете как создавать собственных персонажей, так и загружать карточки уже готовых.
Вот пример, как это можно сделать. Открываем сайт с карточками:
https://aicharactercards.com/
и либо выбираете карточку из предложенных, либо ролите ее. Я предпочитаю делать персонажей самостоятельно, но на первых парах использовал готовые.
Копируем адрес карты, перейдя в нее.
После этого, возвращаемся в таверну, чтобы импортировать карту персонажа.
Импортируем карту и все теги.
И можно начинать чат.
В целом, на этом все. Уже можно творить всякое непотребное и делать что угодно.
Можете писать вопросы в комменты, постараюсь помочь чем смогу.
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме ролевые игры (+312 постов - ролевые игры)