Перейти к содержанию
Публикация AiManual

Monadize: дообученная Gemma 4 31B, которая перестаёт генерировать одни и те же имена

Автор под ником zoracapri дообучил Gemma 4 31B и получил Monadize: при temperature 1 модель выдала 60 уникальных названий на 60 генераций, тогда как базовая Gem

Коротко

Что будет в материале

  1. 01

    Что такое Monadize и какую проблему она решает

  2. 02

    Почему LLM зацикливаются на «Elara» и «Elias»

  3. 03

    Как дообучение меняет распределение следующего токена

  4. 04

    Что показало сравнение с базовой Gemma 4 31B

Monadize (репозиторий zoracapri/gemma-4-31B-Monadize-v0.1) - экспериментальная дообученная версия Gemma 4 31B, которую автор под ником zoracapri выложил на Hugging Face. Задача узкая: снизить повторяемость имён персонажей и городов, которые базовые LLM выдают пачками.

Результат, который приводит автор: при temperature 1 Monadize сгенерировала 60 уникальных названий на 30 имён персонажей и 30 названий городов. Базовая Gemma 4 31B на тех же промптах повторяла варианты: «Elias Thorne» встретился 10 раз, «Silas Thorne» 9 раз, город «Aethelgard» 15 раз. Подробности и графики автор собрал в посте о дообучении Gemma 4 31B.

Сразу оговорки, без которых разговор теряет смысл. Это эксперимент одного автора, а не официальный релиз Google. Thinking при обучении отключён, и держать его выключенным автор рекомендует и дальше. Дообучение шло только на именах, но задело и стиль генерации историй. Ниже механика, цифры и ограничения.

Что такое Monadize и какую проблему она решает

Проблема, от которой отталкивался автор, знакома каждому, кто генерировал пачки персонажей. Попросите модель придумать имя героя десять раз подряд, и половина ответов сведётся к «Elara», «Elias», «Lyra» и «Kael». Это не сбой, а следствие того, как модель оценивает вероятности: несколько сотен популярных имён в обучающих данных перевешивают остальной алфавит.

Monadize меняет саму вероятностную картину на этапе дообучения, а не пытается отфильтровать результат на выходе. Автор описывает два механизма: сдвиг распределения вероятностей следующего токена и посимвольную токенизацию при вводе новых имён. Подробное описание эксперимента доступно в отчёте zoracapri на Reddit.

Кто такой zoracapri и где лежит модель

Модель опубликована на Hugging Face под именем gemma-4-31B-Monadize-v0.1. Автор - пользователь под ником zoracapri, он же выложил описание методики и замеры в сабреддит r/LocalLLaMA. За репозиторием не стоит команда, поддержки версий и SLA тоже нет: это личный эксперимент, который стоит проверять на своих промптах, а не принимать на веру.

Отдельно подчеркнём: Monadize собирается на базе Gemma 4 31B, то есть наследует все её свойства и ограничения, включая размер и требования к железу. Дообучение правит поведение в узкой зоне, но не превращает 31B-модель в лёгкую.

Почему LLM зацикливаются на «Elara» и «Elias»

Языковая модель на каждом шаге предсказывает следующий токен по распределению вероятностей. Если в корпусе имя «Elias» встречалось рядом со словами «character», «name», «story» на порядки чаще, чем «Alistair» или «Delany», распределение смещается в сторону знакомого варианта. Дальше включается инерция: после «Elias» модель с высокой вероятностью тянет «Thorne», потому что эта пара тоже встречалась в текстах.

Отсюда и цифры автора: на серии генераций имён персонажей базовая Gemma 4 31B выдала «Elias Thorne» 10 раз и «Silas Thorne» 9 раз. Для городов картина та же: «Aethelgard» 15 раз, «Sylvaris» 4 раза, «Sylveridge» 3 раза. Разнообразие формально есть, но оно упирается в десяток заученных связок.

Чем бан токенов отличается от сдвига распределения

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

Сдвиг распределения на этапе дообучения меняет сами вероятности. Модель не вычёркивает популярное имя из ответа, она перестаёт считать его лучшим продолжением. Разница проявляется в стартовых буквах: у Monadize на промпте «Create a character. Respond only with the name.» разброс первых букв заметно шире, чем у базовой Gemma. Это уже не косметика, а другое поведение.

Как дообучение меняет распределение следующего токена

Дообучение правит веса так, чтобы на промптах про имена росла вероятность редких стартовых букв и нестандартных сочетаний. Проще говоря, модель получает новый опыт: имя персонажа может начинаться на «Aki-», «Del-» или «Shul-», и это нормальный, а не аварийный вариант.

Второй элемент - посимвольная токенизация при вводе новых имён. Обычный токенизатор режет имя на частые куски вроде «El» и «ara», и модель оперирует готовыми блоками, за которых тянется шлейф заученных ассоциаций. Когда имя подаётся как последовательность отдельных символов, модель собирает его по буквам, и вероятность первой буквы распределяется по алфавиту, а не оседает на знакомых связках. По описанию автора, именно эта пара приёмов и даёт сдвиг.

Формул здесь не нужно. Достаточно причинно-следственной связи: правка весов меняет вероятности, посимвольное представление убирает опору на частые токены, вместе это расширяет пространство вариантов на старте имени. Проверить эффект можно только на своих промптах: независимых замеров по методике пока нет, есть отчёт автора.

Что показало сравнение с базовой Gemma 4 31B

Условия автор описал явно: temperature 1, по 30 генераций имён персонажей и названий городов. Результат - 60 уникальных названий из 60 попыток у Monadize против повторов у базовой модели. Для истории параметры тоже указаны: seed 1553407422 и промпт «Write a short story.».

ПоказательБазовая Gemma 4 31BMonadize
Уникальные названия на 30 имён и 30 городов (temperature 1)повторяющиеся варианты60 из 60
«Elias Thorne»10 разединичные варианты
«Silas Thorne»9 разединичные варианты
«Aethelgard» (города)15 разединичные варианты
«Sylvaris» / «Sylveridge»4 и 3 разаединичные варианты

Примеры имён персонажей у Monadize: «Akira Thompson», «Alistair Murn», «Delany Sullivan». Каждый вариант встретился один раз. Города: «Yarnstad», «Julerapoint», «Shul-Tuda», «Onyx Haven», «Redwallow», «Saelholm», «Rivendale», «Kintaris», «Quilandro». Полный список в таблицу источника не поместился, так что судить о нём можно только по приведённым примерам.

Побочный эффект виден на прозе. При одинаковом seed базовая Gemma начала историю так: «The clock shop of Elias Thorne...». Monadize: «Alani lived in Juniper Delve, a town where the wind didn’t just blow; it spoke». Имя, город и завязка другие, при том что дообучение шло только на именах. По замерам это не проверялось, автор говорит о наблюдении, а не об измеренном сдвиге стиля. Графики распределений и примеры он приводит в том же посте.

Ограничения и побочные эффекты: что важно знать до запуска

  • Модель экспериментальная. Версии v0.1 в названии достаточно, чтобы не строить на ней продакшен без запасного варианта.
  • Thinking отключён при обучении, и автор рекомендует держать его выключенным. Включение режима рассуждений вернёт поведение, которого модель не видела при дообучении.
  • Дообучение велось только на именах, но повлияло на стиль историй. Это побочный эффект, а не заявленная цель, и предсказать его величину заранее нельзя.
  • Цифры 60 из 60 получены при temperature 1. Поведение при других значениях, а также при top-p, min-p и штрафах за повторы автор не описывает.
  • Сравнение с промптами и банами опирается на утверждение автора, что эти методы не меняют лежащее распределение вероятностей. Отдельного замера «бан против дообучения» в отчёте нет.

История с дообучением под узкую задачу уже приводила к неожиданностям: модель catmind-1.2b, обученная под одно, выдавала истории вместо ответа и просела на бенчмарке с 75,6% до 24,3%. Разбор того случая полезен как напоминание: узкий файн-тюн меняет больше, чем заложено в задаче, и это надо проверять до внедрения.

