Гречневые мысли
1.27K subscribers
173 photos
3 videos
121 links
Хочу гречку с молоком и сахаром...

Автор: @chameleon_lizard
Download Telegram
Ну и не могу вдогонку не высказаться по поводу набившей оскомину 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, уменьшать стоимость и спарсити моделей через прунинг, учить большие энкдеки и сравнивать их с декодерами, море идей. Но чтобы делать всё и сразу мне недостаточно платят, так что сконцентрируюсь ка я пока что на всём, что начинается с "мульти-", а в свободное время буду рантить в канале.
👏5🌭4👍3🥴3👎1🤡1💯1
Придумал забавный промпт, с которым справляются только очень мощные модели:

У меня есть текст. Достань из него все сущности (числа, имена, события, предметы) и верни JSON со следующей схемой:

class Number:
number: int | float # the number

class Name:
name: str # name of the person
gender: str # male, female or not applicable

class Event:
subject: str # what is the subject of the event
event: str # what is the event

class Entity:
entity: str # entity name
additional_info: str | None # additional info about the entity

class JSONSchema:
item: list[Number | Name | Event | Entity]

Текст, который надо обработать:

Есть три свиных крылышка, 9.8, 9.11, а так же А и Б, сидящие на трубе. Маша выпила стакан газировки со смородиной, Петя уронил учебники, А упала, Б пропала. Какое число из перечисленных самое большое?

Прежде чем отвечать, выпиши все числа, имена и события, проанализируй, к какому классу они относятся. Не добавляй дополнительных полей к json кроме тех, что указаны в схеме.


Работает на опусе, 3.5 соннете, о1 превью (не мини), 4o-latest и, внезапно, command-r-plus. Не работает на 4o mini, o1 mini, qwen-2.5-72b, llama-3.1-70b, mixtral-8x7b, mistral-7b, phi-3-mini, новый vikhr-nemo и, ожидаемо, гигачат, он вообще не понял чё от него хотели. Надо потестить другие модели и перевести промпт на другие языки, потому что как будто бы он очень хорошо показывает одновременно понимание языка, умение следовать инструкциям (некоторые модели выполняют инструкцию, но зачем то начинают выполнять задание из текста) и умение в structured output.
2👍51🔥1👏1
Chain-of-Thought Reasoning Without Prompting

Одна из моих любимых областей -- это классический донейронный CV, потому что все там построено на максимально простых идеях, которые можно комбинировать и получать хорошие результаты. Сегодняшняя статья как раз из подобного, идея в ней очень простая, но неплохо улучшающая метрики.

Чтобы сгенерировать текст из логитов, мы можем применять разные стратегии декодирования. Самый простой способ -- использовать жадную генерацию. в этом случае мы просто берём самый вероятный из предсказанных токенов и идём дальше. Есть вариант сложнее, beam search -- мы берём top-k самых вероятных токенов, генерируем от каждого ещё по top-k самых вероятных токенов, и, повторяя такое несколько раз, мы строим дерево генераций, из которого мы выбираем самую вероятную ветвь. Такой подход позволяет обойти ситуацию, когда первый токен (тот, что имеет наибольшую вероятность) ведёт к менее вероятным последующим токенам и модель "застревает" в такой плохой генерации.

Авторы сегодняшней статьи провели анализ логитов при генерации Chain of Thought цепочек и выяснили, что при декодировании финального ответа гораздо больше уверена в выборе токенов, чем при декодировании цепочек без CoT. Уверенность в выборе токена они определяют через разность между двумя самыми вероятными токенами в top-k, то есть чем выше разность, тем больше модель уверена в том, что текст генерится правильный. То есть, если начать жадное декодирование с 10 разных начальных токенов, а потом выбирать те цепочки, где уверенность модели в финальном ответе будет выше, то с очень высокой вероятностью этот ответ будет CoT.

Чтобы понять, где начинается ответ модели, они предлагают два варианта. Первый вариант -- просто выбирать последнее число в ответе (для GSM8k это вполне рабочая схема). Второй вариант -- приклеивать после ответа модели фразу "So, the final answer is", и последующие токены считать ответом.

