Виртуальный ролеплей, часть 2: Настройка SillyTavern

Всем привет! После того, как вы запустили LLM-интерфейс oobabooga и интерфейс SilyTavern, что описано в первой части, необходимо его настроить, чтобы получить максимально приятный опыт ролеплея. (А чтобы получить уникальный опыт — попробуйте создать своего персонажа)

Виртуальный ролеплей, часть 2: Настройка SillyTavern

Ваш персонаж

В первой части после запуска SillyTavern вы дали имя своему персу, но ему еще можно добавить и черты характера. Открывайте вкладку со смайликом:

Виртуальный ролеплей, часть 2: Настройка SillyTavern

Слева вы можете описать себя, а справа можете добавить еще личностей.

Вы — {{user}}, и дальше коротко описывайте себя любимого. А вот эти непонятные буквы ENTP и далее — это тип личности. Модели почему-то отлично понимают их, и по словам играющих — очень понимают. Настолько, что ИИ может вам отказать в рамках отыгрыша (хотя обычно она никогда не отказывает) Его можно добавлять как к своему персонажу, так и к тому, с кем вы будете играть, об этом чуть позже.

Вы можете либо пройти MBTI тест, либо вот табличка:

Еще раз спасибо <a href="https://dtf.ru/u/1239099-diavator" rel="nofollow noreferrer noopener" target="_blank">Diavator</a> за объяснение: )
Еще раз спасибо Diavator за объяснение: )

Настройка ответа ИИ

Виртуальный ролеплей, часть 2: Настройка SillyTavern

Эти настройки, находящиеся слева, контролируют ответ ИИ, и их много.

Маленькое отступление, чтобы лучше понять инфу ниже: Если залезть в структуру ИИ-модели, то можно увидеть огромную паутину из нейронов и весов к ним. Пример: Если нейросеть обычная, то после слова «Меня« вероятнее всего ИИ выберет слово «‎зовут», а если модель, например, пошлая, то после слова «Меня» скорее всего она выберет «‎заводит», так как вес у него больше, чем у «зовут». Вот из этих взаимосвязей слов и весов и состоит ИИ-модель.

Сверху есть предустановки, это сильно упрощает жизнь. Мне рекомендовали Pygmalion и Deterministic, в комментах тоже есть пара рекомендаций, и есть Mirostat, о котором позже.

Основные, которые вам стоит знать, но не стоит трогать просто так:

  • Длина ответа — сколько токенов будет использовано для сообщения. Токены — это минимальная «единица» в структуре модели — слово, часть слова, даже точка. ИИ не обязательно будет использовать все токены, которые ему отведены, но больше заданного значения — нет
  • Размер контекста — количество «памяти» ИИ. При каждой генерации в обработчик направляется n количество токенов, содержащие в себе вашу личность, лорбук персонажа, самого персонажа и прошлые сообщения чата, и чем контекста больше, тем лучше. Но не все ИИ поддерживают много, стандарт — 2048. 4096 лучше, но генерация будет заметно дольше
  • Температура — Параметр случайности. Чем выше значение, тем более случайными (крейзи) будут ответы ИИ. Приемлемые значения — 0.6-0.8
  • Rep. Pen — коэффициент штрафа за повторение. Чем больше значение, тем более строгий отбор следующего токена при формировании ответа
  • Диапазон Rep.Pen — Какой диапазон токенов (в памяти, начиная с конца) будет передаваться в Rep.Pen для анализа повторов
  • No Repeat Ngram Size — Указывает длину набора токенов, которые нельзя повторять вообще. Чем больше значение, тем большую фразу из токенов ИИ не будет повторять. wiki рекомендует либо не трогать, либо устанавливать сразу высокие значения
  • Минимальная длина — минимальная длина сообщения. Помните, что длина ответа не гарантирует использование всех предоставленных токенов? wiki рекомендует вместо этого значения использовать «Запретить EOS-токен» (галочка ниже в настройках)
  • Top P — диапазон весов. Чем выше значение, тем больший диапазон связанных слов к предыдущему будет выбираться
  • Top-k — сколько слов выбирать для Top P. Это значение определяет, сколько весов взять для выборки. Например, выставив значение 10, при генерации ответа, ИИ будет даваться 10 слов, из которых Top P будет выбирать
  • Отсечение эпсилона — выставляет нижний порог, при котором слова с меньшей вероятность выбора будут исключены. wiki рекомендует значение 3
  • Отсечка Eta — Я не очень понял, что эта штука делает, но wiki рекомендует значение 3

Приведу список количества токенов, которые модели смогут адекватно обработать:

  • Модели до 6B — 1024 токена
  • Модели 6B-13B — 2048 токенов
  • Модели 13B-20B — 4096 токенов
  • LLaMA 2 — 4096 токенов
  • OpenAI ChatGPT 3.5 Turbo — 4096 токенов
  • OpenAI GPT-4 — 8192 токена
  • NovelAI — 8192 токена

