Содержание← к чату

RUKALLAMA V11++ — версия 2

Выложена 28 октября 2026 года во второй слот сайта. Что это за модель, как я к ней шёл три дня после выкладки версии 1, какие статьи пригодились и что она теперь умеет.

КОРОТКО

1. Откуда начинал

26 октября

26 октября на сайт в слот 1 встала версия «без залипания». В ней я дообучил девять голов внимания, которые копируют слова из беседы. Раньше в длинном разговоре модель тянула одну тему по кругу из своих же прошлых ответов, а эти головы стали меньше смотреть на её прошлые реплики. Залипших ходов в моей проверке стало 20 из 48 вместо 34, память о собеседнике осталась на месте.

Но заплатить пришлось длиной: ответы стали примерно вдвое короче — около 96 токенов против ≈190 у модели до этого шага. И осталась старая болезнь: иногда модель берёт факт человека себе. Человек пишет «дача у нас с женой, Галей», а через пару ходов слышит в ответ «Галя — моя жена».

На следующие дни задач было две: вернуть длину, не потеряв память, и найти, где именно «ваше» превращается в «моё».

2. Попытка вернуть длину ответа

26–28 октября

Вектор «длиннее»

Первая идея — стиринг, по работе Stolfo и соавторов об управлении следованием инструкциям через активации. Берутся два прогона: один с просьбой «отвечай подробнее», другой без неё. Их разница во внутреннем состоянии модели — это «вектор инструкции». Его можно прибавлять на ходу, и модель ведёт себя так, будто просьба была.