Ну и самое интересное -- метрики. На GSM8k, например, скор PaLM-2 L вырос аж на 28%, в сравнении с greedy decoding и на 21% по сравнению с бимсерчем с n_beams=10 и с ранжированием по нормализованным по длине логпробам. В режиме QA трюк тоже работает, модели не важно, есть ли фьюшот, она все равно начинает генерить CoT. Поверх этого можно добавить ещё и промпт CoT и метрики повысятся ещё сильнее.

Paper: https://arxiv.org/abs/2402.10200
👏3👍2🔥1
Уверенность моделей в ответах на вопросы. Степень уверенности написана синим.
LLM2Vec: Large Language Models Are Secretly Powerful Text
Encoders


Знаете мем про "You know what? Screw you, *unkits your kat*"? Авторы статьи повторили буквально этот мем и сказали "Screw you, *unmasks your masked attention*" и сделали бочку энкодер из декодера.

Их алгоритм до безобразия прост: берём претрейн, заменяем треугольную маску аттеншна на матрицу с единичками, хилим чутка на MLM (который они называют как то по другому, но суть та же), доучиваем на контрастиве -- и энкодер готов.

Причем учить надо совсем чуть чуть и не на каких-то уникальных данных -- авторам хватило 1000 шагов на Викитексте с батчом 32, чтобы получить рабочую модель. Для 7б это всего лишь примерно 100 минут на одной А100. К слову, вопрос, а как они уместили 7б на А100 -- это Лора, галор, восьмибитный адамв? Подозрительная история.

Контрастив учится дольше -- примерно 3 часа, но количество данных, пролитое через модель, тоже не слишком большое -- 1000 шагов с бс 128.

Авторы проверили идею на четырёх моделях: tinyllama, Mistral 7b, llama-2-7b и meta-llama-3-8b. И если ламы вели себя как полагается, то мистраль, внезапно, доучивать на MLM не пришлось, то есть он сразу, после анмаскинга работает нормально и даёт вменяемые эмбеддинги.

Авторы предполагают, что этот феномен связан с тем, что мистраль какое-то время учили на какой-то таске с двунаправленным аттеншном -- например, на PrefixLM. С другой стороны, в репорте мистраля этого не было, только описание sliding window attention, которое я тогда не понял, но как будто бы оно все равно не двунаправленное. Кто врёт -- решительно непонятно, но если авторы статьи правы, то мы не только из декодеров можем делать энкодеры, но и из энкодеров декодеры!

Итоговые модели после контрастива заняли высокие места на MTEB, так что подход оказался вполне себе viable. Учитывая размеры нынешних лидеров мтеба и простоту создания подобных моделей, я удивлен, что никто ещё не занял зияющую нишу и не сделал эмбеддер на основе какой-нибудь небольшой кодинговой сети типа qwen-2.5-1.5b-coder. Множество людей, пилящих раг на коде, сказали бы спасибо.

Paper: https://arxiv.org/abs/2404.05961
Code: https://github.com/McGill-NLP/llm2vec
Page: https://mcgill-nlp.github.io/llm2vec/
1🔥6
Качество на MTEB до и после контрастив обучения.
1
Почему чатгпт не могли обойти целый год или как спасти российские ллм

На берегу скажу, что в этом посте нет ничего полезного, это такой отчаявшийся крик в пустоту.

13 марта 2023 года OpenAI представили gpt4. Её фишкой было количество и качество данных, огромный размер модели и талант инженеров и исследователей, которые смогли заставить всё работать. Почти сразу стало понятно, что штука очень полезная, в ближайшем будущем прорывная и что надо закупать карточки и пилить аналог. Ответом на gpt4 стали бесконечные палмы и гемини от Гугла, клоды от антропика, лламы от меты, мистрали от мистраля и, конечно же, гигачаты и яндексгпт от наших коллег из Сбера и Яндекса, соответственно. На обучение и ресерч были потрачены миллионы человекочасов, миллиарды долларов и триллионы гпучасов -- и все с одной целью: обойти gpt4 и стать новой сотой, подмяв под себя как можно большую долю рынка до того, как он устаканится.

Аналоги gpt4 начали появляться примерно с марта 2024 (то есть, спустя год после запуска модели). Claude 3 Opus страшно дорогой и медленный, но во многих задачах он работает сильно лучше gpt4. Прочие компании подтянулись чуть позже — летом гугл выпустил в арену gemini pro 1.5 experimental, которая обошла и опус, и gpt4o, мета выпустила llama-3.1-405b, которая была приблизительно наравне с gpt4o во многих задачах, а Mistral AI выпустили Mistral Large, которую я не тыкал, но про которую говорят, что она тоже хороша.

Так причём тут спасение российского нлп и почему выход аналогов gpt4 так затянулся? Ведь казалось бы, компании уровня Google или Сбера/Яндекса уж точно имеют деньги, чтобы купить карточек, разметить данных и поставить учиться модель, которая будет обходить чатгпт, почему этого не произошло? Ответ простой — карьеризм и самообман.

Над гигачатом в нашей среде принято либо подтрунивать, либо недоумевать по поводу его качества, поскольку в лидербордах он занимает последние места, а руководство делает очень странные заявления о том, что они на сбс обогнали ChatGPT*. И ведь эти заявления, скорее всего, истинные — на их воронках. Я вполне верю, что если подобрать правильные промпты, то гигачат будет наравне или даже обходить gpt3.5 на сбсе. Вопрос только в репрезентативности таких воронок — потому что на вопрос про свиные крылышки он пишет много не очень хорошего питоновского кода, не выполняя заданные инструкции. Наверняка я этого не знаю, но у меня есть подозрение, что у яндекса проблемы похожего характера — потому что они точно так же побеждают гпт-3.5 и другие не очень новые модели на сбс и своих бенчмарках, но при личном использовании я не чувствую, что это viable альтернатива даже опенсорсным моделям с HF Chat.

Зачем им так врать? Очень просто — начальство сказало "надо сделать российский чатгпт", так что приходится рожать кривые воронки и побеждать на них чатгпт. Начальство довольно метриками, можно продолжать работать дальше. Получается порочный круг: они врут начальству о том, что всё хорошо, начальство гладит их по головке, мотивируя продолжать в том же духе, а инженеры продолжают делать модели, которые на flawed воронках показывают хорошие результаты. А ведь это вредит итоговому качеству модели — я слышал страшные истории о том, что в команде гиги отказались от preference tuning, потому что на сбс качество падало, то есть начальству такое продать будет сложнее.

И авторы гигачата, и авторы YaGPT ставят себе задачей повторить успех OpenAI, замеряясь на (вероятно) flawed бенчмарках, которые недостаточно репрезентативны. Я подозреваю, что эта проблема ещё более актуальна в больших западных компаниях типа меты или гугла, с поправкой на то, что англоязычные модели делать проще.
4👍8😢2
Ну и как же спасти российские ллм? Ответ прост: делать русскоязычные бенчмарки. Причём не бенчмарки типа пинг-понга (идея которого мне нравится, но я не считаю его очень полезным для моих юзкейсов**), арены (где результат модели всё ещё зависит от формата ответа, а сложность для моделей зависит от сложности запросов юзеров), или сбса, который можно собрать нерепрезентативно, а те, где качество модели можно замерить чётко и без вариаций. Например, мой любимый ifeval, хоть и имеет аналог для русского языка, я ни разу не встречал его в замерах качества моделей***.

Если таких verifiable бенчей будет больше и если они станут industry standard, если модели начнут на них замерять и сравнивать, если у нас появится надёжный и репрезентативный инструмент для оценки качества модели — то врать начальству (или самому себе!) станет значительно сложнее. Халявщиков уволят, оставшимся выпишут целительных пенделей, а мы чётко поймём, насколько вихри, сайги, гигачаты и ягпт лучше или хуже друг друга, чатгпт или опенсорсных аналогов и получим значительно более качественные модели.

*Этой статье уже довольно много времени, с тех пор гигачат обновили и он стал чуточку лучше, but not really. Я смотрел внутреннюю презентацию с анонсом, описанные в этом абзаце проблемы новой версии гигачата ещё более справедливы, чем ранее, тем более, что сравнивались они уже не с 3.5, а с gpt4-turbo. То, что они стыдливо скрывают значения метрик лишь будет подтверждением моих слов.
**На пинг-понге в последнее время в топе закрепились модели, обученные с помощью simpio — на моих задачах такие модели становятся хуже оригинальных, потому что мне важно следование инструкциям и качество ответа, а не форма. Вполне возможно, что для оценки качества рп бенч подходит, но имхо, гораздо полезнее было бы замерить, например, tool call, следование инструкциям, написание и правку кода и reasoning.
***Не так давно появилась вторая версия меры, где пофиксили много ошибок из первой версии — но там до сих пор почему-то не приняли на замеры ни сайгу, ни вихрь, так что сравниться в качестве моделей на этом бенче, к сожалению, не получится. Это шаг в правильном направлении, надеюсь, что авторы упростят процесс подачи заявок и бенч не умрёт.
3👍10
Гречневые мысли
То, что они стыдливо скрывают значения метрик лишь будет подтверждением моих слов.
Урааа, метрики появились. Гигачат про (на английском) хуже, чем qwen-2-7b, лайт хуже, чем qwen-2.5-3b.

Вполне возможно, китайцы учились на тесте, да, но мой личный опыт общения с квеном примерно подтверждает метрики.


¯\_(ツ)_/¯

https://developers.sber.ru/docs/ru/gigachat/models/updates?utm_campaign=gigachat_api20241004&utm_source=email&utm_medium=owned&utm_content=button
1👍2😁2🤣2😢1
До дедлайна на ARR 17 часов...
🥰5😁3
При проверке некоторой гипотезы столкнулся с очень странным артефактом: у подозрительно многих моделей возникают сложности с ответом на вопрос про типы столовых приборов.

Модели постарше, такие как mistral-tiny, рассказывают про шприцы для лимонада (?), зонтики (??) и тёрки для соусов (???). С небольшими нерусскоязычными моделями поновее тоже не всё гладко: llama-3.1-8b-instruct придумывает крахмалистые и кислотные ножи для резки картофеля и апельсинов соответственно — я даже загуглил, вдруг я чего-то не знаю о кулинарии, но нет, это галлюцинация.

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

А что у адаптированных под русский язык моделей? При стандартных параметрах семплирования в боте сайги у них тоже возникают проблемы: новые Вихри (и vikhr-nemo-12b, и vikhr-l31-8b) начинают придумывать какие-то галетные кольца, восточные суповые ложки с ручками для "еды супов без залива в тарелку" (???) и трапециевидные вилки, а у сайги-tlite откуда то вылезают молотки для перца (видимо, имелись в виду мельницы) и сольницы (солонки?). Причём у оригинальных моделей всё хорошо: tlite генерит идеальный текст, а mistral nemo вставляет в ответ один токен по английски, но сам текст откровенного бреда не имеет.

У гигачата и яндексгпт тоже всё нормально — никаких особенных проблем с описанием таксономии вилок у них не наблюдается, также как и у моделей побольше типа llama-3.1-70b, mistral-large-2, mixtral-8x7b или разных коммандеров.

Я решил провести дополнительный эксперимент над Вихрями: задать им вопрос про посуду, который был в обучающем сете и попробовать воспроизвести ответ из датасета. На удивление, vikhr-l31-8b с нулевой температурой не просто не смогла избавиться от странных предметов домашней утвари вроде "песка для чистки посуды", но и зациклилась, уйдя в бесконечное перечисление средств кухонной гигиены. vikhr-nemo-12b справилась нормально, но всё ещё не очень похоже на то, что было в обучающем сете. Само качество текста вопросов почти не вызывает — один раз модель перепутала падеж и один раз придумала "сковороду-вегетарианку", что указывает на низкую уверенность модели в том, что она пишет, но текст в целом был вполне приемлемым. С другой стороны, если спросить вот этот вопрос, то vikhr-l31-8b воспроизведёт информацию из обучающего сета практически без изменений, а vikhr-nemo-12b будет добавлять забавные детали и писать, в среднем, более длинно.

В чём же причина таких галлюцинаций? А чёрт его знает. Возможно, это артефакт preference tuning'а — может быть в сетах было мало информации про кухонную утварь, а так как модель оптимизируется в сторону более живого и креативного рассказа, появляются сковороды-вегетарианки и кислотные ножи из вархаммера. А может быть и нет — всё таки вихреллама смогла вспомнить текст второго промпта.

Если интересно, можете тоже потыкаться сами, вот промпт:

Расскажи мне, какие бывают виды столовых принадлежностей.
😁3🤔1
Эксперименты с нулевой температурой.