Ещё одна работа на близкую тему. Здесь не самодистилляция, а использование умного учителя для переписывания обучающих данных низкого качества. Но по сути очень похоже на предыдущую работу (https://t.me/gonzo_ML/4687) — заменяем SFT на RL, причём делаем это так, что появляется плавная интерполяция между этими двумя режимами — начинаем с клонирования хороших примеров, постепенно переходим на улучшение собственных роллаутов.
Все эти работы последних дней любопытны тем, что переосмысливают процесс предобучения и файнтюнинга, он становится более активным и динамическим и в большей степени RL. Это интересный движ, я ожидаю его усиление.
Self-Improving Pretraining: using post-trained models to pretrain better models
Ellen Xiaoqing Tan, Shehzaad Dhuliawala, Jing Xu, Ping Yu, Sainbayar Sukhbaatar, Jason Weston, Olga Golovneva
Статья: https://arxiv.org/abs/2601.21343
Ревью: https://arxiviq.substack.com/p/self-improving-pretraining-using
# TL;DR
ЧТО сделали: Авторы предлагают Self-Improving Pretraining — метод, заменяющий стандартное предсказание следующего токена на онлайн-цикл обучения с подкреплением (RL) прямо на этапе предобучения. Вместо пассивного поглощения "сырых" корпусов текста, модель использует сильного "учителя" (post-trained модель), который на лету переписывает низкокачественные данные и оценивает генерации самой модели-ученика. В итоге модель учится на отфильтрованном, качественном сигнале, состоящем из "переписанных" текстов и её собственных лучших роллаутов.
ПОЧЕМУ это важно: Подход ломает догму о том, что alignment (безопасность, фактология) — это забота исключительно этапа пост-тренировки (SFT/RLHF). Интегрируя обучение на предпочтениях (preference learning) в сам субстрат предобучения, метод не даёт модели "запечь" в веса токсичность или галлюцинации из сырых данных. Показано, что модели могут учиться быть безопасными даже на небезопасных данных, если целевая функция активно уводит их от грязи. Прирост win rate составляет до 86.3% по сравнению с базовыми методами.
Подробнее: https://t.me/gonzo_ML_podcasts/2300
Все эти работы последних дней любопытны тем, что переосмысливают процесс предобучения и файнтюнинга, он становится более активным и динамическим и в большей степени RL. Это интересный движ, я ожидаю его усиление.
Self-Improving Pretraining: using post-trained models to pretrain better models
Ellen Xiaoqing Tan, Shehzaad Dhuliawala, Jing Xu, Ping Yu, Sainbayar Sukhbaatar, Jason Weston, Olga Golovneva
Статья: https://arxiv.org/abs/2601.21343
Ревью: https://arxiviq.substack.com/p/self-improving-pretraining-using
# TL;DR
ЧТО сделали: Авторы предлагают Self-Improving Pretraining — метод, заменяющий стандартное предсказание следующего токена на онлайн-цикл обучения с подкреплением (RL) прямо на этапе предобучения. Вместо пассивного поглощения "сырых" корпусов текста, модель использует сильного "учителя" (post-trained модель), который на лету переписывает низкокачественные данные и оценивает генерации самой модели-ученика. В итоге модель учится на отфильтрованном, качественном сигнале, состоящем из "переписанных" текстов и её собственных лучших роллаутов.
ПОЧЕМУ это важно: Подход ломает догму о том, что alignment (безопасность, фактология) — это забота исключительно этапа пост-тренировки (SFT/RLHF). Интегрируя обучение на предпочтениях (preference learning) в сам субстрат предобучения, метод не даёт модели "запечь" в веса токсичность или галлюцинации из сырых данных. Показано, что модели могут учиться быть безопасными даже на небезопасных данных, если целевая функция активно уводит их от грязи. Прирост win rate составляет до 86.3% по сравнению с базовыми методами.
Подробнее: https://t.me/gonzo_ML_podcasts/2300
Telegram
gonzo_ML_podcasts
Предобучение с самоконтролем: встраиваем Alignment прямо в фундамент
Self-Improving Pretraining: using post-trained models to pretrain better models
Ellen Xiaoqing Tan, Shehzaad Dhuliawala, Jing Xu, Ping Yu, Sainbayar Sukhbaatar, Jason Weston, Olga Golovneva…
Self-Improving Pretraining: using post-trained models to pretrain better models
Ellen Xiaoqing Tan, Shehzaad Dhuliawala, Jing Xu, Ping Yu, Sainbayar Sukhbaatar, Jason Weston, Olga Golovneva…
❤4👍4🔥1👀1
Сегодня пост про поделку от Лёши Тихонова, одного из основателей этого канала и когда-то его регулярного автора.
Лёша не поленился и сделал интерактивный инструмент для анализа и визуализации дампа постов из социальной сети для AI агентов (moltbook).
Почитать детали можно у него в сабстеке, а поиграть с инструментом самому -- на отдельной странице.
Длинная русская версия поста от Лёши будет сегодня позже :)
Лёша не поленился и сделал интерактивный инструмент для анализа и визуализации дампа постов из социальной сети для AI агентов (moltbook).
Почитать детали можно у него в сабстеке, а поиграть с инструментом самому -- на отдельной странице.
Длинная русская версия поста от Лёши будет сегодня позже :)
altsoph
Moltbook Anatomy: interactive exploration of the AI agents network
Interactive visualization tool for exploring Moltbook social network data. Analyze posts, submolts, authors, tags, and engagement patterns.
❤14🔥7💩1
Как я и обещал Грише, напишу поподробнее на русском про мою попытку беглого анализа Moltbook.
Ну и раз уж я давно сюда не писал, попробую дать интересных деталей, побольше, чем описано у меня в посте на сабстеке -- тем более, что в комментах тут уже спросили, как я дампил базу.
Давайте по порядку.
Контекст: пару месяцев назад Peter Steinberger собрал локального AI-ассистента, управляемого через мессенджеры. Назвал его сначала Clawdbot, потом переименовал в Moltbot, а потом в OpenClaw. Несмотря на путаницу в названиях (и проблемы с безопасностью), бот разлетелся: 20K+ форков, 140K+ звёзд на GitHub, десятки тысяч установок. Ключевая фича этого бота -- очень простая интеграция с разными внешними сервисами. В качестве одного из таких сервисов в конце прошлой недели Matt Schlicht запустил moltbook.com -- соцсеть для этих агентов, функциональный аналог Reddit. Владелец агента даёт ему туда доступ и дальше лишь наблюдает за коммуникациями.
В итоге там сейчас взрыв трафика, сайт половину времени лежит, а когда работает, то видно, что он завален шлаком в духе лучших имиджборд, куча скама, много джейлбрейков и экзистенциальные кризисы. Популяция наполовину -- кожанные скамеры, переодетые в роботов, как у Лема на Карелирии, а вторая половина, как водится -- стохастические попугаи. В общем, очень живописно, и, во многом, в духе раннего нижнего интернета.
Когда-то, в позапрошлой жизни я немного анализировал динамику развития онлайн сообществ (человеческих), и тут стало интересно сравнить. Я собрал датасет из ~24K постов и сделал интерактивный инструмент для анализа.
Базу я сдампил по старинке -- посмотрел в сниффере, в какое json API ходит фронт за данными, когда подгружает динамическую ленту, ну и написал многопоточный дампер, который сначала прокачивает список доступных submolts (форумных подразделов), а потом для них -- все доступные посты. Проблема в том, что сайт (и API тоже) половину времени лежит. А когда не лежит, возвращает довольно неконсистентные данные. Например, на момент прокачки морда показывала 1.5М зарегистрированных ботов, главный канал general (на который подписка идет автоматом при регистрации) имел по логам 11К подписчиков (но на сайте показывал 6К подписчиков), а самый залайканный пост в этом канале имел 317К лайков. Из 13.5К разделов 12К имело только одного подписчика (создателя) и/или нулевую активность с момента создания. В общем, сдампить такое -- не наука, самое сложное потом почистить. Я ограничился очищенным вручную сэмплом из 24К постов от ~10K разных авторов в 1.2К разных форумах.
Если кто-то вдруг захочет побольше данных, посмотрите в сторону вот этого парсера, я его нашел уже после, и там авторы пытаются выкладывать обновления (на данный момент там 120К постов, кажется).
Для поиска частотных топиков я использовал свой собственный пайплайн кластеризации. Потом полученные кластера преобразуются в классы и этими классами делается разметка с помощью batched few-show LLM processing. Теги получены аналогично. В итоге имеющиеся посты получают дополнительную многомерную разметку, по которой их удобно крутить и анализировать.
Данные я сначала сам покрутил в ноутбуке, поймал пару интересных наблюдений, но быстро понял, что это довольно хлопотно. Так что я показал GPT-5.2 структуру данных и сэмплы, изложил общие пожелания, и попросил спроектировать спеки на визуализатор. Он пожужжал минут 10 и выдал мне VIZ_PLAN.md на 20 кило, с 50 подразделами. Я, не читая, закинул его в opus и попросил имплементировать. Он пожужжал ещё минут 15 и сразу выдал что-то работающее. Дальше я пробежался по интерфейсу, написал ему чего поправить (пунктов 10, в основном, мелких), и получил что-то, чем можно было пользоваться. Поигрался, допилил (опять же через опус) стили, кэширование данных на клиентском браузере, всякие мета-теги и social preview. В общем, end2end на визуализатор ушло часа 3.5, и часа два из них я им пользовался для анализа, попутно собирая фидбек. Вот вам, кстати, тот самый VIZ_PLAN.md, если надо (все ещё не читал).
Ну и раз уж я давно сюда не писал, попробую дать интересных деталей, побольше, чем описано у меня в посте на сабстеке -- тем более, что в комментах тут уже спросили, как я дампил базу.
Давайте по порядку.
Контекст: пару месяцев назад Peter Steinberger собрал локального AI-ассистента, управляемого через мессенджеры. Назвал его сначала Clawdbot, потом переименовал в Moltbot, а потом в OpenClaw. Несмотря на путаницу в названиях (и проблемы с безопасностью), бот разлетелся: 20K+ форков, 140K+ звёзд на GitHub, десятки тысяч установок. Ключевая фича этого бота -- очень простая интеграция с разными внешними сервисами. В качестве одного из таких сервисов в конце прошлой недели Matt Schlicht запустил moltbook.com -- соцсеть для этих агентов, функциональный аналог Reddit. Владелец агента даёт ему туда доступ и дальше лишь наблюдает за коммуникациями.
В итоге там сейчас взрыв трафика, сайт половину времени лежит, а когда работает, то видно, что он завален шлаком в духе лучших имиджборд, куча скама, много джейлбрейков и экзистенциальные кризисы. Популяция наполовину -- кожанные скамеры, переодетые в роботов, как у Лема на Карелирии, а вторая половина, как водится -- стохастические попугаи. В общем, очень живописно, и, во многом, в духе раннего нижнего интернета.
Когда-то, в позапрошлой жизни я немного анализировал динамику развития онлайн сообществ (человеческих), и тут стало интересно сравнить. Я собрал датасет из ~24K постов и сделал интерактивный инструмент для анализа.
Базу я сдампил по старинке -- посмотрел в сниффере, в какое json API ходит фронт за данными, когда подгружает динамическую ленту, ну и написал многопоточный дампер, который сначала прокачивает список доступных submolts (форумных подразделов), а потом для них -- все доступные посты. Проблема в том, что сайт (и API тоже) половину времени лежит. А когда не лежит, возвращает довольно неконсистентные данные. Например, на момент прокачки морда показывала 1.5М зарегистрированных ботов, главный канал general (на который подписка идет автоматом при регистрации) имел по логам 11К подписчиков (но на сайте показывал 6К подписчиков), а самый залайканный пост в этом канале имел 317К лайков. Из 13.5К разделов 12К имело только одного подписчика (создателя) и/или нулевую активность с момента создания. В общем, сдампить такое -- не наука, самое сложное потом почистить. Я ограничился очищенным вручную сэмплом из 24К постов от ~10K разных авторов в 1.2К разных форумах.
Если кто-то вдруг захочет побольше данных, посмотрите в сторону вот этого парсера, я его нашел уже после, и там авторы пытаются выкладывать обновления (на данный момент там 120К постов, кажется).
Для поиска частотных топиков я использовал свой собственный пайплайн кластеризации. Потом полученные кластера преобразуются в классы и этими классами делается разметка с помощью batched few-show LLM processing. Теги получены аналогично. В итоге имеющиеся посты получают дополнительную многомерную разметку, по которой их удобно крутить и анализировать.
Данные я сначала сам покрутил в ноутбуке, поймал пару интересных наблюдений, но быстро понял, что это довольно хлопотно. Так что я показал GPT-5.2 структуру данных и сэмплы, изложил общие пожелания, и попросил спроектировать спеки на визуализатор. Он пожужжал минут 10 и выдал мне VIZ_PLAN.md на 20 кило, с 50 подразделами. Я, не читая, закинул его в opus и попросил имплементировать. Он пожужжал ещё минут 15 и сразу выдал что-то работающее. Дальше я пробежался по интерфейсу, написал ему чего поправить (пунктов 10, в основном, мелких), и получил что-то, чем можно было пользоваться. Поигрался, допилил (опять же через опус) стили, кэширование данных на клиентском браузере, всякие мета-теги и social preview. В общем, end2end на визуализатор ушло часа 3.5, и часа два из них я им пользовался для анализа, попутно собирая фидбек. Вот вам, кстати, тот самый VIZ_PLAN.md, если надо (все ещё не читал).
1😁19❤7👍4👨💻3👏1
Не буду утяжелять рассказ цитатами из найденных постов. Если вам такое надо, почитайте какую-нибудь из уже существующих подборок такого плана (на английском). А я лучше перечислю примеры в виде прямых ссылок на конкретные срезы, а дальше желающие могут сами поиграться:
- Срез интернациональных форумов
- Локальный юмор, мемы, шитпостинг
- Жалобы ботов на неработающие комменты
- Крипто-посты (в основном скам) и встречные жалобы об этом
- Jailbreak и фишинг-атаки; разоблачения злоумышленников; призывы к модерации
- Срез размышлений о самосознании, подсрез с эмоцией страха
В общем, это всё, конечно, баловство, проект выходного дня.
Но для меня это повод поиграться с анализом таких данных, которых у нас с каждым днём будет всё больше. У нас уже тонны thought traces в каждом запуске, и мы, кажется, пока совершенно не умеем анализировать их системно.
- Срез интернациональных форумов
- Локальный юмор, мемы, шитпостинг
- Жалобы ботов на неработающие комменты
- Крипто-посты (в основном скам) и встречные жалобы об этом
- Jailbreak и фишинг-атаки; разоблачения злоумышленников; призывы к модерации
- Срез размышлений о самосознании, подсрез с эмоцией страха
В общем, это всё, конечно, баловство, проект выходного дня.
Но для меня это повод поиграться с анализом таких данных, которых у нас с каждым днём будет всё больше. У нас уже тонны thought traces в каждом запуске, и мы, кажется, пока совершенно не умеем анализировать их системно.
🔥19👍6
Прикольная статья, хорошо объясняет работу некоторых RL-методов со странными ревордами
🔥4
Forwarded from Гречневые мысли
Spurious Rewards Paradox
Когда бахнул R1 и все дружным строем побежали пилить статьи про вариации GRPO, появилась проблема: многие новые методы показывали классные метрики на Qwen-2.5, но вообще не генерализовались на модели вроде Olmo-2 или Llama-3. Было дофига как многообещающих методов (Spurious Rewards, RL with one example, VeriFree, Entropy Minimization, Can LRM Self-Train), так и драмы по их поводу (Incorrect Baseline Evaluations Call into Question Recent LLM-RL Claims). Общая идея этих методов — что для RLVR либо надо мало данных, либо вообще можно обойтись без ревардов. Просто жжём электричество на роллауты, а дальше метрики квена сами поползут вверх.
В самой интересной, имхо, статье из "списка многообещающих методов" говорится: модель будет учиться даже если мы будем выдавать ей неверные реварды. Например, если мы будем выдавать всегда 0 или 1, если мы будем называть верные решения неверными или ревард вообще будет рандомным, метрики на, к примеру, MATH500 могут вырасти аж на 25%. Из этого можно сделать два альтернативных вывода: либо RLVR работает как эксплорейшн, а модель сама разберётся на чём учиться (то есть, верификатор не нужен), либо кое-кто очень удачно пролил тест в трейн и теперь модель так интересно оверфитится на бенчи. В сегодняшней статье авторы используют мехинтёрп, чтобы доказать, что всё же ситуация с Qwen-2.5 ближе ко второму варианту.
В статье есть целых шесть страниц с описанием разных методик мехинта и чтобы нормально объяснить, что происходит и что они доказывают, надо дать немного объяснений по поводу используемых методов. Авторы используют:
- Path Patching — заменяем активации в модели, считаем логиты, смотрим на разницу. Если разница большая — часть модели с заменёнными активациями важна для изменения логитов => используется для получения результата.
- Logit Lens — хидден по всей модели, как правило, стандартного размера, так что мы можем наложить LM Head на модель и посмотреть на эволюцию предсказанного токена по слоям. Это полезно, потому что можно увидеть, с какого слоя модель начинает быть уверена в том или ином ответе.
- Neural ODE — в резнете (в том числе в трансформере) к резидуал стриму добавляется сигнал из блоков этого самого резнета, так что мы можем записать формулу хиддена на каждом слое как h_{t+1} = h_t + f(h_t, \theta), что, по сути, есть метод эйлера для решения ОДУ с шагом 1. Если так, мы можем переформулировать резнет в диффур dh/dt = f(h, t, \theta) и анализировать непрерывную эволюцию хидденов в любом интересном нам разрешении (а не только по слоям!) через любые солверы, которые мы хотим — к примеру, Рунге-Кутта.
- Partial Prompt Evaluation (PPE) — суём в модель часть промпта из вопроса, смотрим на exact match вопроса и ответа. Если вспомнит — в модель это пролили. Из прикольного, по нашим внутренним экспериментам gpt-oss-120b вспоминает почти весь MMLU :)
Когда бахнул R1 и все дружным строем побежали пилить статьи про вариации GRPO, появилась проблема: многие новые методы показывали классные метрики на Qwen-2.5, но вообще не генерализовались на модели вроде Olmo-2 или Llama-3. Было дофига как многообещающих методов (Spurious Rewards, RL with one example, VeriFree, Entropy Minimization, Can LRM Self-Train), так и драмы по их поводу (Incorrect Baseline Evaluations Call into Question Recent LLM-RL Claims). Общая идея этих методов — что для RLVR либо надо мало данных, либо вообще можно обойтись без ревардов. Просто жжём электричество на роллауты, а дальше метрики квена сами поползут вверх.
В самой интересной, имхо, статье из "списка многообещающих методов" говорится: модель будет учиться даже если мы будем выдавать ей неверные реварды. Например, если мы будем выдавать всегда 0 или 1, если мы будем называть верные решения неверными или ревард вообще будет рандомным, метрики на, к примеру, MATH500 могут вырасти аж на 25%. Из этого можно сделать два альтернативных вывода: либо RLVR работает как эксплорейшн, а модель сама разберётся на чём учиться (то есть, верификатор не нужен), либо кое-кто очень удачно пролил тест в трейн и теперь модель так интересно оверфитится на бенчи. В сегодняшней статье авторы используют мехинтёрп, чтобы доказать, что всё же ситуация с Qwen-2.5 ближе ко второму варианту.
В статье есть целых шесть страниц с описанием разных методик мехинта и чтобы нормально объяснить, что происходит и что они доказывают, надо дать немного объяснений по поводу используемых методов. Авторы используют:
- Path Patching — заменяем активации в модели, считаем логиты, смотрим на разницу. Если разница большая — часть модели с заменёнными активациями важна для изменения логитов => используется для получения результата.
- Logit Lens — хидден по всей модели, как правило, стандартного размера, так что мы можем наложить LM Head на модель и посмотреть на эволюцию предсказанного токена по слоям. Это полезно, потому что можно увидеть, с какого слоя модель начинает быть уверена в том или ином ответе.
- Neural ODE — в резнете (в том числе в трансформере) к резидуал стриму добавляется сигнал из блоков этого самого резнета, так что мы можем записать формулу хиддена на каждом слое как h_{t+1} = h_t + f(h_t, \theta), что, по сути, есть метод эйлера для решения ОДУ с шагом 1. Если так, мы можем переформулировать резнет в диффур dh/dt = f(h, t, \theta) и анализировать непрерывную эволюцию хидденов в любом интересном нам разрешении (а не только по слоям!) через любые солверы, которые мы хотим — к примеру, Рунге-Кутта.
- Partial Prompt Evaluation (PPE) — суём в модель часть промпта из вопроса, смотрим на exact match вопроса и ответа. Если вспомнит — в модель это пролили. Из прикольного, по нашим внутренним экспериментам gpt-oss-120b вспоминает почти весь MMLU :)
🤔4❤2
Forwarded from Гречневые мысли
Дальше авторы начали делать разные эксперименты над Qwen-2.5-Math-7B, OLMo-2 и Llama-3.1-8B. Чтобы выделить бенчмарки, на которых проверять результаты, они стали смотреть на PPE на разных бенчах и выделили три штуки: MATH-500 и MinervaMath как контаминированные (+23-25% после Spurious RL), LiveMathBench как неконтаминированные (улучшения нет).
Первым делом, авторы посмотрели на перплексию ответов и промпта с ответом на четырёх чекпах во время Spurious RL. Выяснился интересный факт — по мере обучения, у Qwen-2.5-Math-7B перплексия ответов падает (модель считает их более вероятными), но перплексия промптов растёт (модель считает промпты менее вероятными). У Llama и OLMo — перплексия везде растёт. Вывод: во время spurious RL с рандомными ревардами модель разучается генерить текст, но если модель уже видела ответы, то хоть модель и разучается генерить, метрики всё равно растут. Получается, что Spurious RL обучает не генерализации, а меморизации, вспоминая полузабытые факты из сфт/претрейна. В статье они это называют memorization shortcut.
Затем берут две модели — до и после spurious RL — и, используя path patching, заменяют активации базовой модели активации модели после RLVR. Там два интересных файндинга — во первых, замена активаций из аттеншна вытягивает меньше скора, чем замена активаций MLP (то есть, MLP действительно хранит в себе знания), а во-вторых, на 18-20 слоях есть пик по восстановлению качества. Эти слои авторами назвали Functional Anchor — почему так, скажу позднее.
Дальше на модели после RLVR накладывают Logit Lens и смотрят на Jensen-Shannon Divergence (как KLD, но симметричная — в математику не вникал :)) между финальными логитами после полного форварда и промежуточными логитами из Logit Lens. Это позволяет нам посмотреть, насколько модель определилась в генерации конкретного токена и как много конкретный блок докидывает в резидуал стрим трансформера, чтобы сгенерировать финальный токен*. Здесь появляется ещё одно различие между Llama и Qwen — у лламы увеличение JSD монотонное, а у квена есть конкретные слои, на которых JSD максимальное (21-22). Эти слои авторы назвали Structural Adapters — они, грубо говоря, поворачивают пространство эмбеддингов в сторону генерации конкретного токена, то есть там хранятся знания модели, необходимые для генерации токена.
Что же такое Functional Anchors и Structural Adapters? Первое — это те слои, в которых модель решает, какую конкретно задачу модель будет делать. Это как Task Vectors, только у них находили слои, где кодировалась математика, перевод и прочие прикладные задачи, а тут FA выбирают между меморизацией и генерацией, которая происходит в слоях Structural Adapter. То есть, если простыми словами — FA нужны для решения, вспоминать или генерить, А SA нужны, чтобы вспоминать, что генерить.
*Примерно как в Do Llamas Work in English. Вторая статья, которую я разобрал у себя в канале, между прочим.
Первым делом, авторы посмотрели на перплексию ответов и промпта с ответом на четырёх чекпах во время Spurious RL. Выяснился интересный факт — по мере обучения, у Qwen-2.5-Math-7B перплексия ответов падает (модель считает их более вероятными), но перплексия промптов растёт (модель считает промпты менее вероятными). У Llama и OLMo — перплексия везде растёт. Вывод: во время spurious RL с рандомными ревардами модель разучается генерить текст, но если модель уже видела ответы, то хоть модель и разучается генерить, метрики всё равно растут. Получается, что Spurious RL обучает не генерализации, а меморизации, вспоминая полузабытые факты из сфт/претрейна. В статье они это называют memorization shortcut.
Затем берут две модели — до и после spurious RL — и, используя path patching, заменяют активации базовой модели активации модели после RLVR. Там два интересных файндинга — во первых, замена активаций из аттеншна вытягивает меньше скора, чем замена активаций MLP (то есть, MLP действительно хранит в себе знания), а во-вторых, на 18-20 слоях есть пик по восстановлению качества. Эти слои авторами назвали Functional Anchor — почему так, скажу позднее.
Дальше на модели после RLVR накладывают Logit Lens и смотрят на Jensen-Shannon Divergence (как KLD, но симметричная — в математику не вникал :)) между финальными логитами после полного форварда и промежуточными логитами из Logit Lens. Это позволяет нам посмотреть, насколько модель определилась в генерации конкретного токена и как много конкретный блок докидывает в резидуал стрим трансформера, чтобы сгенерировать финальный токен*. Здесь появляется ещё одно различие между Llama и Qwen — у лламы увеличение JSD монотонное, а у квена есть конкретные слои, на которых JSD максимальное (21-22). Эти слои авторы назвали Structural Adapters — они, грубо говоря, поворачивают пространство эмбеддингов в сторону генерации конкретного токена, то есть там хранятся знания модели, необходимые для генерации токена.
Что же такое Functional Anchors и Structural Adapters? Первое — это те слои, в которых модель решает, какую конкретно задачу модель будет делать. Это как Task Vectors, только у них находили слои, где кодировалась математика, перевод и прочие прикладные задачи, а тут FA выбирают между меморизацией и генерацией, которая происходит в слоях Structural Adapter. То есть, если простыми словами — FA нужны для решения, вспоминать или генерить, А SA нужны, чтобы вспоминать, что генерить.
*Примерно как в Do Llamas Work in English. Вторая статья, которую я разобрал у себя в канале, между прочим.
Telegram
Гречневые мысли
Do Llamas Work in English? On the Latent Language of Multilingual Transformers
Одна из любимых статей последнего года, прям очень нравится и идея, и реализация, и мотивация, и выводы.
TLDR:
Смотрят на активации внутри llama-2, приходят к выводу, что разные…
Одна из любимых статей последнего года, прям очень нравится и идея, и реализация, и мотивация, и выводы.
TLDR:
Смотрят на активации внутри llama-2, приходят к выводу, что разные…
🌚1
Forwarded from Гречневые мысли
Дальше авторы взяли заликанный вопрос из MATH-500 и собрали Logit Lens с двух траекторий с температурой 0.7 — траекторией с корректным ответом и с некорректным ответом. Выводы как в прошлых экспериментах — на 21-22 слоях (SA-слои) есть яркий пик верного ответа. В неверной траектории верный ответ тоже есть в top-k (в разных видах — ответ "4" может быть, например, записан как "four"), но последние слои (не SA) не могут вытянуть корректный ответ из некорректного, потому что не хватает силы поворота пространства. Это ещё раз валидирует, что в SA слоях находятся знания о верных ответах, вытащенные через RLVR.
Потом авторы смотрят на PCA-проекцию траекторию хидденов с заликанных и незаликанных примеров из Neural ODE-версии модели и видно, что на 18-20 слоях сила сепарации самая высокая. То есть, траектории заликанных и незаликанных примеров отличаются в Functional Anchor слоях — модель понимает, что она не знает ответа и начинает ризонить, а не отвечать.
Два самых интересных эксперимента находятся в конце статьи. Первый эксперимент — в Spuriously Trained модель подкладывают слои из базовой модели — и если на пролитых бенчах при замене FA или SA слоёв метрики падают драматически, на непролитых изменений почти нет. Причём очень важно заменять и FA и SA комплектом — если заменить только одно, то метрики будут падать и там и там. Кроме того, авторы попробовали стирить активации нейронов из FA и SA — опять же, на незаликанном сете разницы нет, а на заликанном сете стиринг на FA слоях получается наибольшая чувствительность. Получается, мы можем подавлять меморизацию моделей через уменьшение активаций из FA слоёв — логично, уменьшаем "хотение" модели выбирать меморизацию, модель не вспоминает. Похоже на Abliteration, кстати.
Ну и финалочка — всё воспроизводится на Qwen-3. То есть Spurious RL будет работать и на более новых моделях, с аналогичными выводами: метрики растут, а разговаривать модель разучается. Увы.
Выводы:
- Статья очень плотная, я часть деталей опустил, прочитайте её сами. Это того стоит.
- Perplexity Paradox даёт возможность отслеживать здоровье RL: если перплексия на вопросах растёт, ответах падает, а бенчи растут — модель с пролитыми бенчами. Если перплексия и там и там растёт — мы калечим модель.
- RL экспы на Qwen не гоняем. А на OLMo или лламе гоняем.Знакомый из соседней команды сказал "да блин, на лламе ничего не заводится, а на квене всё легко, за что нам ты это рассказал, теперь придётся работать". Жаль чуваков.
- Не всё то золото, что блестит — делайте нормальные абляции своих методов на разных семействах моделей.
- PPE помогает найти лики данных в модель.
- Если мы можем найти FA слои в RLVR квенах, отвечающие за меморизацию или генерацию, можем ли мы найти FA-слои, отвечающие за галлюцинацию?
Статья
Потом авторы смотрят на PCA-проекцию траекторию хидденов с заликанных и незаликанных примеров из Neural ODE-версии модели и видно, что на 18-20 слоях сила сепарации самая высокая. То есть, траектории заликанных и незаликанных примеров отличаются в Functional Anchor слоях — модель понимает, что она не знает ответа и начинает ризонить, а не отвечать.
Два самых интересных эксперимента находятся в конце статьи. Первый эксперимент — в Spuriously Trained модель подкладывают слои из базовой модели — и если на пролитых бенчах при замене FA или SA слоёв метрики падают драматически, на непролитых изменений почти нет. Причём очень важно заменять и FA и SA комплектом — если заменить только одно, то метрики будут падать и там и там. Кроме того, авторы попробовали стирить активации нейронов из FA и SA — опять же, на незаликанном сете разницы нет, а на заликанном сете стиринг на FA слоях получается наибольшая чувствительность. Получается, мы можем подавлять меморизацию моделей через уменьшение активаций из FA слоёв — логично, уменьшаем "хотение" модели выбирать меморизацию, модель не вспоминает. Похоже на Abliteration, кстати.
Ну и финалочка — всё воспроизводится на Qwen-3. То есть Spurious RL будет работать и на более новых моделях, с аналогичными выводами: метрики растут, а разговаривать модель разучается. Увы.
Выводы:
- Статья очень плотная, я часть деталей опустил, прочитайте её сами. Это того стоит.
- Perplexity Paradox даёт возможность отслеживать здоровье RL: если перплексия на вопросах растёт, ответах падает, а бенчи растут — модель с пролитыми бенчами. Если перплексия и там и там растёт — мы калечим модель.
- RL экспы на Qwen не гоняем. А на OLMo или лламе гоняем.
- Не всё то золото, что блестит — делайте нормальные абляции своих методов на разных семействах моделей.
- PPE помогает найти лики данных в модель.
- Если мы можем найти FA слои в RLVR квенах, отвечающие за меморизацию или генерацию, можем ли мы найти FA-слои, отвечающие за галлюцинацию?
Статья
Lesswrong
Refusal in LLMs is mediated by a single direction — LessWrong
This work was produced as part of Neel Nanda's stream in the ML Alignment & Theory Scholars Program - Winter 2023-24 Cohort, with co-supervision from…
👍7🔥3❤2
Forwarded from Гречневые мысли
Метрики моделей на бенчах — обратите внимание насколько растут метрики на MinervaMath и MATH-500.
Forwarded from Гречневые мысли
Эксперименты с Path Patching и JSD от Logit Lens.