https://arxiv.org/abs/2409.02877
Не статья, а карусель эмоций. Абстракт жутко интересный и интригующий, пишут, что предлагают новый фреймворк рассуждений о моделях: так как знания лежат в параметрах, почему бы не понять, в каких параметрах лежат какие знания и как бы правильно эти знания комбинировать, чтобы получалась сеть, которая умеет делать именно то, что нам надо.
В качестве базового блока знаний в сети они предлагают "brick" -- это очень широкая по смыслу штуковина, которая может быть группой отдельных нейронов, слоем, экспертом в MoE, лора-адаптером, базой знаний для RAG и так далее.
Дальше они предлагают разделить кирпичики на два варианта: emergent bricks и customized bricks. Emergent bricks появляются на этапе обучения моделей и формируются сами, имплиситно -- например, эксперты МоЕ, отвечающие за знания модели в коде или параметры, у которых высокая активация при вопросах про биологию в dense моделях -- это emergent bricks. Customizable bricks -- это, например, Лора адаптеры под конкретную задачу, база знаний, llava-адаптер, в общем, все то, что мы можем воткнуть в сеть с пониманием того, что и зачем мы втыкаем и улучшить качество работы на конкретных задачах.
Дальше мне стало становиться скучновато, потому что первые 30 страниц это обзорное перечисление разных кирпичиков, без конкретных предложений по улучшению моделей. "Че звал, сларк?"
Потом стало поживее, потому что начался обзор методов создания кирпичиков -- от обучения адаптеров до мержей.
А потом они внезапно сделали совсем интересную вещь: взяли лламу и мистраль и стали прунить отдельные кирпичики, наблюдая за изменением перплексии на текстах из разных доменов.
К сожалению, дальше этого эксперимента особо мысль не пошла и конкретных теорий об интерпретируемости, подкрепленных экспериментами, я так и не дождался. Кроме того, они даже не рассматривали архитектуры, отличные от декодера (МоЕ и ллаву считаем декодерами). В результате получилась обзорная статья на 50 страниц с одним любопытным экспериментом в конце.
Будь я ревьюером -- вломил бы реджект за недостатком новелти. Но статей по интерпретируемости мало, так что на безрыбье и рак рыба.
Не статья, а карусель эмоций. Абстракт жутко интересный и интригующий, пишут, что предлагают новый фреймворк рассуждений о моделях: так как знания лежат в параметрах, почему бы не понять, в каких параметрах лежат какие знания и как бы правильно эти знания комбинировать, чтобы получалась сеть, которая умеет делать именно то, что нам надо.
В качестве базового блока знаний в сети они предлагают "brick" -- это очень широкая по смыслу штуковина, которая может быть группой отдельных нейронов, слоем, экспертом в MoE, лора-адаптером, базой знаний для RAG и так далее.
Дальше они предлагают разделить кирпичики на два варианта: emergent bricks и customized bricks. Emergent bricks появляются на этапе обучения моделей и формируются сами, имплиситно -- например, эксперты МоЕ, отвечающие за знания модели в коде или параметры, у которых высокая активация при вопросах про биологию в dense моделях -- это emergent bricks. Customizable bricks -- это, например, Лора адаптеры под конкретную задачу, база знаний, llava-адаптер, в общем, все то, что мы можем воткнуть в сеть с пониманием того, что и зачем мы втыкаем и улучшить качество работы на конкретных задачах.
Дальше мне стало становиться скучновато, потому что первые 30 страниц это обзорное перечисление разных кирпичиков, без конкретных предложений по улучшению моделей. "Че звал, сларк?"
Потом стало поживее, потому что начался обзор методов создания кирпичиков -- от обучения адаптеров до мержей.
А потом они внезапно сделали совсем интересную вещь: взяли лламу и мистраль и стали прунить отдельные кирпичики, наблюдая за изменением перплексии на текстах из разных доменов.
К сожалению, дальше этого эксперимента особо мысль не пошла и конкретных теорий об интерпретируемости, подкрепленных экспериментами, я так и не дождался. Кроме того, они даже не рассматривали архитектуры, отличные от декодера (МоЕ и ллаву считаем декодерами). В результате получилась обзорная статья на 50 страниц с одним любопытным экспериментом в конце.
Будь я ревьюером -- вломил бы реджект за недостатком новелти. Но статей по интерпретируемости мало, так что на безрыбье и рак рыба.
🤩3☃1❤1🎉1
Do Llamas Work in English? On the Latent Language of Multilingual Transformers
Одна из любимых статей последнего года, прям очень нравится и идея, и реализация, и мотивация, и выводы.
TLDR:
Смотрят на активации внутри llama-2, приходят к выводу, что разные части декодера отвечают за разные задачи внутри модели (перевод в embedding space, рахмышления в concept space, перевод в натуральный язык в output space).
Метод:
- Для создания эмбеддингов, они используют logit lens:
— Перед тем, как модель придумывает следующий токен, она должна взять выход последнего слоя и домножить на некоторую unembedding matrix, которая превратит его в logit scores, которые потом проходят через софтмакс, чтобы получить вероятности токенов
— Поскольку все слои имеют ту же размерность, что и последний слой, нам не так важно, какой слой домножать на unembedding matrix и с какого считать logit scores
— Таким образом, мы можем посмотреть вероятности токенов на любом, даже первом слое
- Три таски:
— Перевод на заданный язык
— Повторение того же слова
— Sort-of MLM, где маскируется одно слово и модели надо вставить пропущенное
- Такие таски нужны для предсказуемости следующего токена
- Каждый слой нужен для того, чтобы добавить небольшой сдвиг на сфере размерностью в хидден
- Mean squared cosine между выходом h и unembedding matrix U (?) даёт token energy, это нужно чтобы понять насколько бесполезна инфа от этого слоя для предсказания следующего токена
- На llama-2-70b получается:
— На 1-40 слоях энтропия вероятных следующих токенов высокая (следующий токен может быть какой угодно), энергия токена низкая (инфа от слоя малополезна для следующего токена), нет чёткого доминирующего языка
— На 41-70 слоях низкая энтропия (следующих токенов мало), низкая энергия токена (инфа от слоя малополезна), английский доминирует, так как модель много его видела и английские токены ближе всего к смысловому эмбеддингу. При этом, информация о языке токена всё ещё остаётся внутри эмбеддинга.
— На 71-80 слоях низкая энтропия (следующих токенов мало), высокая энергия токена (инфа от слоя полезна), язык ответа модели доминирует
- Авторы пишут, что энергия латентов показывает в большей степени не на язык, а на концепты, но концепты больше связаны с английским, располагаясь ближе к пространству английских токенов на шаре
Мысли:
- Модели внутри себя переводят текст на англ
— Это заметно со стихами — у некоторых крутых декодеров классно пишутся стихи на английском, но так себе на русском. А вот если перевести текст на русском на английский, получатся стихи в рифму!
- В начале у нас sort of mapping в латентный язык, в середине sort of размышления, как правильно достать оттуда инфу, в конце sort of unmapping в реальный язык.
Paper: https://arxiv.org/pdf/2402.10588
Github: https://github.com/epfl-dlab/llm-latent-language
Одна из любимых статей последнего года, прям очень нравится и идея, и реализация, и мотивация, и выводы.
TLDR:
Смотрят на активации внутри llama-2, приходят к выводу, что разные части декодера отвечают за разные задачи внутри модели (перевод в embedding space, рахмышления в concept space, перевод в натуральный язык в output space).
Метод:
- Для создания эмбеддингов, они используют logit lens:
— Перед тем, как модель придумывает следующий токен, она должна взять выход последнего слоя и домножить на некоторую unembedding matrix, которая превратит его в logit scores, которые потом проходят через софтмакс, чтобы получить вероятности токенов
— Поскольку все слои имеют ту же размерность, что и последний слой, нам не так важно, какой слой домножать на unembedding matrix и с какого считать logit scores
— Таким образом, мы можем посмотреть вероятности токенов на любом, даже первом слое
- Три таски:
— Перевод на заданный язык
— Повторение того же слова
— Sort-of MLM, где маскируется одно слово и модели надо вставить пропущенное
- Такие таски нужны для предсказуемости следующего токена
- Каждый слой нужен для того, чтобы добавить небольшой сдвиг на сфере размерностью в хидден
- Mean squared cosine между выходом h и unembedding matrix U (?) даёт token energy, это нужно чтобы понять насколько бесполезна инфа от этого слоя для предсказания следующего токена
- На llama-2-70b получается:
— На 1-40 слоях энтропия вероятных следующих токенов высокая (следующий токен может быть какой угодно), энергия токена низкая (инфа от слоя малополезна для следующего токена), нет чёткого доминирующего языка
— На 41-70 слоях низкая энтропия (следующих токенов мало), низкая энергия токена (инфа от слоя малополезна), английский доминирует, так как модель много его видела и английские токены ближе всего к смысловому эмбеддингу. При этом, информация о языке токена всё ещё остаётся внутри эмбеддинга.
— На 71-80 слоях низкая энтропия (следующих токенов мало), высокая энергия токена (инфа от слоя полезна), язык ответа модели доминирует
- Авторы пишут, что энергия латентов показывает в большей степени не на язык, а на концепты, но концепты больше связаны с английским, располагаясь ближе к пространству английских токенов на шаре
Мысли:
- Модели внутри себя переводят текст на англ
— Это заметно со стихами — у некоторых крутых декодеров классно пишутся стихи на английском, но так себе на русском. А вот если перевести текст на русском на английский, получатся стихи в рифму!
- В начале у нас sort of mapping в латентный язык, в середине sort of размышления, как правильно достать оттуда инфу, в конце sort of unmapping в реальный язык.
Paper: https://arxiv.org/pdf/2402.10588
Github: https://github.com/epfl-dlab/llm-latent-language
🔥1🥰1🤔1
Figure 4d: Все эмбеддинги на d-мерной сфере, где d — размерность хиддена модели. Эмбеддинги токенов лежат на экваторе, по x лежит язык (от английского до китайского), по y лежит смысл/концепт (слово sweetness), по z лежит дополнительная информация, которая потребуется на следующих слоях, типа контекста и прочего.
🤩2
Matryoshka Representation Learning и MatFormer
Есть такая штука, Matryoshka Embeddings. Суть в том, что если мы учим какой-нибудь берт, вит или резнет, мы на выходе получаем довольно жирный вектор эмбеддингов — например, 2048-мерный. Если мы хотим снизить число измерений в нем, мы можем либо взять эмбеддер с меньшей размерностью, либо попробовать порезать этот вектор, повыкидывав часть измерений из него. Ожидаемо, второй вариант снизит качество эмбеддингов, а в первом подходящей нам модели может не оказаться.
Авторы статьи предложили очень простую идею: а что если мы будем вешать лосс не только на весь слой, но ещё и на первые {1024, 512, ..., 32, 16, 8} измерений выхода этого слоя, проставлять веса и оптимизировать всё сразу? В результате они добились того, что самые важные значения вектора оказываются в начале, а менее важные — в конце. Таким образом, качество эмбеддингов при откидывании правой части вектора снижается совсем незначительно.
Идея прижилась, поддержку матрёшек завезли в sentence transformers, теперь их активно используют для, например, ускорения поиска по векторной базе в RAG'е. А потом можно ту же модель, но с большей размерностью эмбеддинга использовать, например, для реранкинга.
Однако авторы на этом не остановились и предложили новую идею — MatFormer. Суть следующая:
- Учим с матрешкой feedforward слои трансформера (хоть энкодера, хоть декодера, не так важно)
- На этапе инференса либо руками, либо через роутинг как в MoE динамически откидываем "лишние" части справа
- Получаем уменьшенную модель, которая становится легче и немножко теряет в качестве
Идея сработала. Более того, оказалось, что можно комбинировать FFN разной размерности и получать не d (размерность матрёшки) моделей, а d^n (где n — число слоев), получая более гибкую настройку размера модели под имеющийся компьют. При этом количество ресурсов на обучение остаётся сравнимым с ванильным трансформером!
Качество такой модели не уступает модели, обученной без матрёшки, а при прунинге мы можем отказаться аж от 40% параметров. Интересно, кстати, насколько тяжело потом пруненные таким образом модели квантовать.
К сожалению, кажется, идея не прижилась. А жаль.
Базовая статья про матрёшки: https://arxiv.org/abs/2205.13147
Статья про MatFormer: https://arxiv.org/pdf/2310.07707
Есть такая штука, Matryoshka Embeddings. Суть в том, что если мы учим какой-нибудь берт, вит или резнет, мы на выходе получаем довольно жирный вектор эмбеддингов — например, 2048-мерный. Если мы хотим снизить число измерений в нем, мы можем либо взять эмбеддер с меньшей размерностью, либо попробовать порезать этот вектор, повыкидывав часть измерений из него. Ожидаемо, второй вариант снизит качество эмбеддингов, а в первом подходящей нам модели может не оказаться.
Авторы статьи предложили очень простую идею: а что если мы будем вешать лосс не только на весь слой, но ещё и на первые {1024, 512, ..., 32, 16, 8} измерений выхода этого слоя, проставлять веса и оптимизировать всё сразу? В результате они добились того, что самые важные значения вектора оказываются в начале, а менее важные — в конце. Таким образом, качество эмбеддингов при откидывании правой части вектора снижается совсем незначительно.
Идея прижилась, поддержку матрёшек завезли в sentence transformers, теперь их активно используют для, например, ускорения поиска по векторной базе в RAG'е. А потом можно ту же модель, но с большей размерностью эмбеддинга использовать, например, для реранкинга.
Однако авторы на этом не остановились и предложили новую идею — MatFormer. Суть следующая:
- Учим с матрешкой feedforward слои трансформера (хоть энкодера, хоть декодера, не так важно)
- На этапе инференса либо руками, либо через роутинг как в MoE динамически откидываем "лишние" части справа
- Получаем уменьшенную модель, которая становится легче и немножко теряет в качестве
Идея сработала. Более того, оказалось, что можно комбинировать FFN разной размерности и получать не d (размерность матрёшки) моделей, а d^n (где n — число слоев), получая более гибкую настройку размера модели под имеющийся компьют. При этом количество ресурсов на обучение остаётся сравнимым с ванильным трансформером!
Качество такой модели не уступает модели, обученной без матрёшки, а при прунинге мы можем отказаться аж от 40% параметров. Интересно, кстати, насколько тяжело потом пруненные таким образом модели квантовать.
К сожалению, кажется, идея не прижилась. А жаль.
Базовая статья про матрёшки: https://arxiv.org/abs/2205.13147
Статья про MatFormer: https://arxiv.org/pdf/2310.07707
arXiv.org
Matryoshka Representation Learning
Learned representations are a central component in modern ML systems, serving a multitude of downstream tasks. When training such representations, it is often the case that computational and...
⚡3👍2🔥1
Матрёшка и качество классификации при урезании эмбеддингов на резнете и вите.
🍌2
Прикольный бейзлайн для энкодеров для простеньких задач типа мелкой классификации, дедупа или близости. Работает на вынимании первого слоя
Кажется, из-за выбора именно первого слоя в мультиязе такая штука не будет работать хорошо (то есть similarity параллельных переводов одной и той же фразы не будет близким), потому что первый слой, как правило, имеет сгруппированные по языкам представления (см картинку). Но может быть автор как-то по умному их учил, надо будет проверить.
https://github.com/dleemiller/WordLlama
nn.Embedding у какой-нибудь большой и мудрой модели вроде llama-3-70b и обучения мелкой модельки с теми же матрёшками, если я верно всё понял. Получается 16-мегабайтная модель, которая работает лучше стареньких бейзлайнов типа GloVe, но заметно хуже современных сот большего размера (не для того, всё таки, делалось). Есть замеры на MTEB'е.Кажется, из-за выбора именно первого слоя в мультиязе такая штука не будет работать хорошо (то есть similarity параллельных переводов одной и той же фразы не будет близким), потому что первый слой, как правило, имеет сгруппированные по языкам представления (см картинку). Но может быть автор как-то по умному их учил, надо будет проверить.
https://github.com/dleemiller/WordLlama
✍5
jina-embeddings-v3: Multilingual Embeddings With Task LoRA
В 2022 году, если я не ошибаюсь, впервые представили инструктивный эмбеддер — Instructor. Это была довольно прорывная идея, потому что теперь эмбеддеры могли быть обучены на разные задачи (ретрив, реранк, классификация, кластеризация) и для того, чтобы воспользоваться моделью для новой задачи, надо было всего лишь приаппендить промпт слева к тексту, который мы эмбеддим. Это сильно помогло модели, в своё время она стала сотой на MTEB с довольно уверенным отрывом от конкурентов того же размера на многих задачах. С тех пор, конечно, утекло много воды, соты менялись, придумали даже делать эмбеддеры на декодерах, но идея прижилась. Одна из лучших мультилингв моделей в размере до 1B —
Кроме того, в последнее время стали появляться мультилингв эмбеддеры. Но проблема в том, что такие эмбеддеры сильно просаживались по качеству по сравнению с монолингв моделями — BGE-M3, например, по моим замерам, в ретривале сильно отставала даже от bge-1.5-base, модели, которая была в пять раз меньше.
И вот сегодня в Daily Papers прилетела статья от стартапа Jina AI, в которой они представляют эмбеддинговую модель, которая, во-первых, лучше проприетарных
Ну а ещё модель размером всего 572M ("всего" — потому что текущие соты на MTEB это здоровенные 7-9B эмбеддеры, которых доучивали с декодеров типа мистрали или геммы), не очень сильно уступает большим сотам по качеству (клеймят, что
В качестве инита они брали XLM-RoBERTa, дообучали на своём сете, а потом делали пять адаптеров: text-matching для STS, classification для классификации, separation для реранкинга и классификации и query и passage для энкодинга query и passage при ретриве. У каждого был свой лосс и свой обучающий сет, они довольно подробно всё расписывают, интересно было почитать.
Разумеется, надо самому тыкать руками и перепроверять, но звучит как сказка: сравнительно компактный эмбеддер, который ещё и выдаёт сота мультилингв результаты по многим задачам. Единственный минус — лицензия cc-by-nc-4.0, а не пермиссивная MIT, но я думаю, что скоро идею с лорами подхватят и у нас появятся новые соты с нормальными лицензиями.
Paper: https://arxiv.org/abs/2409.10173
HF: https://huggingface.co/jinaai/jina-embeddings-v3
В 2022 году, если я не ошибаюсь, впервые представили инструктивный эмбеддер — Instructor. Это была довольно прорывная идея, потому что теперь эмбеддеры могли быть обучены на разные задачи (ретрив, реранк, классификация, кластеризация) и для того, чтобы воспользоваться моделью для новой задачи, надо было всего лишь приаппендить промпт слева к тексту, который мы эмбеддим. Это сильно помогло модели, в своё время она стала сотой на MTEB с довольно уверенным отрывом от конкурентов того же размера на многих задачах. С тех пор, конечно, утекло много воды, соты менялись, придумали даже делать эмбеддеры на декодерах, но идея прижилась. Одна из лучших мультилингв моделей в размере до 1B —
multilingual-e5-large-instruct — инструктивная.Кроме того, в последнее время стали появляться мультилингв эмбеддеры. Но проблема в том, что такие эмбеддеры сильно просаживались по качеству по сравнению с монолингв моделями — BGE-M3, например, по моим замерам, в ретривале сильно отставала даже от bge-1.5-base, модели, которая была в пять раз меньше.
И вот сегодня в Daily Papers прилетела статья от стартапа Jina AI, в которой они представляют эмбеддинговую модель, которая, во-первых, лучше проприетарных
text-embeddings-3-large и cohere-embed-multilingual-3.0, лучше моего предыдущего фаворита multilingual-e5-large-instruct, всё ещё хороша на английском, и, внезапно, использует не инструкции, а отдельно натюненные лоры для выполнения итоговых задач. Насколько я знаю, такой подход применяется впервые, круто, что наконец то кто-то это сделал.Ну а ещё модель размером всего 572M ("всего" — потому что текущие соты на MTEB это здоровенные 7-9B эмбеддеры, которых доучивали с декодеров типа мистрали или геммы), не очень сильно уступает большим сотам по качеству (клеймят, что
e5-mistral-instruct лучше всего на 1%), обучена с матрёшками для того, чтобы можно было снизить вес векторной базы и имеет контекст в 8192 токена, так как алгоритм позиционного энкодинга там RoPE. Звучит очень круто, но надо, конечно, проверять самому.В качестве инита они брали XLM-RoBERTa, дообучали на своём сете, а потом делали пять адаптеров: text-matching для STS, classification для классификации, separation для реранкинга и классификации и query и passage для энкодинга query и passage при ретриве. У каждого был свой лосс и свой обучающий сет, они довольно подробно всё расписывают, интересно было почитать.
Разумеется, надо самому тыкать руками и перепроверять, но звучит как сказка: сравнительно компактный эмбеддер, который ещё и выдаёт сота мультилингв результаты по многим задачам. Единственный минус — лицензия cc-by-nc-4.0, а не пермиссивная MIT, но я думаю, что скоро идею с лорами подхватят и у нас появятся новые соты с нормальными лицензиями.
Paper: https://arxiv.org/abs/2409.10173
HF: https://huggingface.co/jinaai/jina-embeddings-v3
🔥5
Если я правильно понял эту табличку, то она очень интересная — число ошибок при использовании адаптеров сильно падает, так что есть надежда, что при обучении лор, подобных jina-v3 (а не просто приклеивании инструкций, как в e5-instruct) для других моделей, можно будет добиться неплохого буста в качестве.
🔥3
To CoT or not to CoT? Chain-of-thought helps mainly on math and symbolic reasoning
Сначала авторы статьи производят мета-анализ, беря 516 статей с "CoT" в тегах, уфильтровывают выборку до 110 статей и рисуют на графике 1218 экспериментов, пытаясь понять, где, на каком домене и сколько докинул CoT по сравнению с прямым промптингом. Такой мета-анализ показывает, что больше всего качество докидывается на тех вопросах, где для получения ответа можно применить какую-то символьную логику: математику, формальную, etc. Например, на коде или математике (MATH, GSM8k, BBH) качество сильно растёт, а на commonsense reasoning, language comprehension и QA (HotpotQA, Winogrande, ARC-Challenge) повышения качества практически нет, кое-где качество даже падает. Отличить вопросы, где CoT докинет качества, оказалось достаточно просто — если в вопросе используется символ "=", то скорее всего тут используется символьная логика и качество после CoT вырастет, если не используется, то не вырастет. Что забавно, они пытались найти более надёжный способ определить, используется ли символьная логика и у них не удалось. Слишком мощный признак получился.
Потом они решили перепроверить это наблюдение самостоятельно и замерили популярные открытые модели и попробовали воспроизвести результаты статей из мета-анализа. Всё воспроизвелось, и выяснилось, что CoT может ограниченно добавить качества в тех бенчах, где используется логика вперемешку с commonsense reasoning. Например, в MuSR, где описывается сцена с преступлением и модели надо найти виновника, качество при использовании CoT улучшилось, но не слишком сильно.
Самая интересная часть статьи, имхо, последняя: они замерили, насколько сильно помогают разные варианты промптинга и сравнили их с внешними тулами в разных вариантах задач. Авторы рассмотрели пять разных сетапов:
1. Few Shot Direct Answer — просто спрашиваем у модели во фьюшоте что она думает по поводу задачи.
2. Chain of Thought — классический CoT без особых изысков.
3. Plan + Direct Solver — генерим моделью план (например, в виде программы на питоне для математики) и промптим модель сказать, что получится в конце этого плана.
4. Plan + CoT Solver — генерим моделью план, а потом по нему идём в режиме CoT, прося модель проговаривать каждый шаг исполнения плана.
5. Plan + Tool Solver — генерим моделью план, а потом передаём его во внешнюю программу, например, в репл питона или SMT-солвер, которые уже выдают ответ.
Получилось, что CoT это такое слабоватое (но универсальное) приближение внешнего солвера, использование которого почти на всех сетах сильно улучшало метрики. Исключения — тыщу раз протёкший в трейн GSM8k и FOLIO, который, видимо, достаточно сложный для моделей.
Какие мы можем сделать из этого выводы:
- Языковые модели в текущем их виде ненадёжны и использование простогосоветского Z3 влёгкую обходит сота модели по качеству исполнения уже написанного и корректного плана.
- CoT действительно помогает моделям улучшить метрики на некоторых бенчмарках, в основном, про математику или формальную логику.
- CoT абсолютно бесполезен для фактоидной точности моделей.
Paper: https://arxiv.org/abs/2409.12183
Сначала авторы статьи производят мета-анализ, беря 516 статей с "CoT" в тегах, уфильтровывают выборку до 110 статей и рисуют на графике 1218 экспериментов, пытаясь понять, где, на каком домене и сколько докинул CoT по сравнению с прямым промптингом. Такой мета-анализ показывает, что больше всего качество докидывается на тех вопросах, где для получения ответа можно применить какую-то символьную логику: математику, формальную, etc. Например, на коде или математике (MATH, GSM8k, BBH) качество сильно растёт, а на commonsense reasoning, language comprehension и QA (HotpotQA, Winogrande, ARC-Challenge) повышения качества практически нет, кое-где качество даже падает. Отличить вопросы, где CoT докинет качества, оказалось достаточно просто — если в вопросе используется символ "=", то скорее всего тут используется символьная логика и качество после CoT вырастет, если не используется, то не вырастет. Что забавно, они пытались найти более надёжный способ определить, используется ли символьная логика и у них не удалось. Слишком мощный признак получился.
Потом они решили перепроверить это наблюдение самостоятельно и замерили популярные открытые модели и попробовали воспроизвести результаты статей из мета-анализа. Всё воспроизвелось, и выяснилось, что CoT может ограниченно добавить качества в тех бенчах, где используется логика вперемешку с commonsense reasoning. Например, в MuSR, где описывается сцена с преступлением и модели надо найти виновника, качество при использовании CoT улучшилось, но не слишком сильно.
Самая интересная часть статьи, имхо, последняя: они замерили, насколько сильно помогают разные варианты промптинга и сравнили их с внешними тулами в разных вариантах задач. Авторы рассмотрели пять разных сетапов:
1. Few Shot Direct Answer — просто спрашиваем у модели во фьюшоте что она думает по поводу задачи.
2. Chain of Thought — классический CoT без особых изысков.
3. Plan + Direct Solver — генерим моделью план (например, в виде программы на питоне для математики) и промптим модель сказать, что получится в конце этого плана.
4. Plan + CoT Solver — генерим моделью план, а потом по нему идём в режиме CoT, прося модель проговаривать каждый шаг исполнения плана.
5. Plan + Tool Solver — генерим моделью план, а потом передаём его во внешнюю программу, например, в репл питона или SMT-солвер, которые уже выдают ответ.
Получилось, что CoT это такое слабоватое (но универсальное) приближение внешнего солвера, использование которого почти на всех сетах сильно улучшало метрики. Исключения — тыщу раз протёкший в трейн GSM8k и FOLIO, который, видимо, достаточно сложный для моделей.
Какие мы можем сделать из этого выводы:
- Языковые модели в текущем их виде ненадёжны и использование простого
- CoT действительно помогает моделям улучшить метрики на некоторых бенчмарках, в основном, про математику или формальную логику.
- CoT абсолютно бесполезен для фактоидной точности моделей.
Paper: https://arxiv.org/abs/2409.12183
arXiv.org
To CoT or not to CoT? Chain-of-thought helps mainly on math and...
Chain-of-thought (CoT) via prompting is the de facto method for eliciting reasoning capabilities from large language models (LLMs). But for what kinds of tasks is this extra ``thinking'' really...
🔥4👍1
Замеры качества с разными способами промптинга и улучшение метрик с CoT на вопросах с "=" и без него.
🔥2
Ну и не могу вдогонку не высказаться по поводу набившей оскомину o1. OpenAI подают её как первую модель, умеющую рассуждать, особенно впечатлительные юзеры пишут про новую парадигму в ИИ, а я смотрю на это всё и понимаю, что это тупик и маркетинговый трюк, чтобы вырваться на месяц-полтора вперёд на некоторых бенчах и заполучить ещё несколько сотен миллионов долларов инвестиций.
Наверняка мы этого не знаем, но, скорее всего, всё, что они сделали — это нагенерили 100500 рабочих трейсов CoT через Monte Carlo Tree Search, доучили модельку на них с помощью какого-нибудь DPO и дополнительно потюнили на нахождение собственных ошибок. Может быть, ещё руками разметили ветки для областей, где автоматическая верификация цепочек рассуждений невозможна. Не слишком неочевидная мысль, и, как показывает предыдущий пост, довольно ограниченная в мощности.
Юзеры, которым не очень интересна математика или код — те, кто хотят поролплеить или хотят фактологической точности — от o1 плюются, потому что стало дороже и не сильно лучше. Ресёрчеры плюются, потому что после вопросов о том, как o1 работает, им на почту прилетают письма счастья от OpenAI. Дурачки радуются, что наконец то в сфт добавили информацию сколько букв "r" в слове "strawberry" и говорят, что AGI уже рядом и мы скоро заживём счастливо и богато.
Имхо, OpenAI уже не те. Какое-то время назад они перестали быть open, но им это прощали, потому что они регулярно выкладывали крутые статьи или делали потрясающие продукты типа Sora, Advanced Voice Mode или GPT-4, которую аж полтора года никто не мог догнать по качеству. Ну а сейчас у них нет ни прорывного ресёрча, ни прорывного продукта (потому что o1 легко может быть побеждён генерацией программ на питоне и запуском их в репле), только top-1 скоры на Arena Hard и хайп на пустом месте.
— Ну раз ты такой умный, то чё делать дальше то? Есть идеи как продвинуть область или ты только рантить можешь?
Есть. Двигать ресёрч в агентах (потому что решение задач чисто ллмками имеет очевидные ограничения), повышать IFEval (потому что это самое важное для агентов), учить модели пользоваться тулами (чтобы они не пытались обмануть свою токенизацию, считая число букв r в слове strawberry), пилить тру мультиязычность (а не то подобие мультиязычности с просадками в 10-15% на ммлу на чуть менее ресурсных языках не из романской группы), уменьшать галлюцинации (или хотя бы учиться их ловить!), исследовать новые архитектуры, заниматься interpretability, уменьшать стоимость и спарсити моделей через прунинг, учить большие энкдеки и сравнивать их с декодерами, море идей. Но чтобы делать всё и сразу мне недостаточно платят, так что сконцентрируюсь ка я пока что на всём, что начинается с "мульти-", а в свободное время буду рантить в канале.
Наверняка мы этого не знаем, но, скорее всего, всё, что они сделали — это нагенерили 100500 рабочих трейсов CoT через Monte Carlo Tree Search, доучили модельку на них с помощью какого-нибудь DPO и дополнительно потюнили на нахождение собственных ошибок. Может быть, ещё руками разметили ветки для областей, где автоматическая верификация цепочек рассуждений невозможна. Не слишком неочевидная мысль, и, как показывает предыдущий пост, довольно ограниченная в мощности.
Юзеры, которым не очень интересна математика или код — те, кто хотят поролплеить или хотят фактологической точности — от o1 плюются, потому что стало дороже и не сильно лучше. Ресёрчеры плюются, потому что после вопросов о том, как o1 работает, им на почту прилетают письма счастья от OpenAI. Дурачки радуются, что наконец то в сфт добавили информацию сколько букв "r" в слове "strawberry" и говорят, что AGI уже рядом и мы скоро заживём счастливо и богато.
Имхо, OpenAI уже не те. Какое-то время назад они перестали быть open, но им это прощали, потому что они регулярно выкладывали крутые статьи или делали потрясающие продукты типа Sora, Advanced Voice Mode или GPT-4, которую аж полтора года никто не мог догнать по качеству. Ну а сейчас у них нет ни прорывного ресёрча, ни прорывного продукта (потому что o1 легко может быть побеждён генерацией программ на питоне и запуском их в репле), только top-1 скоры на Arena Hard и хайп на пустом месте.
— Ну раз ты такой умный, то чё делать дальше то? Есть идеи как продвинуть область или ты только рантить можешь?
Есть. Двигать ресёрч в агентах (потому что решение задач чисто ллмками имеет очевидные ограничения), повышать IFEval (потому что это самое важное для агентов), учить модели пользоваться тулами (чтобы они не пытались обмануть свою токенизацию, считая число букв r в слове strawberry), пилить тру мультиязычность (а не то подобие мультиязычности с просадками в 10-15% на ммлу на чуть менее ресурсных языках не из романской группы), уменьшать галлюцинации (или хотя бы учиться их ловить!), исследовать новые архитектуры, заниматься interpretability, уменьшать стоимость и спарсити моделей через прунинг, учить большие энкдеки и сравнивать их с декодерами, море идей. Но чтобы делать всё и сразу мне недостаточно платят, так что сконцентрируюсь ка я пока что на всём, что начинается с "мульти-", а в свободное время буду рантить в канале.
👏5🌭4👍3🥴3👎1🤡1💯1