Mirostat

It's revolution, Johnny! Это новый алгоритм обработки генерации ответов «нового поколения», и он может действительно улучшить качество ответов ИИ, но немного замедлит генерацию. Если хотите разобраться, как эта технология работает, тут статья от разработчиков Mirostat. Его настройка:

  • Mirostat Mode — значение 0 отключает его, 1 — Mirostat для .cpp, то есть для моделей GGML и GGUF, 2 — Mirostat 2.0 для всего остального. Сильных отличий между ними, если что — нет
  • Mirostat Tau — «энтропия», контролирует значение Top K. Mirostat делает это динамически
  • Mirostat Eta — Контролирует возвращение Top K к первоначальному значению, то есть чем больше значение, тем он консервативнее
  • Важно! Нужно выставить все значения до Mirostat по дефолту, для этого есть предустановка Mirostat.

Параметры персонажа

Когда мы наконец настроили все, можно и персонажа доделать

Виртуальный ролеплей, часть 2: Настройка SillyTavern

В принципе с настройками персонажа все понятно, они очевидны. В Promt Overrides можно написать переопределения персонажа — что ему можно и нужно, а что нельзя (в работе с новыми моделями лучше не трогать).

Но устоявшихся стандартов пока нет, тема слишком новая, так что персонажей каждый пишет по-своему. По крайней мере я не нашел какого-то единого шаблона, у всех все по разному — подробнее в третьей части.

В Личную сводку можно написать или дописать его характер по вашему желанию. Снова вспоминаем про тест личности, 4 буковки и циферки, даже их будет достаточно, чтобы придать персу определенные черты характера.

Если персонаж известный, то его тип личности можно посмотреть на этом сайте. Также оставлю ссылку на редактор персонажей, если захотите углубиться в эту тему

Персонаж также состоит из токенов. Их количество указано правее его имени. Permanent токены — это количество, которое передается каждую генерацию. Чем больше токенов, тем лучше, конечно, но нужно знать меру. В идеале, чтобы Длина Контекста была вдвое больше, чем токенов у персонажа, иначе для лорбука и сообщений не останется места, и перс будет топтаться на одном месте в сюжете.

Групповые чаты

Прикольная фишка, но адекватно работает только на моделях от 13B.

Виртуальный ролеплей, часть 2: Настройка SillyTavern

Необходимо выбрать персонажа, и нажать на кнопку в его описании, которая подсвечена на картинке. Выбираете название чата, и персонажей, которые будут в него входить:

Виртуальный ролеплей, часть 2: Настройка SillyTavern

Как только выберете персонажей, нажимайте на галочку и развлекайтесь.

Формат сообщений

Некоторые специальные символы для общения:

  • Прямая речь
  • *Действие*
  • **Жирный текст**
  • «Цитата»
  • [Инструкция для ИИ], например [двигайся дальше по сюжету]

Но не все модели правильно понимают эти спец.знаки. Pygmalion-like понимают хорошо, а с другими нужно проверять и экспериментировать.

Расширенное форматирование

Эти настройки отвечает за формат передачи контекста ИИ модели, они скрываются во вкладке "А":

Виртуальный ролеплей, часть 2: Настройка SillyTavern

Шаблон контекста позволяет выбрать формат передачи всего контекста ИИ при каждой генерации. Хватает и Default настроек, но можете поэкспериментировать, я не нашел сильных отличий генерации между режимами. Единственный сильно отличающийся режим — Roleplay, позволяет ИИ в своем ответе писать речь от вашего лица.

ЛОР

Для расширения контекста и раскрытия персонажа, существуют Лорбуки. Они описывают окружающий мир. Лорбук подключаемый и также состоит из токенов.

Виртуальный ролеплей, часть 2: Настройка SillyTavern

Как только ИИ видит определенные ключевые слова в вашем сообщении, он сопоставляет их с заранее прописанными к ключевым словам инструкциями в Лорбуке и может добавить в свой ответ контекст из него.

  • Глубина сканирования — сколько ваших последних сообщений ИИ будет просматривать на ключевые слова
  • Процент контекста — вероятность того, что ключевое слово стриггерит обращение к Лорбуку
  • Бюджетный лимит — Сколько токенов в генерации отведено лору. По умолчанию 0 — лимит отключен.

SillyTavern Extras

Extras позволяют вам разнообразить и расширить SillyTavern, например заставить персонажей говорить с помощью TTS или генерировать изображения с помощью Stable Diffusion

Для установки вам требуется дополнительно установить Miniconda

Как только установите:

  • Запускайте Anaconda Prompt (miniconda3) и выполняйте команды
  • conda create -n extras
  • conda activate extras
  • conda install python=3.11 git
  • git clone https://github.com/SillyTavern/SillyTavern-extras
  • cd SillyTavern-extras
  • pip install -r requirements-complete.txt

Запуск из папки, куда скачали экстрасы — python server. py --enable-modules=caption, classify, sd, chromadb

Тут описание всех модулей.

Stable Diffusion (sd) работает… странно. Вы вписываете промты сами в SD Promt Templates и SD генерирует и отправляет картинку в чат. И это так в любом режиме.

TTS уже более интересный, но он читает оригинальный английский текст, а не русский. Как это исправить, я не нашел.

Character Expressions (classify) показывает эмоции персонажа, если вы загрузите его картинки. Можете протестировать со стандартным персонажем Seraphina.

Smart Context (chromadb) — Спасение для тех, кому не хватает длины контекста. Эта настройка записывает всю память в БД, и оттуда уже вытягивает нужные данные.

Перевод я освещал в первой части.

Заключение

Искусственному интеллекту далеко до идеала, и он не может заменить реального общения, но он активно стремится к нему. Когда нет времени (или друзей) собирать кучу народа для DnD, почему бы и нет. Думаю, это все, что вы должны знать для комфортного отыгрыша. Для «глубокого погружения» есть документация и десятки веток на Reddit.

Спасибо всем, кто комментирует и помогает в развитии этой темы. Любая полезная информация навеки останется в этой статье.

Делитесь своим опытом в комментариях, и приятной игры!

4848
11
36 комментариев

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

http://ayumi.m8geil.de/erp4_chatlogs/?S=iq3_0#!/index
Ва должно интересовать только вот это:
1- размер моели
2- вариативность прилагательных (красивости текста и литературность если проще)
3- Повторяемость слов из предыдущих сообщений, чем меньше значение тем лучше.
4- умность модели, ее понимание чем выше тем лучше.
5- пошлость, если для ЕРП, чем выше тем лучше.

4

Тот самый парадоксальный момент когда 9б может дать прикурить 70б модели. Тут прикол как в сравнении "умного" и "разумного", "умный" -знает много, но фигово пользуется этими знаниями, а "разумный" знает меньше, но то как оперирует этими малым объемом заставляет задуматься. Сама тестила МикстралТрикс 9б, и офигела от нее, не без грехов (привет, немецкий язык без причины, глюк обучения), но то как она обыгрывает карточку героя и как она красиво литературно пишет... это великолепно, еще и 32к контекста)) Поверьте на слово, мне есть с чем сравнить за долгое время тестов различных моделей и героев. Так что погоня за жирностью модели не всегда хорошая идея.

3

1- как обучена модель 2 - джейлбрейки и промт.
Если модель пишет и действует за вас - редактируйте и удаляйте это, если не помогает то в описание перса в конце или в начале (не важно) напишите что вроде: [{{char}} is not allowed to speak, think, decide, or control the dialogues of {{user}}. You will only speak, narrate and describe for {{char}}. You will never narrate, describe and speak for {{user}}. {{char}} guides the conversation forward.]

3

Если и это не помогает значит ваша модель была обучена на написании законченных рассказов и ее проще заменить на другую. Идете к Аюми, благо он исправился и стал делать годные тесты начиная с 4й итерации сайта и смотрите что вам подходит больше.

2

Формат сообщений Я заметил, что нормальная работа *мыслей* [ooc инструкций] есть не во всех моделях. Походу сильно влияет на чем обучали. Вот допустим пигмалион и все, что на его базе модели, там прям хорошо работает, ну и неудивительно ведь обучали на ролеплеях.

список количества токенов, которые модели смогут адекватно обработатьУчитывая, что токены кушают память сверх модели иногда полезно их урезать. Условные 13b модели в 4bit квантовании кушают почти впритык 12гб врам. А стоит им вывалиться за этот предел, как скорость генерации падает ощутимо.

Настройка ответа ИИ Имхо рекомендую всем не крутить эти параметры, а сперва поиграться с пресетами. Типа мой любимый пресет это storywriter. Разрабы даже сравнивали кучу разных пресетов с помощью голосований. И в топе по ролеплею в чатах у них например Midnight Enigma, Yara, Shortwave, Kobold-Godlike. Инфа отсюда -> https://github.com/oobabooga/oobabooga.github.io/blob/main/arena/results.md

К статье еще добавил бы ссылку на редактор персонажей https://avakson.github.io/character-editor/
Можно и чужих открыть посмотреть в нем, можно и своего сотворить. Мелочь, но удобнее блокнота.

1

Спасибо за ссылки!
Да, эти значения +- бесмысленно крутить самому, раз есть предустановки, тем более Mirostat, который мне ну прям понравился.

1