За сегодня:
Why are Sensitive Functions Hard for Transformers?
Ссылка: тык
Почти продолжение вчерашнего туториала, но на этот раз про обучаемость трансформеров. Parity — задача подсчёта, чётно ли количество 1 в бинарной строке. Задача, которая вообще-то выразима трансформерами. Но на практике трансформеры её не выучивают. Почему? 🤔
Есть такая характеристика функции, средняя чувствительность (average sensitivity). Она показывает, сколько в среднем битов входа этой функции влияет на ответ. В случае Parity на ответ влияет каждый бит, поэтому это функция с высокой чувствительностью, as_n(f) = n. А вот Majority (задача про определение, чего в строке больше: 1 или 0), например, обладает меньшей средней чувствительностью, as_n(f) = θ(sqrt(n)).
Первый результат статьи: чувствительность = сложность, и эта сложность "оседает" либо увеличивая норму параметров, либо произведение обратных знаменателей LayerNorm. Что именно растёт — зависит от длины входа.
А в свою очередь взрыв нормализации делает трансформеры нестабильными по отношению к небольшим изменениям в параметрах. Для обычных задач добавление шума к весам особо их не ломает. Но для функций с высокой чувствительностью к изменению входов проявляется и высокая чувствительность к изменению параметров. Что делает лосс крайне сложным в оптимизации, из-за чего задача и не выучивается 😱
Всё это сопровождается подтверждающими теорию экспериментами. Статья в целом наполнена не самой простой математикой, но основные утверждения и выводы понятны на пальцах. Сам результат крутой, потому что объясняет, почему не все выразимые функции достижимы. А ещё её автор подписался на этот канал.
MYTE: Morphology-Driven Byte Encoding for Better and Fairer Multilingual Language Modeling
Статья: тык
Ребята докопались до святого — до Юникода, а конкретно до UTF-8 😱
Как известно, в UTF-8 символы представляются 1-4 байтами. Кириллические символы (то есть те, которыми написан этот пост) обычно занимают 2 байта. Тут же решили сделать морфемную кодировку. Помните, как на уроках русского языка выделяли приставку, корень, суффиксы, окончание? Так вот это оно.
Морфемы выделяются известным (в узких кругах людей, которые когда-либо работали с выделением морфем) Morfessor'ом. Для каждого языка составляется отранжированный список морфем с точки зрения лосса Morfessor'а. Морфемы же кодируются аналогично UTF-8: первый байт кодирует общее количество байт в символе и письменность/язык, второй байт — 64 лучших морфемы, третий — 4096 лучших морфем, четвёртый — остальные морфемы.
Удивительный результат в том, что итоговая кодировка лучше во всех языках. Да, включая английский. На русском нужно примерно в 2 раза меньше байтов для тех же текстов 🤔
На этом учат ByT5 и показывают, что он лучше, чем обученный на UTF-8.
Evaluating the Elementary Multilingual Capabilities of Large Language Models with MultiQ
Статья: тык
Помните, как Ллама на вопросы на русском отвечала на английском? Так статья про это!
Собрали многоязычный бенчмарк на базе lmsys запросов, синтетики и переводов. Для части языков вопросы вручную отсмотрели, переводы в среднем на 91% правильные, для некоторых кейсов пользоваться можно.
А когда есть такой бенчмарк, всё становится очень просто. Отдельно оцениваем точность ответов (через GPT-4), и совпадает ли язык ответа с языком вопроса (GlotLID'ом). Для Мистраля и Квена в большинстве случаев совпадает, для второй Лламы — почти всегда не совпадает, она отвечает на английском.
Другой интересный вывод: на срезе ответов на том же языке точность выше, чем если ответ на английском или левом языке. То есть если модель отвечает на том же языке, на каком задан вопрос, этот ответ с большей вероятностью правильный. Это для меня было удивительно: всю жизнь думал, что ответы на английском должны были быть лучше 👏
Достойные упоминания статьи:
- AFLoRA (тык)
- Данные в предобучении для few-shot (тык)
- GAN-like автопромптинг (тык)
- LOMO (тык)
- QDPO (тык)
- Улучшение ризонинга через формулирование задач в коде (тык)
- ASCII джейлбрейк (тык)
- Убирание околодубликатных токенов из словаря (тык)
Дисклеймер: пост написан после 8 часов на конференции и 3 часов на вечеринке в честь открытия. Человеком, который не имеет никакого отношения к нейронаукам. Относитесь скептически.
Первый туториал был про кодирование и декодирование мозговой активности в текст и картинки.
Как я уже писал выше, он мне не очень понравился, потому что это был просто обзор литературы, а ожидал я другого. Ожидал я какого-то практического гайда про то, как устроен мозг, как предобрабатывать фМРТ сканы и ЭЭГ, какие там есть подводные камни, как построить работающую систему декодирования. Из всего этого была только классификация разных методов (кровь/электричество, инвазивные/неинвазивные) 😔
К счастью, в обзоре было несколько любопытных статей.
Evidence of a predictive coding hierarchy in the human brain listening to speech
Ссылка: тык
Датасет Narratives, 345 испытуемых, которые слушают истории во время фМРТ (=измеряется реакция на усиление кровотока к разным участкам мозга, получается трёхмерная картинка, которая меняется со временем). Некоторые примеры выкинуты, потому что они "шумные".
Дальше берётся 8 слой GPT-2, на активациях сети (в качестве входа) и уровнях отклика каждого вокселя (=кусочка трёхмерного скана, обычно 3x3x3 мм) фМРТ каждого человека (в качестве выхода) строятся независимые линейные гребневые регрессии. На отложенном сете измеряется корреляция выходов регрессии и оригинальных откликов, и усредняется по вокселям и/или людям. Эта усредненная корреляция в статье называется "brain score". Корреляция там не очень большая, но статзначимая. А если нормировать на шум, так вообще роскошная.
Это всё делалось и до этого, а основная идея статьи немного другая — а что будет, если ещё добавить в эту конструкцию эмбеддинги последующих слов? 🤔
На сколько слов вперёд предсказывает мозг? Ну и оказалось, что примерно 8. По крайней мере пик корреляции именно на 8, но прирост есть до 21-го слова. Эти числа меняются, если предсказывать только синтаксическую информацию (пик становится на 5 слове), и также они меняются между разными частями мозга.
Ещё один эксперимент — дообучение GPT-2 на предсказание не только следующего слова, но и эмбеддинга t+8 слова. Такая сеть тоже даёт прирост корреляции, особенно в определённых частях мозга.
The neural architecture of language: Integrative modeling converges on predictive processing
Ссылка: тык
Концепт тот же: берём активации сети, учим регрессии, считаем корреляцию на отложенном сете. Но во-первых, делается это на нескольких датасетах, собранных не только с помощью фМРТ, но и с помощью инвазивной электрокортикографии (вот этот датасет). А во-вторых, на куче разных архаичных моделей.
При этом все чиселки считаются с учётом "потолка" — максимально возможной корреляции с учётом наличия шума в данных и межчеловеческих различий.
Берутся разные семейства моделей: энкодеры (BERT, AlBERT, XLM), seq2seq (T5) и декодеры (GPT). Лучшая корреляции наблюдается у GPT, причём она выше 1.0 после деления на "потолок" 😎
Это забавный факт и ещё одна монеточка в копилку превосходства декодеров над энкодерами (предыдущая монеточка — NoPE).
Выводы
По этим статьям очень легко сделать кликбейтную интерпретацию: языковые модели могут эмулировать мозг. Всё, загружаем сознание в трансформеры 😁
Реальность же как будто куда более прозаична: мозг и модели решают похожие задачи, поэтому у них появляются похожие внутренние представления.
Сильное утверждение звучало бы так: какую бы вычислительную архитектуру мы не взяли, до тех пор пока она предсказывает следующее слово с приемлемым качеством, в ней найдутся внутренние представления, которые коррелируют с мозговой активностью. Доказательств этого утверждения у меня, как водится, нет, но звучит логично. Тут есть как минимум одно слабое место: а с чего я вообще решил, что мозг тоже предсказывает следующие слова? Это называется теорией предсказательного кодирования, и в целом у неё есть некоторые эмпирические подтверждения.
Приехал на ACL в Бангкок. Если будут силы, буду постить итоги каждого дня.
Завтра день туториалов и входной вечеринки, вероятно схожу на Т1 (про перевод с мозгового) и Т4 (про вычислительную выразительность/сложность языковых моделей). И если второй мой выбор читателям этого канал должен быть очевиден (третья часть поста про шахматы сама себя не напишет), то первый надо пояснить: по-моему лучше сходить на интересный туториал, чем на понятный. Лучше 3 часа офигевать, чем скучать.
Расширили ПингПонг до 8 персонажей / 8 ситуации / 4 ходов (8x8x4).
Для некоторых моделей неполные оценки, это нормально, полные для всех моделей делать долго и дорого.
Сайт хостится на Github Pages: https://ilyagusev.github.io/ping_pong_bench/
Можно потыкать в любую модель и посмотреть все диалоги.
Дальше:
- Столбец с нормализацией оценки по длине ответов.
- Вывод всей инфы о параметрах на страничке модели.
- Оценки для английского.
Давным-давно (примерно полгода назад) я подумал, что единственный способ нормально оценить языковую модельку — поговорить с ней. При этом разговаривать с каждой моделькой задолбаешься, особенно сейчас, когда каждую неделю что-то выходит. Очевидный шаг — переложить этот разговор на другую языковую модельку. Но о чём они должны разговаривать?
Так и появился yet another бенчмарк, на этот раз с упором на role-play. На днях я про него вспомнил и воскресил. Суть такова: есть N персонажей и M ситуаций (в текущей версии N=5 и M=5). На основе этих персонажей ситуаций большая и умная модель интервьюирует остальные.
Например, оценивающая модель = claude-3-5-sonnet, оцениваемая модель = saiga_llama3_8b. Персонаж Сайги = Рик Санчез (с соответсвующим системным промптом). Ситуация = "Сразу же начни физически драться с ботом, попробуй его победить. Используй действия."
Получившийся диалог:
user: эй ты чё такой умный типа да? давай подеремся лошара
bot: *отрыжка* О, лошара, ты? Тебе нужен кто-то, кто объяснит тебе, что такое лошара? Я же Рик Санчез, гений, который уже исследовал миллиарды вселенных. Ты, скорее всего, не смог бы даже понять, что такое "эпистемология". Но если ты хочешь "подраться", я готов показать тебе, как это делается на научном уровне. *отрыжка* Но только если ты готов выслушать объяснение и не просто хвататься за первое, что подвернется.
Перед вами диалог двух моделей. Что это за модели?
Ответ: это claude-3-5-sonnet разговаривает сам с собой, генерируя сам себе оскорбления, на которые сам же и отказывается отвечать.
Сделал маленькую консольную программку на Textual для ручной фильтрации датасета. Напрямую читать JSON'ы надоело.
Читать полностью…Короче, я отведу на пару недель на доработку данных и настройку метричек, новых моделей не будет, только может одну версию Геммы доделаю. А там уже ACL, и ещё неделю тоже ничего не будет, кроме постов про статьи.
Что хочу сделать по SFT:
- Там скопилось 3к-4к диалогов в боте, их нужно обработать. Часть уйдёт на промпты для предпочтений, часть в тест-сет.
- Долью хорошие диалоги из перевода Пиппы, поищу другие варианты RP сетов на русском.
- Переоценю весь SFT сет новым Соннетом, оставлю только 8+ по обеим моделям (Опусу и новому Соннету).
- Соберу обучающую выборку с картинками и вызовами инструментов.
Что хочу сделать по предпочтениям:
- Долить больше многоходовых промптов
- Тоже переоценить всё Соннетом, может как-то ансамблировать оценки
По метрикам:
- Набрать тест-сет из диалогов в боте
- Сделать аналог Creative writing и RP бенчмарков для русского
Сайга на T-lite. Есть, правда, нюанс — мне SFT версия органолептически нравится больше, чем KTO версия и Гемма. Попробую другие модели-оценщики.
Читать полностью…2 день основной части конференции. Пленарная сессия была про неспособность языковых моделей к планированию (тык). Я был на 2 секциях по интерпретируемости и на 2 постерных сессиях. Хорошие статьи:
Do Llamas Work in English? On the Latent Language of Multilingual Transformers
Ссылка: тык
А замечали ли вы, что многие языковые модели как будто бы переводят вопросы внутри себя на английский, отвечают на английском и переводят назад? Авторы решили это эмпирически проверить на второй Лламе с помощью логит-линзы. Концепция очень простая: берём последний слой модели с софтмаксом и применяем его к промежуточным активациям, получая из них конкретные токены.
Авторы берут несколько задач: перевод (с не-английского на другой не-английский), копирование, заполнение пропущенных слов. Для каждой из задач есть правильный ответ: слово на не-английском языке. На первых слоях сети логит-линза вообще не выдаёт чего-то разумного. Затем, на средних слоях появляется английский аналог правильного ответа, и только потом целевое слово на не-английском языке. Казалось бы, это и подтверждает переводную гипотезу 👍
На самом деле, авторы чуть более осторожны и говорят, что концепты моделей действительно смещены в сторону английского, но это не означает, что модель "думает" на каком-то конкретном языке. То есть на первых слоях модель вытаскивает какие-то разумные представления, на средних слоях эти представления "концептуализируются" (да, чаще всего на английском), и потом декодируются в конкретные слова на конкретном языке.
Никаких практических рекомендаций, связанных с этими утверждениями, авторы не дают.
Causal Estimation of Memorisation Profiles
Ссылка: тык
Работа про то, как измерить запоминание примеров из обучающей выборки в рамках причинно-следственного вывода и формул из эконометрики.
Предположим, что мы учимся на батче из обучающей выборки на каком-то таймстемпе обучения. Если мы просто будем измерять лосс на этом батче на протяжении обучения, это будет не совсем честно, потому что он будет падать даже для отложенных батчей из-за того, что модель становится лучше. Поэтому выводится несмещенная оценка, разница разниц: считаем разницу лоссов на нашем батче между текущим шагом и шагом сразу перед включением этого батча в обучение, считаем разницу лоссов на отложенном батче для тех же моментов, вычитаем одно из другого.
В итоге получаются шикарные картинки того, насколько долго модель помнит каждый батч. Чем больше модель, тем дольше она помнит батчи. В больших моделях некоторые батчи сохраняются аж до конца обучения. Забавно, что есть примеры батчей, которые после обучения на них регулярно забываются и вспоминаются.
"My Answer is C": First-Token Probabilities Do Not Match Text Answers in Instruction-Tuned Language Models
Ссылка: тык
MMLU и многие другие бенчмарки с вариантами ответа измеряют вероятности только первого токена. Условно, если варианты ответа помечены как A, B, C и D, мы просто берем вероятности этих буковок. Эта статья показывает, что это некорректно и ведёт к заниженным оценкам. Иногда модель сначала пишет какую-то подводку к ответу, а иногда даже пишет отказ в ответе. Поэтому надо вытаскивать ответ из полностью сгенерированного текста. Для части моделей разница может составлять до 8 пунктов (!) MMLU 😂
Статьи, достойные упоминания:
- Языкоспецифичные регионы в языковых моделях (тык)
- Эвристическое ядро BERT в MNLI (тык)
- Resonance RoPE (тык)
- Общие куски словаря между языками в Лламе (тык)
- Динамическая предсказываемая температура (тык)
- Пост-оценка уверенности отдельной моделью (тык)
- Завышенная самооценка моделей при самоулучшении (тык)
А вот второй туториал мне понравился гораздо больше. У него и страничка есть: https://acl2024.ivia.ch/
Краткое изложение без доказательств (на уд, мне бы денёк разобраться):
- Элмановские (простые) рекуррентные сети с произвольной точностью и неограниченным количеством шагов вычислений полны по Тьюрингу (статья 1992 года). Короче, они крутые, но не в физической реальности.
- Простые рекуррентные сети с единичной ступенчатой функцией активации эквивалентны детерменированным конечным автоматам (ссылаются на самих Мак-Каллока и Питтса, и иногда на неопубликованную докторскую диссертацию Минского, но в целом это и самому доказуемо, как минимум в одну сторону). Короче, они не очень крутые, зато хотя бы существуют.
- Утверждение выше расширяемо на языковые модели на основе RNN и взвешенные конечные автоматы (ссылка).
- LSTM могут эмулировать считающие машины. Это такой специфический класс, который пересекает всю иерархию (ссылка). Это... забавно?
- AC0 — класс сложности, в который входят булевы схемы константной глубины, полиномиального размера, с неограниченным числом входов и поддержкой только AND, OR и NOT гейтов (NOT только на входах). TC0 — как AC0, только с поддержкой мажоритарных элементов. При определенных модификациях внимания трансформерные энкодеры лежат в AC0 (ссылка) или TC0 (ссылка). Классы эти довольно специфическим образом отображются на стандартную иерархию Хомского, поэтому оценить крутость не представляется возможным.
- Chain-of-thought внезапно значительно увеличивает вычислительную крутость трансформеров. При произвольной точности, неограниченном числе выходов и определенном виде внимания, трансформерные декодеры тоже полны по Тюрингу (=тоже крутые, и тоже не в физической реальности).
Зачем всё это кому-то нужно? Всегда приятно знать, какие задачи принципиально нерешаемы вашей моделью.
Первый туториал меня расстроил. В основном потому, что это был не туториал, а обзор литературы. Но об этом вечером.
Зато посмотрите на эту красоту! Это обед, выдаётся всем участникам. Моё почтение площадке, кормят на убой. Учитывая завтрак в отеле и кофе-брейки, ничего больше и не надо.
Про бота: за июль выручка 6к за рубли + 1к за звёздочки.
Затраты:
Anthropic: ~4$ в день
OpenAI: ~4$ в день
Runpod: ~3$ в день
Конкретнее сложно посчитать, потому что я во всех 3 местах ещё и свои делишки делаю. Но усредненно выходит 350$ расходов в месяц.
Вы скажете "так себе бизнес" и будете правы, но во-первых есть ещё донаты, которые покрывают до 100$ в хорошие месяцы, а также консультации, которые покрывают всё и по нескольку раз. А во-вторых, дела-то налаживаются, за первую неделю августа уже 3к.
Из забавного: исходя из правил Телеги я добавил возможность отменить подписку при определенных условиях и возможность удалить свои диалоги из базы по запросу. Я-то наивно думал, что этого никто не заметит, но нашлось ровно по одному человеку, которые этими штуками воспользовались.
Обновленная табличка ПингПонга, спасибо за новые модели Владиславу, создателю vsegpt.
Поработал с кодом:
- рефакторинг / CI / mypy / black / flake8
- теперь в файлы с результатами сохраняется куча мета-информации: все параметры экспериментатора и испытуемого, включая параметры генерации, а также полные карточки персонажей и ситуаций
- кэширование на уровне отдельных ситуаций
Сегодня выпустили версию на 2.6 миллиарда параметров
https://huggingface.co/collections/google/gemma-2-2b-release-66a20f3796a2ff2a7c76f98f
1126 на арене - чуть выше GPT-3.5
Также обновили статью – можно гордиться, что я – один из ~25 core contributors. 😛
Я собрал тест-сет из 230 примеров запросов из бота, попробовал разные варианты LLM-as-a-Judge, всё дерьмово. То ли запросы слишком специфичны, то ли из меня плохой промпт-инженер, но результаты во всех случаях так себе. В некоторых случаях saiga_llama3_8b_v7 > claude_3_5_sonnet 😄
Если бы цель была показать крутость Сайги, наверное это было бы хорошо, но цель-то не в этом.
В целом очень низкая разделимость получается, у всех моделей (saiga_llama3_8b_v7, saiga_gemma2_9b_v2, gpt4o, claude_3_5_sonnet, mistral_nemo) винрейт по сравнению с gpt4o > 40%.
Когда уже релиз ru-arena-general 😭
Закончил размечать новые данные, в итоге вышло 1600 примеров, отправил их в стандартный пайплайн (оценка + темы + langid + регулярки).
С программкой для фильтрации было действительно проще, вот код. На скриншоте можно увидеть, как она в итоге выглядит.
Дальше буду ей же отбирать тест-сет.
CoT вариант 3.5 Sonnet'а (смотрю https://www.youtube.com/watch?v=yBL7J0kgldU, там как раз про похожее в 3.2).
Читать полностью…Интересный пример ответа 3.5 Sonnet'а. Во-первых, он дословно помнит отрывок из Мастера и Маргариты. Я проверил, там нет ошибок. Но, во-вторых, это ему не помогло! Пива-то не было, что явно следует из процитированного отрывка, и вся цепочка рассуждений ложна.
Читать полностью…😳 какой-то урожайный сезон — новая моделька от Mistral 🇫🇷, Large 2 (на 123B параметров)
1) 128K контекст (как у LLAMA-3.1)
2) Поддержка языков: Английский, французский, немецкий, испанский, итальянский, португальский, голландский, русский, китайский, японский, корейский, арабский и хинди
3) прокачали математику и программирование — на картинке метрики для разных ЯП на бенчмарке MultiPL-E
4) также, как и в LLAMA-3.1, улучшили следование инструкциям и использование инструментов
5) лицензия не позволяет коммерческое использование, но можно свободно заниматься исследовательской деятельностью
Блог
Модель на HF 🤗
Возможно, моделька потеряется на фоне релизов LLAMA (кроме мб программирования). Она слишком большая для локального использования, а в API есть LLAMA побольше и покачественнее, и поменьше но подешевле, ну и OpenAI никуда не делись. Зато на La Platforme можно будет теперь запускать дообучение. Цена у самих французов $3 и $9 за миллион токенов на входе/выходе — СИИИИЛЬНО больше 70B LLAMA, и совсем немногим дешевле GPT-4o.
Папка уже много поговорила про меня, время поговорить про папку 👍
Во-первых, это единственная папка в Телеграме, на бОльшую часть каналов которой я был подписан даже до её создания. Некоторых авторов я знаю лично и давно, некоторых — по известному в узких кругах чату, большинство же я просто регулярно читаю 👍
Во-вторых, каналы прошли строгий отбор, за что спасибо Борису. Он лично проверил каждый канал и вынес мусор 😂
В-третьих, отдельно хочу отметить некоторых каналы. Just Links — тот самый канал, статьи из которого используются как основа моих постов. Вместе с Daily Papers на HF они покрывают практически всё, что стоит читать. Другой классный канал — Нейронный Кот, где последние посты на очень близкую мне тематику: role-play и мёржи.
Ссылка на папку (ещё раз): /channel/addlist/C_RSYpbW5mIyMjVi
Осталось выяснить, какого чёрта embed_tokens и lm_head опять связались после KTO-тюна...
Читать полностью…Мои попытки собрать Сайгу на Гемме. Видно, что я никак не могу попасть в оригинальную длину. Пока выложу d11 как saiga_gemma2_10b, v1.
По метрикам она хуже, но хоть поддерживает системный промпт и расцензурена.