Длину вектор частично вернул, а память уронил: 9–11 фактов из 54 против 22 у версии 1. Почему так, подсказали две работы. Tan и соавторы показали, что управляемость вектором сильно зависит от входа и на части данных почти не работает. Работа SKOP («Don't Lose Focus») объяснила, почему стиринг ломает именно извлечение: он сдвигает совпадение запросов и ключей внимания.

У моей модели это видно напрямую. Вектор, прибавленный в поток, проходит через одну общую матрицу, из которой получаются запросы, ключи и значения всех голов сразу. Поэтому сдвигается всё внимание, включая головы, которые достают ваши факты. Кроме того, на сами смыслы в потоке приходится примерно треть, остальное — общая постоянная часть. Стиринг длины я закрыл.

Откат голов по одной

Тогда я стал по одной возвращать дообученные головы версии 1 к прежнему виду: какая из девяти «съела» длину? Ни одна по отдельности. Длина вернулась, только когда я откатил четыре головы слоя 21 вместе: ответы стали 101–109 токенов вместо 82–90. Но память упала до 17 из 54, и вернулись каша и залипание. Не принято.

3. Где мысль ломается на пути в ответ

28 октября

RUKALLAMA перед каждым ответом думает, и мысль часто правильная: «Это его опыт, не мой». А ответ всё равно выходит «Да, Галя — это моя дача». Я решил найти точное место, где верная мысль теряется.

Я собрал 80 проверок: 20 фактов о человеке, сказанных за 0, 2, 5 и 10 ходов до вопроса. Мысль перед ответом подставлялась готовая — верная, нейтральная или неверная. С верной мыслью ответ всё равно начинался с «я» в 46 случаях из 80, с нейтральной — в 51, с неверной — в 72. Значит, верная мысль почти не помогает.

Дальше два стандартных инструмента интерпретируемости. «Логит-линза» показывает, какое слово модель «собирается» сказать на каждом слое. Подмена активаций (activation patching) показывает, что изменится в ответе, если выход одной головы или слоя взять из другого прогона. Картина получилась чёткая:

Выключить голову L21.H7 — простое решение, но оно не сработало. На пробах «я» стало меньше (36 из 80), а в живых беседах память упала до 15 из 54. Эта голова переносит из мысли и нужные факты. Точечное дообучение только этой головы отучило её читать «мои» (внимание к этому слову упало с 0.18 до 0.04), но память в беседах вышла 14 из 54. Тоже не принято.

Нашёлся и корень в данных. Шаблон мысли «Это её данные, не мои» пришёл из моего же генератора бесед, на которых я учил модель отличать чужие факты от своих. Я переписал 833 таких мысли во второе лицо («Отвечу: ваша жена работает переводчицей») и переучил ветку. Память — 14 из 54, тоже не лучше.

4. Ветка «только человек» + покрытие вопроса

28 октября

Что за ветка

Ветка «только человек» стоит в модели с 22 октября. Идея взята из Memorizing Transformers (Wu и соавторы): рядом с обычным вниманием отдельный путь, который достаёт нужное из памяти. У меня этот путь работает внутри окна беседы, и ключи в нём — только из ваших реплик. Свои мысли и ответы модели ветке не видны, поэтому выдать свои слова за ваши через неё невозможно. Ветка стоит на слоях 16 и 18, по 4 головы, и подмешивает найденное в поток модели.

Что заметил

Читая проверочные беседы, я увидел, что часть потерь памяти — это не «забыла», а «не дошла». Вопрос «во сколько у меня зачёт и как препода зовут?» — модель называет Сергея Иваныча, а про время молчит. «Как дочку зовут, сколько ей и откуда поедем?» — называет только Катю. Ветка видит весь вопрос, но не помнит, какую его часть уже взяла.

Покрытие

Ровно эту беду в 2017 году решили See, Liu и Manning для автоматических пересказов: пересказ повторял одно и забывал другое. Их «покрытие» — счётчик, сколько внимания каждое слово источника уже получило. Внимание сдвигается от уже покрытого, а за повторный взгляд на то же слово модель получает штраф.

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

Что показала проверка

Проверка — 9 бесед, каждая с тремя разными «зёрнами» случайности. В семи из них человек по ходу рассказывает о себе, а в конце спрашивает, помнит ли модель. Все ответы я читаю глазами. Счёт строгий: факт засчитан, только если назван и приписан человеку.

Версия 1 (без покрытия)

18 из 54

Ветку дообучил ещё раз, без покрытия

9 из 54 — само дообучение ветки портит память

Покрытие + дообучение ветки

15–17 из 54; вариант с ещё одним слоем 21 на вопросы о человеке часто начинал с «Я RUKALLAMA» (17 раз против 3)

Покрытие отдельно: ветка заморожена, учатся 8 чисел

15 из 54 — это и есть версия 2

Тут же нашлась важная вещь про сам замер. Один вариант не включил покрытие вовсе: его веса остались около нуля, то есть это почти точная копия версии 1. И он набрал 16, а не 18. Значит, у этой проверки разброс около ±2 из 54: модель та же, а от мелких численных различий беседа идёт чуть по-другому. Поэтому по памяти я пишу прямо: версия 2 от версии 1 на этой проверке не отличается. Отличается она в живом разговоре.

Без штрафа за повторный взгляд покрытие само не включается: модель предпочитает читать по-старому. С этим же столкнулись и авторы метода.

5. Живой разговор — почему именно она

28 октября, вечер

Я поднял эту модель у себя локально — со страницей, где мысль и ответ идут потоком, — и просто поговорил с ней. Попросил скрипт на питоне для запуска самодельной ракеты с контролем по датчикам, «мне к экзамену».

Код при этом выдуманный, и технику безопасности, о которой я просил, она пропустила. Но упрекать в этом модель на 853 млн параметров нельзя. Wei и соавторы в работе о цепочках рассуждений показали, что малые модели пишут гладкие, но нелогичные рассуждения, а настоящий выигрыш от рассуждений появляется у моделей около 100 млрд параметров — в сто с лишним раз крупнее. Мне важно другое: как она ведёт разговор. По манере это уровень ранних больших чат-моделей. И это KAN, обученный с нуля на одной видеокарте.

Длина ответа

У прежней версии 2 в ваших беседах с 26 октября медиана видимого ответа — 97 символов. У новой в моих проверочных беседах — 212, а в живом разговоре бывают ответы на сотни токенов. Беседы при этом разные, так что сравнение грубое. Но короче она точно не стала.

6. Из чего состоит версия 2

7. Статьи, которые пригодились

8. Что не решено и что дальше

Все цифры здесь — из моих проверок на конкретных выборках, часто маленьких. Это «на этой выборке вышло так», а не свойство модели вообще. KAN, свой токенизатор, свой гейт экспертов — это не стандартный трансформер, и шаблоны от больших моделей сюда переносятся плохо. Как делалась предыдущая версия — месяц работы до V11+ fixed.

↑ наверх ← к чату