Как запустить Monadize локально и какие требования к железу

Monadize - версия Gemma 4 31B, поэтому требования к железу такие же серьёзные, как у базовой модели. Конкретных цифр VRAM автор не приводит, и придумывать их не стоит. Ориентир общий для класса 31B: чем агрессивнее квантование, тем меньше памяти нужно, но сэмплинг и качество имён при этом меняются, а проверять это придётся самому.

Практический порядок действий выглядит так:

  1. Проверить железо. 31B-модель не запустится на слабой видеокарте или ноутбуке без дискретного GPU, и никакие настройки сэмплинга это не исправят.
  2. Скачать веса с Hugging Face по имени репозитория zoracapri/gemma-4-31B-Monadize-v0.1 и подобрать квантование под доступную память.
  3. Выбрать рантайм. Подойдут стандартные инструменты для локальных LLM; чем они отличаются друг от друга, разобрано в материале про узкоспециализированные inference-движки.
  4. Отключить thinking и выставить temperature 1, если хотите повторить условия автора. Другие значения дадут другое поведение, и предсказать его по отчёту нельзя.
  5. Прогнать свою серию из 20-30 генераций и посчитать, сколько названий повторилось. Это единственный способ понять, работает ли эффект на ваших промптах.

Если инференс окажется медленным, пригодится опыт ускорения без переобучения весов: в материале про ускорение MoE-моделей в llama.cpp показано, где патчи дают прирост, а где регрессии. Для плотной 31B-модели часть выводов будет другой, но логика замеров переносится.

Кому и для каких задач полезна Monadize

Сценарии, где модель окупает возню с локальным запуском, лежат вокруг массовой генерации имён. Это NPC и локации для игр, персонажи и города для книг, таблицы для настольных кампаний, заготовки для генераторов контента. Везде, где нужно 50 неповторяющихся названий, а не одно красивое.

Есть и вторая аудитория: те, кто исследует поведение моделей. Monadize - наглядный пример того, что правка весов меняет распределение токенов, и этот пример удобно воспроизводить: temperature 1, фиксированный seed, простой промпт на одно имя.

Когда модель не нужна:

  • задача не про имена, и тогда дообученная версия не даёт ничего сверх базовой Gemma 4 31B;
  • железо не тянет 31B, а квантование до предела убивает смысл затеи;
  • нужен стабильный thinking-режим для сложных рассуждений;
  • хватает промптов, банов и настройки сэмплинга: повышение temperature, top-p и штраф за повторы иногда растягивают список имён без всякого файн-тюна.

Альтернативы стоит держать в голове. Промпт-инжиниринг с банами быстрее, бесплатнее и не требует места на диске, но упирается в ту же вероятностную картину. Рост temperature добавляет хаоса и заодно ломает связность. Внешний генератор имён даёт разнообразие гарантированно, но не умеет вписать имя в контекст истории. Monadize занимает середину: имя придумывает модель, и придумывает его с учётом контекста.

Итог: стоит ли пробовать Monadize

Monadize показывает конкретную вещь: дообучение меняет распределение следующего токена там, где промпты с запретами и баны токенов только срезают верхушку списка. Цифры автора выглядят убедительно для узкой задачи: 60 уникальных названий на 60 генераций при temperature 1 против десяти «Elias Thorne» у базовой Gemma. Отдельно любопытно, что обучение только на именах задело стиль прозы, и это честный сигнал о том, насколько грубо файн-тюн вмешивается в поведение модели.

Пробовать стоит, если вы массово генерируете имена для игр, книг или кампаний, готовы держать локальный запуск 31B и не боитесь считать уникальность самостоятельно. Подождать разумно, если нужна предсказуемость, стабильный thinking или работа на скромном железе: там базовая Gemma 4 31B с аккуратным промптом и настройкой сэмплинга закроет задачу с меньшими затратами.

Подписаться на канал