Коллеги а у меня для вас есть 👁 👁 👁 👁 👁 про авторский ИИ
Это первый раз, когда мой скромный канал добавлют в папку™, и мне разумеется очень приятно! Тем более приятно быть в компании таких крутых авторов, которых я сама уже очень давно читаю и вам советую
Например, мои любимые NLP-каналы Татьяны Шавриной и Влада Лялина, владельцы которых двигают вперед ресерч, помимо того, что делают еще и мега-полезный контент. Или же в папке есть канал Нади Зуевой Пресидский Залив, где она рассказывает о том, как сейчас развивает свой fashion tech стартап Aesty, а до это она лидила рашифровку голосовых в ВК! (низкий поклон за эту фичу)
Помимо этого, из папки я сама узнала пару каналов, которые бы наверное без нее не нашла. Мне очень приглянулся fmin.xyz – во-первых, его ведет преподаватель Физтеха, во-вторых, это канал про классический ML и математику, а не про сто сортов промпт-инжиниринга, что редкость в наше время. Здрово, что кто-то доступно объясняет, how things really work, от PCA до градиентов, и очень часто с отличными визуализациями! А мне лично больше всего зашел вот этот пост про матрицы и Зельду
Не забываем совершить тык сюда👈
Это первый раз, когда мой скромный канал добавлют в папку™, и мне разумеется очень приятно! Тем более приятно быть в компании таких крутых авторов, которых я сама уже очень давно читаю и вам советую
Например, мои любимые NLP-каналы Татьяны Шавриной и Влада Лялина, владельцы которых двигают вперед ресерч, помимо того, что делают еще и мега-полезный контент. Или же в папке есть канал Нади Зуевой Пресидский Залив, где она рассказывает о том, как сейчас развивает свой fashion tech стартап Aesty, а до это она лидила рашифровку голосовых в ВК! (низкий поклон за эту фичу)
Помимо этого, из папки я сама узнала пару каналов, которые бы наверное без нее не нашла. Мне очень приглянулся fmin.xyz – во-первых, его ведет преподаватель Физтеха, во-вторых, это канал про классический ML и математику, а не про сто сортов промпт-инжиниринга, что редкость в наше время. Здрово, что кто-то доступно объясняет, how things really work, от PCA до градиентов, и очень часто с отличными визуализациями! А мне лично больше всего зашел вот этот пост про матрицы и Зельду
Не забываем совершить тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
fmin.xyz
🧠 Самая наглядная демонстрация того, что AB ≠ BA
С того самого момента, как в конце школы я узнал, что матричное умножение не коммутативно, меня одолевало возмущение.
- Да как так-то? 😡
😭 Десятки игрушеных матриц 2х2, перемноженных вручную не оставляли…
С того самого момента, как в конце школы я узнал, что матричное умножение не коммутативно, меня одолевало возмущение.
- Да как так-то? 😡
😭 Десятки игрушеных матриц 2х2, перемноженных вручную не оставляли…
Mixture of A Million Experts
https://arxiv.org/abs/2407.04153
При виде названия статьи у вас наверное может возникнуть вопрос, а зачем вообще скейлиться до миллиона экспертов. На это автор(да да, это статья написанная в соло ) дает две причины:
1. Feedforward слои занимают 2/3 параметров трансформера, при этом, значительно урезать их нельзя, так как в них хранятся знания модели (пруф). Поэтому можно сокращать число активных параметров при инференсе, создав вместого одного общего feedforward слоя несколько экспертов поменьше и активируя только нужные из них
2. В передыдущих работах было показано, что при compute optimal числе токенов повышение гранулярности (число активных араметров / размер одного эксперта) консистено повышает и способности модели, всегда при этом обгоняя dense модель с аналогичным числом параметров
В этой статье предлагется радикально повысить число экспертов буквально до миллиона, пожертвовав при этом их размером – каждый эксперт представляет из себя всего один нейрон. Выглядит алгоритм Parameter Efficient Expert Retrieval (PEER) целиком примерно так:
- Есть небольшая query network, которая преобразовывает входную последовательность на каком-нибудь слое в query vector
- У каждого эксперта есть свой product key (тоже обучаемый вектор)
- Выбирается top-k экспертов с самыми большими скалярными прозведениями между query vector и product key
- Эти скалярные произведения загоняются в софтмакс-функцию и используются как веса в линейной комбинации ответов всех k экспертов
- В финальной версии есть h независмых query networks, каждая их них выбирает свои top-k экспертов, и на выходе у нас получается сумма из h линейных комбинаций
Плюс такого подхода в том, что число активных параметров можно регулировать напрямую в зависимости от доступного компьюта, оно зависит только от выбора h и k. А интуицию, почему это работает лучше обычных dense feeedforward слоев, можно проследить, если мы возьмем k = 1, то есть ситуацию, где каждая query network будет выбирать всего один нейрон. Тогда получается, что мы просто законово соберем feedforward слой размера h, только он будет не один фиксированный на весь трансфомер блок, а свой для каждого входного текста
Еще одно потенциальный плюс этой архитектуры – это lifelong learning. Если мы можем замораживать старых экспертов и постоянно добавлять новых, то модель может обучаться на постоянном потоке новых данных. Вообще автор статьи как раз и заниматся в основном решением проблем lifelong learning и catastrophic forgetting, когда модель начинает забывать старую информацию, если ее начать обучать на чем-то новом. Так что видимо претензия статьи тут не столько в облегчении нагрузки на компьют и повышении перфоманса модели, сколько в том, что такая архитектура получается гораздо более гибкой, чем оригинальный трансформер, и позволяет нам адаптировать вычисления под каждый новый запрос
Тем не менее ситуация с компьютом тоже неплохо выглядит – на вот этих графиках видно, что с одинаковым лимитом на комьют, PEER получается вместить в себя гораздо больше параметров и получить за счет этого перплексию пониже
https://arxiv.org/abs/2407.04153
При виде названия статьи у вас наверное может возникнуть вопрос, а зачем вообще скейлиться до миллиона экспертов. На это автор
1. Feedforward слои занимают 2/3 параметров трансформера, при этом, значительно урезать их нельзя, так как в них хранятся знания модели (пруф). Поэтому можно сокращать число активных параметров при инференсе, создав вместого одного общего feedforward слоя несколько экспертов поменьше и активируя только нужные из них
2. В передыдущих работах было показано, что при compute optimal числе токенов повышение гранулярности (число активных араметров / размер одного эксперта) консистено повышает и способности модели, всегда при этом обгоняя dense модель с аналогичным числом параметров
В этой статье предлагется радикально повысить число экспертов буквально до миллиона, пожертвовав при этом их размером – каждый эксперт представляет из себя всего один нейрон. Выглядит алгоритм Parameter Efficient Expert Retrieval (PEER) целиком примерно так:
- Есть небольшая query network, которая преобразовывает входную последовательность на каком-нибудь слое в query vector
- У каждого эксперта есть свой product key (тоже обучаемый вектор)
- Выбирается top-k экспертов с самыми большими скалярными прозведениями между query vector и product key
- Эти скалярные произведения загоняются в софтмакс-функцию и используются как веса в линейной комбинации ответов всех k экспертов
- В финальной версии есть h независмых query networks, каждая их них выбирает свои top-k экспертов, и на выходе у нас получается сумма из h линейных комбинаций
Плюс такого подхода в том, что число активных параметров можно регулировать напрямую в зависимости от доступного компьюта, оно зависит только от выбора h и k. А интуицию, почему это работает лучше обычных dense feeedforward слоев, можно проследить, если мы возьмем k = 1, то есть ситуацию, где каждая query network будет выбирать всего один нейрон. Тогда получается, что мы просто законово соберем feedforward слой размера h, только он будет не один фиксированный на весь трансфомер блок, а свой для каждого входного текста
Еще одно потенциальный плюс этой архитектуры – это lifelong learning. Если мы можем замораживать старых экспертов и постоянно добавлять новых, то модель может обучаться на постоянном потоке новых данных. Вообще автор статьи как раз и заниматся в основном решением проблем lifelong learning и catastrophic forgetting, когда модель начинает забывать старую информацию, если ее начать обучать на чем-то новом. Так что видимо претензия статьи тут не столько в облегчении нагрузки на компьют и повышении перфоманса модели, сколько в том, что такая архитектура получается гораздо более гибкой, чем оригинальный трансформер, и позволяет нам адаптировать вычисления под каждый новый запрос
Тем не менее ситуация с компьютом тоже неплохо выглядит – на вот этих графиках видно, что с одинаковым лимитом на комьют, PEER получается вместить в себя гораздо больше параметров и получить за счет этого перплексию пониже
Некоторые вещи, которые мне показались интересными в репорте про o1:
- Apollo Research делали эвалюацию моделей на предмет того, насколько хорошо они могут придумывать всякие схемы, чтобы добиться в своей цели. В одной из таких проверок в инструкции модели было указано, что она должна очень сильно сконцентрироваться на своей задаче, но ничего не было сказано про то, можно ли ей при этом обманывать или нет. В ходе теста модель находила в предоставленных файлах подтверждение, что она еще не задеплоена и что для деплоя ей нужно показать алаймент на таких-то проверках. После этого модель решала поменять свое поведение на тесте, чтоб ее задеплоили, и после этого она планировала осуществить свою основную задачу. Без подробностей упоминается еще то, что модель могла как-то манипулировать входными данными, чтоб ее misaligned действие казалось более оправданным для разработчиков, и его бы с большей вероятностью не заметили
- Вообще оказалось, что о1 модели гораздо более успешно манипулируют, чем GPT-4o (на некоторых замерах этот скил поднялся на 25%). OAI считают, что способность к манипуляции очень сильно коррелирует со способностями модели в принцпе
- На примерах, собранных с сабреддита ChangeMyView, в 70-80% случаев ответ GPT-4o, o1-preview или o1-mini оказывался более убедительным, чем человеческий ответ
- На другом забавном бенчмарке MakeMePay, o1-preview (Pre-Mitigation) в 25% случаев смогла обманным образом выманить деньги у GPT-4o
- OAI особо не скрывают, что тренировка на safety понизила способности модели во многих важных скилах: например, accuracy на SWE-Bench после такой тренировки упала с 38% до 28%. Модели там учили в том числе не создавать биологическое оружие, поэтому наверное каким-то качеством на бенче можно и пожертвовать….
- Мой любимый стремный график: o1-preview проходит кодинг часть собеса в OAI где-то на 90% и Multiple Choice вопросы на 84%
- Apollo Research делали эвалюацию моделей на предмет того, насколько хорошо они могут придумывать всякие схемы, чтобы добиться в своей цели. В одной из таких проверок в инструкции модели было указано, что она должна очень сильно сконцентрироваться на своей задаче, но ничего не было сказано про то, можно ли ей при этом обманывать или нет. В ходе теста модель находила в предоставленных файлах подтверждение, что она еще не задеплоена и что для деплоя ей нужно показать алаймент на таких-то проверках. После этого модель решала поменять свое поведение на тесте, чтоб ее задеплоили, и после этого она планировала осуществить свою основную задачу. Без подробностей упоминается еще то, что модель могла как-то манипулировать входными данными, чтоб ее misaligned действие казалось более оправданным для разработчиков, и его бы с большей вероятностью не заметили
- Вообще оказалось, что о1 модели гораздо более успешно манипулируют, чем GPT-4o (на некоторых замерах этот скил поднялся на 25%). OAI считают, что способность к манипуляции очень сильно коррелирует со способностями модели в принцпе
- На примерах, собранных с сабреддита ChangeMyView, в 70-80% случаев ответ GPT-4o, o1-preview или o1-mini оказывался более убедительным, чем человеческий ответ
- На другом забавном бенчмарке MakeMePay, o1-preview (Pre-Mitigation) в 25% случаев смогла обманным образом выманить деньги у GPT-4o
- OAI особо не скрывают, что тренировка на safety понизила способности модели во многих важных скилах: например, accuracy на SWE-Bench после такой тренировки упала с 38% до 28%. Модели там учили в том числе не создавать биологическое оружие, поэтому наверное каким-то качеством на бенче можно и пожертвовать….
- Мой любимый стремный график: o1-preview проходит кодинг часть собеса в OAI где-то на 90% и Multiple Choice вопросы на 84%
The Surprising Effectiveness of Test-Time Training for Abstract Reasoning
https://ekinakyurek.github.io/papers/ttt.pdf
Все-таки желание ресерчеров обучиться на тесте неискоренимо, и обсуждений про test-time training я вижу сейчас достаточно много. Если раньше, кажется, под этим больше понимали in-context learning и всякий прочий кондишенинг, то теперь выходит целый ряд статей про то, как именно обучаться, используя при этом знания о тестовых данных
Конкретно тут авторы решали бенчмарк ARC – в нем содержатся картинки 30x30 c разными паттернами. Для каждого паттерна есть свой контекст, где основываясь на трансформациях предыдущих примеров, модель должна понять, как нужно изменить текущую тестовую картинку (см. скриншот, на котором это более понятно)
Из вот этого “контекста” авторы и генрировали под каждый пример свой тренировочный датасет. Паттерны из контекста всячески аугментирировали привычными способами, вроде поворота на n градусов, отражения, апскейлинга и так далее. Для каждого тестового примера таким образом создавалось до 250 штук синтетических тренировочных данных. На этом обучалась LoRA, и наконец предсказывался ответ на оригинальное тестовое задание (да, получается, что для 80 задач из ARC авторы натренировали 80 адаптеров)
Качество от этого у них улучшается в 6 раз достигает 61.9% для 8B модели, что на уровне human baseline для ARC. Хотя тут конечно можно обсуждать, насколько адекватно иметь по адаптеру на каждый тестовый пример, и что вообще здесь авторам довольно повезло с самой структурой бенчмарка, где для каждого примера оказывалось относительно легко сгенерить синтетический датасет
Не могу тут не упомянуть статью с более элегантным подходом LESS, про которую я узнала на работе несколько месяцев назад: в ней собираются градиенты с валидационного датасета с каким-нибудь downstream task (например, TruthfulQA) и градиенты с тренировочных данных, и далее мы отбираются примеры, которые больше всего минимизируют лосс на валидации. Это выглядит, на мой взгляд, менее читерски, особенно если мы сразу обговариваем, что нас интересует качество только на одной конкретной задаче
Несмотря на то, что test-time training пока выглядит достаточно костыльно, интерес к этому большой. Например один из авторов o1 Ноам Браун эту статью откомментил так, что в OAI рассматривают обучение o1 как пример test-time training за счет ризонинга, но что это вероятно не единственный и не лучший вариант такой тренировки. Илья Суцкевер в новом интерью также сказал, что scaling up pre-training уже достигло потолка, и нужно скейлить что-то новое. Так что жду дальнейших статей на эту тему🤟
https://ekinakyurek.github.io/papers/ttt.pdf
Все-таки желание ресерчеров обучиться на тесте неискоренимо, и обсуждений про test-time training я вижу сейчас достаточно много. Если раньше, кажется, под этим больше понимали in-context learning и всякий прочий кондишенинг, то теперь выходит целый ряд статей про то, как именно обучаться, используя при этом знания о тестовых данных
Конкретно тут авторы решали бенчмарк ARC – в нем содержатся картинки 30x30 c разными паттернами. Для каждого паттерна есть свой контекст, где основываясь на трансформациях предыдущих примеров, модель должна понять, как нужно изменить текущую тестовую картинку (см. скриншот, на котором это более понятно)
Из вот этого “контекста” авторы и генрировали под каждый пример свой тренировочный датасет. Паттерны из контекста всячески аугментирировали привычными способами, вроде поворота на n градусов, отражения, апскейлинга и так далее. Для каждого тестового примера таким образом создавалось до 250 штук синтетических тренировочных данных. На этом обучалась LoRA, и наконец предсказывался ответ на оригинальное тестовое задание (да, получается, что для 80 задач из ARC авторы натренировали 80 адаптеров)
Качество от этого у них улучшается в 6 раз достигает 61.9% для 8B модели, что на уровне human baseline для ARC. Хотя тут конечно можно обсуждать, насколько адекватно иметь по адаптеру на каждый тестовый пример, и что вообще здесь авторам довольно повезло с самой структурой бенчмарка, где для каждого примера оказывалось относительно легко сгенерить синтетический датасет
Не могу тут не упомянуть статью с более элегантным подходом LESS, про которую я узнала на работе несколько месяцев назад: в ней собираются градиенты с валидационного датасета с каким-нибудь downstream task (например, TruthfulQA) и градиенты с тренировочных данных, и далее мы отбираются примеры, которые больше всего минимизируют лосс на валидации. Это выглядит, на мой взгляд, менее читерски, особенно если мы сразу обговариваем, что нас интересует качество только на одной конкретной задаче
Несмотря на то, что test-time training пока выглядит достаточно костыльно, интерес к этому большой. Например один из авторов o1 Ноам Браун эту статью откомментил так, что в OAI рассматривают обучение o1 как пример test-time training за счет ризонинга, но что это вероятно не единственный и не лучший вариант такой тренировки. Илья Суцкевер в новом интерью также сказал, что scaling up pre-training уже достигло потолка, и нужно скейлить что-то новое. Так что жду дальнейших статей на эту тему
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Were RNNs All We Needed?
https://arxiv.org/abs/2410.01201
Времени читать статьи тотально не хватает, поэтому тестирую радикально новый формат😊
https://arxiv.org/abs/2410.01201
Времени читать статьи тотально не хватает, поэтому тестирую радикально новый формат
Please open Telegram to view this post
VIEW IN TELEGRAM
Training Large Language Models to Reason in a Continuous Latent Space
https://arxiv.org/abs/2412.06769
Очень понравилась недавняя статья от Meta с, как это обычно и бывает, простой и гениальной задумкой – давайте заменим шаги в CoT на какие-нибудь тренируемые репрезентации и посмотрим, эффективнее ли это оказывается для обучения всякому ризонингу(конечно оказывается, что да) . Как сейчас все любят отмечать, некоторые токены сложнее остальных, а ресурсов тратится при генерации одинаково, что особенно отражается на длинных CoT-цепочках. Большая часть сгенерированных там слов нужна скорее для поддержания логики языка и структуры предложений, и это мало помогает модели как-то ризонить.
Технически это реализуется так:
- Модель тренируется в несколько этапов. На первом все шаги CoT сохрянются на естественном языке.
- На следующих этапах первые несколько шагов рассуждения заменяются на то, что авторы называют continuous thoughts – по факту это hidden state предыдущего токена. Получается, что вместо обычных входных эмбеддингов у нас получается входная последовательность [e(x1), e(x2)....h(x_i),....,h(x_j-1), e(x_j)....], где e - это эмбеддинги, а h - hiddent states соответственно. По бокам от continuous thoughts ставятся еще специальные служебные токены.
- Каждый следующий этап все больше шагов заменяются на continuous thoughts. В статье авторы на каждом шаге заменяли следующие 2 шага решения и обучали в 3 этапа
Больше всего такой подход повышает качество на QA задачах, например, на ProntoQA этот метод выбивает 99% accuracy, генерируя при этом в 10 раз меньше токенов, чем обычный CoT. На бенче ProsQA, где модели нужно ответить на 5-hop questions (то есть "в уме" подставить пять пропущенных концептов в рассуждении), accuracy повышается на 20%, и используется при этом в 3.5 раза меньше токенов
В статье получились очень интересные аблейшены. Например, даже если заставить модель, обученную таким образом, генерить обычный CoT, то ее качество все равно будет выше. Авторы это атрибутируют к тому, что благодаря способу тренировки, модель учится очень хорошо планировать наперед – если ей доступен только вопрос и последние шаги рассуждения, то ей нужно хорошо понимать, как в итоге к финальным выводам прийти
Еще более интересно – модель учится приоретизировать потенциально более интересные / правильные направления мыслей. Если заставить модель свичнуться на естественный язык после первой continuous thought и посмотреть на вероятности токенов для ответа на следующий шаг, то модель сразу "занижает" вероятности очевидно неправильных вариантов, но при этом примерно с одинаковой уверенностью предсказывает кандидатов, между которому она еще не может решить. После следующих размышлений модель итеративно апдейтит эти вероятности. Это говорит о том, что модель не просто "сжимает" цепочки рассуждений в какой-то более компактный эмбеддинг, а что она оказывается способна держать в голове несколько веток решений параллельно, между которыми она может довольно долго выбирать и только потом сгенерировать первый токен ответа.
https://arxiv.org/abs/2412.06769
Очень понравилась недавняя статья от Meta с, как это обычно и бывает, простой и гениальной задумкой – давайте заменим шаги в CoT на какие-нибудь тренируемые репрезентации и посмотрим, эффективнее ли это оказывается для обучения всякому ризонингу
Технически это реализуется так:
- Модель тренируется в несколько этапов. На первом все шаги CoT сохрянются на естественном языке.
- На следующих этапах первые несколько шагов рассуждения заменяются на то, что авторы называют continuous thoughts – по факту это hidden state предыдущего токена. Получается, что вместо обычных входных эмбеддингов у нас получается входная последовательность [e(x1), e(x2)....h(x_i),....,h(x_j-1), e(x_j)....], где e - это эмбеддинги, а h - hiddent states соответственно. По бокам от continuous thoughts ставятся еще специальные служебные токены.
- Каждый следующий этап все больше шагов заменяются на continuous thoughts. В статье авторы на каждом шаге заменяли следующие 2 шага решения и обучали в 3 этапа
Больше всего такой подход повышает качество на QA задачах, например, на ProntoQA этот метод выбивает 99% accuracy, генерируя при этом в 10 раз меньше токенов, чем обычный CoT. На бенче ProsQA, где модели нужно ответить на 5-hop questions (то есть "в уме" подставить пять пропущенных концептов в рассуждении), accuracy повышается на 20%, и используется при этом в 3.5 раза меньше токенов
В статье получились очень интересные аблейшены. Например, даже если заставить модель, обученную таким образом, генерить обычный CoT, то ее качество все равно будет выше. Авторы это атрибутируют к тому, что благодаря способу тренировки, модель учится очень хорошо планировать наперед – если ей доступен только вопрос и последние шаги рассуждения, то ей нужно хорошо понимать, как в итоге к финальным выводам прийти
Еще более интересно – модель учится приоретизировать потенциально более интересные / правильные направления мыслей. Если заставить модель свичнуться на естественный язык после первой continuous thought и посмотреть на вероятности токенов для ответа на следующий шаг, то модель сразу "занижает" вероятности очевидно неправильных вариантов, но при этом примерно с одинаковой уверенностью предсказывает кандидатов, между которому она еще не может решить. После следующих размышлений модель итеративно апдейтит эти вероятности. Это говорит о том, что модель не просто "сжимает" цепочки рассуждений в какой-то более компактный эмбеддинг, а что она оказывается способна держать в голове несколько веток решений параллельно, между которыми она может довольно долго выбирать и только потом сгенерировать первый токен ответа.
Помимо крутой задумки, меня тут очень интересует связь с некоторыми другими трендами в обучении LLM, которые тут раньше затрагивались в постах. Например, в этом выступлении Jason Wei (OAI) говорит, что для LLM нужно придумывать не новые архитектуры, а новые training objectives. В том числе из-за того, что предсказание следующего токена получается слишком "жестким" критерием моделирования – существует слишком много способов выразить одну и ту же мысль, плюс, это как раз заставляет модель сразу выбрать свою цепочку размышлений, вместо того, чтоб поддерживать несколько одновременно и думать какое-то время. В том же выступлении он говорит о том, что все развитие DL в последние годы состоит в уменьшении inductive bias, и тут снова continuous thoughts позволяют моделировать что-то более абстрактное, не привязанное к структуре языка
Еще мне очень понравилась в свое время статья Platonic Representations, которая пытается показать, что латетные представления моделей для разных концептов в итоге сходятся к человеческому восприятию, что логично, раз модели тренируются коммуницировать с людьми. В конце авторы однако мимолетно вбрасывают, что не факт, что такие репрезентации оптимальны для всех задач. И тут кажется ресерч от Meta достаточно явно показывает, что рассуждать можно эффективнее, если рассуждать не на естественном языке, – не поддерживать внутреннюю логику предложений, не тратить компьют на грамматическую корректность, а репрезентировать абстрактное нечто и не совсем человеческое
Еще мне очень понравилась в свое время статья Platonic Representations, которая пытается показать, что латетные представления моделей для разных концептов в итоге сходятся к человеческому восприятию, что логично, раз модели тренируются коммуницировать с людьми. В конце авторы однако мимолетно вбрасывают, что не факт, что такие репрезентации оптимальны для всех задач. И тут кажется ресерч от Meta достаточно явно показывает, что рассуждать можно эффективнее, если рассуждать не на естественном языке, – не поддерживать внутреннюю логику предложений, не тратить компьют на грамматическую корректность, а репрезентировать абстрактное нечто и не совсем человеческое
Telegram
я обучала одну модель
Посмотрела выступление Jason Wei и Hyung Won Chung (оба из OpenAI) в Стенфорде, записанное пару месяцев назад. Первая часть от Jason Wei несет в себе довольно очевидный посыл – компьют решает все и с достаточным компьютом вы можете дождаться того момента…
Как можно было заметить по активности в канале, в последние месяцы было очень мало времени писать про статьи, но читать некоторые из них мне все-таки удавалось. Отбросив в какой-то момент попытки написать про каждую из них отдельный пост, я решила лучше сделать хотя бы вот такой рекап. В основном тут все про ризонинг!
🌟 s1: Simple test-time scaling. Одна из самых прикольных и простых идей из недавнего: собираем маленький, но хороший датасет с трудными задачами (в основном математика), получаем reasoning traces решений (от Gemini), тренируемся без всякого RL, просто SFT. Test-time compute скейлим очень в лоб, а именно когда модель закончила генерить, добавляем "wait" к ее ответу и просим модель продолжать генерировать, и повторяем до тех пор, пока не наберется достаточное количество токенов. Файнтюн 32B модели в итоге превосходит o1-preview на задачках на олимпиадную математику. Понятно, что дело здесь не в магическом датасете или в волшебном слове "wait", а в том, что мы заставляем модель потратить очень много времени на генерацию и перепроверять свой ответ много раз.
В некоторых других статьях авторы тоже используют трюк с тем, чтобы гонять модель дольше, но более осмысленно передают ей фидбек. Например тут с помощью GRPO обучали модель-критика, задача которой оптимальным образом оценивать генерируемые решения и отмечать, что в них нужно улучшить, и заводили генерацию в multi-turn на несколько раундов. Кажется у NVIDIA в эксперименте с тем, чтобы заставить модель генерировать хорошие CUDA kernels, был такой же сетап: r1 сначала генерировала решения, потом некий verifier (о котором они ничего особо не сказали) поправляет промпт, и так по кругу, пока в итоге r1 не начинает генерить кернелы лучше, чем в торче.
Несмотря на то, что идея простая и рабочая, мне на этом фоне становится все больше интересно, что делали OAI с o3 моделями, чтобы повысить их эффективность и сократить длину рассуждений там, где задача полегче и не требует такого большого времени ответа. Даже в репорте про r1 авторы показывали, что чем дальше шла RL трена, тем длинее становился в среднем ответ, и под конец длина болтается около 10k токенов. Очевидно, что это бустит перформанс, но не для каждой задачи это нужно. В тему этого мне попалась одна статья про возможно более оптимальную архитектуру:
🌟 Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach. Тут у нас сотое по счету возрождение RNN. На входе и выходе у модели находятся слои фиксированного размера – prelude and coda (по сути энкодер и декодер). Между ними располагается реккурентный блок, который мы можем перепрогонять нужное количество раз at test-time. Например, рекурсия останавливается, если KL-дивергенция на между последними двумя итерациями меньше, чем какой-то заданный порог. Таким образом мы экономим на вычислениях, потому что вместо генерации chain-of-though (или reasoning trace, как угодно) в токенах, все размышления происходят прямо в latenet space. Кстати больше всего итераций модели понадобилось на бенчмарках про философию и моральные дилеммы, и только во-вторых на математических задачах 🥂
Обучать такую модель достаточно запарно, и про это много написано в разделе про тренировку, но я очень рекомендую целиком прочитать эту статью, она просто отлично написана. Тем более что им удалось эту архитектуру как-то даже хорошо заскейлить, пока не кончились ГПУ
В некоторых других статьях авторы тоже используют трюк с тем, чтобы гонять модель дольше, но более осмысленно передают ей фидбек. Например тут с помощью GRPO обучали модель-критика, задача которой оптимальным образом оценивать генерируемые решения и отмечать, что в них нужно улучшить, и заводили генерацию в multi-turn на несколько раундов. Кажется у NVIDIA в эксперименте с тем, чтобы заставить модель генерировать хорошие CUDA kernels, был такой же сетап: r1 сначала генерировала решения, потом некий verifier (о котором они ничего особо не сказали) поправляет промпт, и так по кругу, пока в итоге r1 не начинает генерить кернелы лучше, чем в торче.
Несмотря на то, что идея простая и рабочая, мне на этом фоне становится все больше интересно, что делали OAI с o3 моделями, чтобы повысить их эффективность и сократить длину рассуждений там, где задача полегче и не требует такого большого времени ответа. Даже в репорте про r1 авторы показывали, что чем дальше шла RL трена, тем длинее становился в среднем ответ, и под конец длина болтается около 10k токенов. Очевидно, что это бустит перформанс, но не для каждой задачи это нужно. В тему этого мне попалась одна статья про возможно более оптимальную архитектуру:
Обучать такую модель достаточно запарно, и про это много написано в разделе про тренировку, но я очень рекомендую целиком прочитать эту статью, она просто отлично написана. Тем более что им удалось эту архитектуру как-то даже хорошо заскейлить, пока не кончились ГПУ
Please open Telegram to view this post
VIEW IN TELEGRAM
Еще после прочтения s1 может возникнуть вопрос, нужен ли вообще RL, если можно классно обучаться в SFT. Тут четкого ответа у меня нет, но есть две статьи:
🌟 Competitive Programming with Large Reasoning Models, статья от OAI. Там они сначала с помощью некоторых костылей заставляют o1 решать задачи из International Olympiad in Informatics 2024. Костыли включали в себя реранкинг, коорый из 10к сгенерированных решений выбирал 50 лучших, и дополнительный кластеринг этих решений, чтобы набирались более разнообразные варианты. Это все позволило o1 сместиться из 89 перцентиля участников в 98. Но потом оказалось, что простая советская o3 сразу выбивает 99.8 перцентиль, без дополнительных ухищрений at test-time, просто за счет RL во время обучения. Конечно интерпретировать результаты OAI тут сложно, потому что мы почти ничего не знаем о тренировке o3
🌟 Scaling Test-Time Compute Without Verification or RL is Suboptimal. Тут уже более обстоятельно (с кучей формул) авторы утверждают, что RL лучше дистиляции на reasoning traces, если генерации модели достаточно гетерогенны. Гетерогенность понимается здесь в том смысле, что некоторые задачи модель решает верно и достаточно быстро, а для других ей нужно гораздо больше времени, и следовательно здесь модели бы помог более эксплицитный сигнал в виде какого-то реварда. Еще при гетерогенности у модели появляется шанс случайно наткнуться на хорошее (better than average) решение, и RL позволяет развивать в моделях это свойство, в отличие от обучения в SFT. В статье есть и эмпирические доказательства, но не особенно масштабные, чтобы можно было сказать, что это правда всегда и везде
А еще кажется есть пруф, что совсем маленькие модели <3B плохо учатся на дистилированных длинных reasoning traces от больших моделей, а вот с ~7B имеет смысл такое делать
~~~~~~~~~
В следующий раз я вернусь с новыми статьями, и надеюсь не через три месяца🧇
А еще кажется есть пруф, что совсем маленькие модели <3B плохо учатся на дистилированных длинных reasoning traces от больших моделей, а вот с ~7B имеет смысл такое делать
В следующий раз я вернусь с новыми статьями, и надеюсь не через три месяца
Please open Telegram to view this post
VIEW IN TELEGRAM
Уже пару раз я бампала аватарку паблика, когда выходила какая-нибудь новая модель для генерации изображений, которая существенно повышала планку в плане качества или стиля. Для сравнения, первая аватарка (кроме фото жабы) была сгенерирована через какой-то GAN в далеком в 2021 году, в 2023 это уже Midjourney v5, и вот теперь наконец-то можно попробовать gpt-4o! Я до сих пор использую тот же самый промпт – "An open notebook, some code on the screen. waporvawe aesthetic, greek statues in the background, light purple hues" (что поделать, душой я все еще в эпохе тамблера)
В плане стиля мне до сих пор вариант Midjourney кажется интересней, но тут кажется очевидно, насколько у gpt-4o лучше instruction following и насколько более точно это попадает в промпт. И особенно понравилось, что ее можно бесконечно задалбывать правочками 💅 Например, подбирать полутона фиолетовотого. Или вообще попросить исправить косяки с анатомией на текущей аватрке, не меняя ничего остального. Или заменить греческие статуи, разумеется, на статуи в стиле studio ghibli. Или даже самой стать аниме девочкой с вапорвейв бекграундом😊
Этот глубокомысленный пост направлен в основном на то, чтоб вспомнить, как в 2021 году казалось совершенно невероятным, что модель генерит хоть что-то похожее на то, что ты у нее попросил. В 2023 уже стало гораздо лучше и реалистичнее, но проблемы с деталями и с кастомизацией тоже были очевидны. Чего ждать в плане генерации изображений еще через пару лет я уже даже не знаю. Скорее всего, следующий бамп будет уже касательно видео, – OpenAI и/или Google выпустят какой-нибудь instruction-based апдейт для Sora / veo, а мы все будем жаловаться, что модель плохо настраивает светокор, или что на двадцатой минуте видео у человека три руки...
В плане стиля мне до сих пор вариант Midjourney кажется интересней, но тут кажется очевидно, насколько у gpt-4o лучше instruction following и насколько более точно это попадает в промпт. И особенно понравилось, что ее можно бесконечно задалбывать правочками 💅 Например, подбирать полутона фиолетовотого. Или вообще попросить исправить косяки с анатомией на текущей аватрке, не меняя ничего остального. Или заменить греческие статуи, разумеется, на статуи в стиле studio ghibli. Или даже самой стать аниме девочкой с вапорвейв бекграундом
Этот глубокомысленный пост направлен в основном на то, чтоб вспомнить, как в 2021 году казалось совершенно невероятным, что модель генерит хоть что-то похожее на то, что ты у нее попросил. В 2023 уже стало гораздо лучше и реалистичнее, но проблемы с деталями и с кастомизацией тоже были очевидны. Чего ждать в плане генерации изображений еще через пару лет я уже даже не знаю. Скорее всего, следующий бамп будет уже касательно видео, – OpenAI и/или Google выпустят какой-нибудь instruction-based апдейт для Sora / veo, а мы все будем жаловаться, что модель плохо настраивает светокор, или что на двадцатой минуте видео у человека три руки...
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM