gonzo_ml | Unsorted

Telegram-канал gonzo_ml - gonzo-обзоры ML статей

21999

Авторы: Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика. Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.

Subscribe to a channel

gonzo-обзоры ML статей

Отдельный профит от такого подхода для обработки длинных документов — последовательность концептов как минимум на порядок короче последовательности токенов, а значит легче обработать трансформером с фиксированным окном контекста (ну либо больше влезет).

До некоторой степени LCM напоминает Лекуновскую JEPA (https://openreview.net/pdf?id=BZ5a1r-kVsf), которая тоже предсказывает репрезентации следующих наблюдений в пространстве эмбеддингов. Но JEPA фокусировалась на выучивании такого пространства в режиме self-supervised, а LCM фокусируется на точном предсказании в уже существующем пространстве эмбеддингов (но срастить эти два подхода, наверное, тоже просится).

Итак, работаем в пространстве эмбеддингов, для обучения LCM нужно подготовить текстовый датасет и сконвертировать его через SONAR в эмбеддинги, один на каждое предложение. На практике это не так просто, точная сегментация не всегда легка из-за ошибок в датасете или специфического форматирования. Кроме того длинные предложения могут быть слишком сложны для кодирования/декодирования через SONAR, качество пострадает. В итоге для разбиения на предложения выбрали Segment any Text (SaT, https://github.com/segment-any-text/wtpsplit) с дополнительным ограничением на длину сегмента, всё длиннее 250 символов (это число мы ещё встретим) разбивается, этот метод называют SaT Capped.

LCM должна conditionally на основе контекста генерить непрерывный эмбеддинг. Это отличается от работы LLM, где надо выдать распределение вероятности по дискретным токенам словаря. Прямолинейный подход к снаряду был бы обучить трансформер генерить эмбеддинг с objective минимизации MSE лосса. Это будет называться Base-LCM. Это не так просто, потому что у заданного контекста может быть много подходящих, но семантически разных продолжений, это видно на примере генерации картинок диффузионками, из одного промпта получаются довольно разные изображения. И в целом в той области как раз много наработок по выучиванию conditional probability distributions для непрерывных данных, поэтому другой логичный вариант на попробовать — это диффузионная модель, Diffusion-based LCM. Наконец ещё один вариант — квантизация и возврат к задаче генерации дискретных элементов, Quantized LCM.

Пройдёмся подробнее по вариантам LCM.

Base-LCM выступает бейзлайном, это стандартный декодер трансформера, переводящий последовательность предшествующих концептов (эмбеддингов предложений) в последовательность будущих. Трансформер окружён со стороны входа и выхода двумя простыми сетями, PreNet и PostNet, занимающимися нормализацией/денормализацией и проекцией SONAR эмбеддингов в размерность модели и из неё обратно. Обучается на semi-supervised задаче предсказания следующего концепта, минимизируя MSE loss относительно ground truth. К документам обучающей выборки добавляют суффикс “End of text”, что даёт возможность научиться генерить документы переменной длины. В инференсе один из стоп-критериев проверяет близость сгенерённого эмбеддинга эмбеддингу этого суффикса и останавливает генерацию, если близость выше заданного порога; другой стоп-критерий смотрит на косинусную близость между текущим и предыдущим эмбеддингом и останавливает, если она выше порога (оба порога установлены в 0.9).

Diffusion-based LCM тоже авторегрессионно генерит концепты, один за раз, делая заданное количество denoising steps для каждого генерируемого концепта. Использует classifier-free diffusion guidance. Есть версия модели с одним стволом (One-Tower) и двумя (Two-Tower). В первом случае это один ствол трансформера, делающий всё. Во втором отдельный ствол (contextualizer) занимается кодированием предшествующего контекста, а второй (denoiser) генерит новый эмбеддинг концепта и через cross-attention смотрит на контекст из первого ствола.

Quantized LCM использует Residual Vector Quantization и далее работает аналогично обычным LLM, предсказывающим дискретные юниты. Здесь можно использовать температуру, top-p/top-k. Архитектуру стараются собрать максимально похожую на Diffusion-based LCM, чтобы было легче сравнивать.

Читать полностью…

gonzo-обзоры ML статей

Jeff Dean с апдейтом по теме ML for Systems, доклад на последнем NeurIPS.

https://x.com/nrehiew_/status/1868672595106865576

ML for Systems — это хорошая тема, она про применение ML в различных технических системах, где до этого рулили эвристики. Компиляторы, дизайн чипов, оптимизация инференса, и прочее, и прочее. В целом мы уже начали вкушать плоды этих трудов, свежие чипы типа TPU, включая те, что в телефонах, оптимизация работы Ютуба, ускоренный инференс моделей — ко всему этому ML уже приложился, но всё равно это только начало.

Читать полностью…

gonzo-обзоры ML статей

То же самое в формате поста, где проще вставить картинки в релевантные места текста.

https://gonzoml.substack.com/p/blt-byte-latent-transformer

Читать полностью…

gonzo-обзоры ML статей

Entropy Patching -- это более интересный вариант и по сути data-driven подход, использующий оценки энтропии для определения границ. Обычно первые байты в словах сложнее всего предсказать и их энтропия максимальна, дальше она падает, потому что всё понятно. Для получения оценок энтропии обучают маленькую побайтовую авторегрессионную языковую модель на том же корпусе, что и сам трансформер, и затем через её вероятности считают энтропию следующего байта. Дальше, надо как-то поделить последовательность на токены. Например, можно определять границы токенов по превышению энтропией заданного глобального порога. Другой метод определяет высокую относительно предыдущей энтропию, то есть точки, в которых ломается примерно монотонное снижение энтропии (по сути дельта энтропий двух последних символов больше заданного порога). Это всё можно делать лёгкой предобработкой в дата лоадере.

Между патчами и токенами (например, BPE) есть существенная разница в том, что в случае токенов LLM не имеет доступа к побайтовым фичам (и в частности не знает, сколько там букв R). BPE также не удовлетворяет свойству инкрементальности патчинга, то есть он не должен зависеть от будущих частей последовательности. BPE может токенизировать один и тот же префикс по-разному, в зависимости от того, что находится дальше. Для BLT это не подходит, трансформер должен в моменте решить, есть ли на текущем байте граница патча или нет.

Теперь собственно к BLT.

Latent Global Transformer -- это обычный большой и тяжёлый авторегрессионный трансформер, который маппит последовательность репрезентаций входных патчей в последовательность репрезентаций выходных патчей. Эта модель использует block-causal attention mask, которая ограничивает внимание позициями до (и включая) текущего патча в текущем документе. В этой модели и расходуются основные FLOPS.

Local Encoder -- это лёгкий трансформер с гораздо меньшим числом слоёв, который маппит последовательность входных байт в репрезентации патчей. Особенность этого энкодера в том, что после каждого трансформерного слоя там стоит cross-attention, задача которого пулить байтовые репрезентации в репрезентации патчей.

Трансформерный слой использует local block causal attention mask, где каждый байт может “смотреть” на окно фиксированного размера из предшествующих байт (пересечения границ патчей допустимы).

Байтовые эмбеддинги довольно хитрые, аугментируются хешированными эмбеддингами. Для каждого байта считаются n-граммы от предыдущих байт (байтграммы) для n=3..8, через хэш-функцию маппятся в таблицу эмбеддингов фиксированного размера, и добавляются к эмбеддингам байтов перед тем, как отправиться в локальный энкодер. Кроме n-граммных эмбеддингов пробовали также frequency based.

Encoder Multi-Headed Cross-Attention очень похож на входной кросс-аттеншн Perceiver (/channel/gonzo_ML/545, /channel/gonzo_ML/700), только latents теперь не фиксированный набор, а соответствуют репрезентациям патчей и смотрят только на байты из данного патча. Query вектора соответствуют патчам, а Key/Value -- байтам, поэтому и cross attention.

Local Decoder -- тоже лёгкий трансформер, который декодирует последовательность репрезентаций патчей в выходные байты. Предсказывает последовательность выходных байтов как функцию уже декодированных байтов и берёт на вход скрытые репрезентации байтов из локального энкодера. Здесь тоже чередование трансформера и кросс-аттеншна (теперь в качестве Q репрезентации байтов, а K/V -- патчей), и начинается с кросс-аттеншна.

Взяли датасеты от Llama 2 на 2T токенов и новый BLT-1T на 1T. Энтропийная моделька это трансформер на 100M параметров, 14 слоёв, 512 размерность скрытого состояния и внимания со скользящим окном в 512. Трансформерные блоки в целом следуют рецептам Llama 3.

Обучали семейство моделей размером 400M, 1B, 2B, 4B и 8B.

Читать полностью…

gonzo-обзоры ML статей

o3 на 175 месте в Codeforces, то есть примерно 175й сильнейший программист во всем мире.

Это лучше 99,9% участников рейтинга (а все из них — это профессиональные программисты).

Живые участники рейтинга, у которых с 1 по 100 место — это люди, которые выигрывали золотые медали по информатике и продолжали профессионально участвовать в соревнованиях после школы/универа.

Читать полностью…

gonzo-обзоры ML статей

И ARC challenge тоже большой привет!

Читать полностью…

gonzo-обзоры ML статей

Ждём o3 в следующем году (имя o2 решили пропустить). Разработка софта явно изменится. Да уже изменилась, но это только начало.

https://openai.com/12-days/

Читать полностью…

gonzo-обзоры ML статей

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

У канала есть Патреон (https://patreon.com/GonzoML), и я также завёл Boosty (https://boosty.to/gonzoml), если это более удобно.

Спасибо за то, что вы с нами :)

Читать полностью…

gonzo-обзоры ML статей

Smarter, Better, Faster, Longer: A Modern Bidirectional Encoder for Fast, Memory Efficient, and Long Context Finetuning and Inference
Benjamin Warner, Antoine Chaffin, Benjamin Clavié, Orion Weller, Oskar Hallström, Said Taghadouini, Alexis Gallagher, Raja Biswas, Faisal Ladhak, Tom Aarsen, Nathan Cooper, Griffin Adams, Jeremy Howard, Iacopo Poli
Статья: https://arxiv.org/abs/2412.13663
Модели: https://huggingface.co/collections/answerdotai/modernbert-67627ad707a4acbf33c41deb
Пост: https://huggingface.co/blog/modernbert

Забыли уже про BERT на фоне всех новомодных LLM? А он жив! Answer.AI и ко выпустили обновлённый и ускоренный по современным стандартам ModernBERT.

В двух словах напомним тем, кто забыл. Оригинальная архитектура трансформера включает в себя энкодер и декодер, и первые модели 2017-го года были такими (характерный пример -- семейство T5, наследовавшее оригинальный код первого трансформера). Потом в 2018-м случился ImageNet moment в NLP с появлением берта (https://arxiv.org/abs/1810.04805), который был энкодером трансформера. А с появлением GPT (которая является декодером) многие массово перешли на чисто декодерные архитектуры, которые в плане генеративности дают сильно больше гибкости, чем энкодерные архитектуры. Но для разных задач классификации, разметки последовательностей и генерации эмбеддингов энкодерные берт-подобные архитектуры оставались и остаются популярны в узких кругах.

По тем временам берт был большим (110M и 340M параметров для base и large моделей соответственно), но на фоне нынешних 100B+ моделей это ничто и отлично влезает на девайсы и сервера без 100500 GPU. Тем более, что улучшений с тех пор появилось множество, RoBERTa (/channel/gonzo_ML/110), различные дистилляты (/channel/gonzo_ML/119) типа DistillBERT, интересные решения почти в духе ACT, Adaptive Computation Time (/channel/gonzo_ML/90) типа ALBERT (/channel/gonzo_ML/131) и наконец DeBERTa (/channel/gonzo_ML/459). Ну и много другого ещё было. И вот теперь ModernBERT!

Добавлено множество архитектурных улучшений:
* убирание bias-термов из линейных (кроме выходного) и layernorm слоёв
* позиционные эмбеддинги RoPE (rotary positional embeddings)
* pre-normalization с layernorm
* GeGLU активации

Кроме этого реализованы улучшения по части эффективности:
* Alternating Attention с чередованием global и local attention (каждый третий слой с global, остальные с локальным скользящим окном на 128 токенов)
* Unpadding с отказом от padding токенов, на которые тратились ненужные вычисления
* Flash Attention 3 (https://arxiv.org/abs/2407.08608)
* Компиляция через torch.compile, дало никогда-не-лишних 10% улучшения в throughput

Архитектуру слоёв подбирали чтобы эффективно использовать типовые GPU (серверные NVIDIA T4, A10, L4, A100, H100 и консьюмерские RTX 3090 и 4090, с фокусом на инференс), получили base и large модели c 22 и 28 слоями и 149М и 395M параметров (то есть слегка побольше оригинала).

Обучен на 2T токенов (смесь английского и кода), размер контекста 8192 (у Берта и Роберты было всего 512). От старого токенизатора (wordpiece) отказались, взяли BPE, модифицированную версию от OLMo (/channel/gonzo_ML/2437). Старые токены типа [CLS] и [SEP] для совместимости остались.

Обучают на Masked Language Modeling (MLM), от Next-Sentence Prediction (NSP) как и во многих других вариациях (типа RoBERTa) отказались. Оптимизатор StableAdamW, modified trapezoidal Learning Rate schedule (aka Warmup-Stable-Decay, WSD). Batch size scheduling от малых батчей до более крупных. Инициализация весов из Megatron для base и Phi для large. Первые 1.7T токенов обучают на длине контекста 1024, потом на оставшихся 300B расширяют до 8192.

Наверняка кто-то уже строил филогенетическое дерево эволюции бертов (и вообще), было бы интересно посмотреть кто от кого что унаследовал и как идеи переносились. Никто не видел такого?

Читать полностью…

gonzo-обзоры ML статей

Спасибо множеству перелётов, прочитал наконец книгу Chiara Marletto (https://www.chiaramarletto.com/) “The Science of Can and Can’t”, что по сути является единственным описанием в виде популярной книги её и Дэвида Дойча Constructor Theory (https://www.constructortheory.org/). Кроме книги, конечно, есть статьи и сколько-то выступлений, так что если вы читали статьи, то наверное, нового не будет.

Дойч крутой, конечно, мне его читать очень интересно. Кроме двух его мощных книг “The Fabric of Reality” и “The Beginning of Infinity” (пришла пора перечитать, кстати) , мне, например, очень нравятся его мысли тут https://aeon.co/essays/how-close-are-we-to-creating-artificial-intelligence. Текущая книга без Дойча, только Марлето, хотя большую часть, судя по статьям, они сделали вместе.

Главы книги являются популярным рассказом про соответствующие статьи Марлето и Дойча. Собственно, первоначальная статья Дойча 2013 года “Constructor theory” (https://www.constructortheory.org/portfolio/the-philosophy-of-constructor-theory/), более поздняя совместная 2014-го “Constructor Theory of Information” (https://www.constructortheory.org/portfolio/the-constructor-theory-of-information/), ещё более поздние 2015-го только от Марлето “Constructor Theory of Life” (https://www.constructortheory.org/portfolio/the-constructor-theory-of-life/), 2016-го “Constructor Theory of Thermodynamics” (https://www.constructortheory.org/portfolio/constructor-theory-thermodynamics/) и “Constructor Theory of Probability” (https://www.constructortheory.org/portfolio/the-constructor-theory-of-probability/) -- все они примерно соответствуют разным главам книги.

Теория интересная, я на неё какое-то время уже поглядываю, упирает на важность counterfactuals -- возможность и невозможность чего-либо. Законы сохранения -- один из примеров имеющихся принципов, которые по сути являются counterfactuals.

Информацию сводят к сущности обладающей двумя counterfactual свойствами (или к наличию двух операций): возможность установить в одно из двух состояний (операция flip) и возможность скопировать состояние (операция copy). Все среды, имеющие эти два свойства, взаимозаменимы с точки зрения информации, и это вот interoperability of information открывает дорогу к существованию универсальных компьютеров.

У квантовой информации есть два дополнительных свойства: невозможность выполнять определённые copy-like трансформации и обратимость, что открывает дорогу к универсальному квантовому компьютеру.

Надёжно выполняемые преобразования требуют наличия обобщённого катализатора, который после выполнения преобразования способен делать его и дальше. А абстрактный катализатор ещё и копируем и содержит в себе resilient information, некий рецепт (knowledge).

В термодинамике constructor theory предлагает next step для универсального вычислителя, давая ему “ручки и ножки” и определяя универсальный конструктор. Агентная машина Тьюринга, если угодно :)

Где-то на горизонте недавно также появлялась Assembly Theory (упоминали её здесь /channel/gonzo_ML/2745). Она как бы про другое, отличить сконструированное и пообъяснять эволюцию -- на переопределение физических законов не претендует. Но как-то перекликается. Недавно её, правда, обругали (https://www.kcl.ac.uk/news/kings-researchers-challenge-validity-of-assembly-theory-of-everything-hypothesis).

В общем это всё прикольно, надо про это подумать ещё. У меня давно уже мысли, что в применении к deep learning и вообще к обучению там ещё много интересного можно накопать, и к теории всего этого, и к различным физическим реализациям. А ещё там явно что-то должно быть продуктивное про функциональное программирование и теорию категорий. Срочно надо больше времени!

#books

Читать полностью…

gonzo-обзоры ML статей

Ну и последнее по теме Willow. Я только сейчас обнаружил у Гугла видео с анонсом, где они неплохо описывают суть (лучше чем в блоге). В Кванте, правда, ещё больше контекста дают.

https://www.youtube.com/watch?v=W7ppd_RY-UE

Читать полностью…

gonzo-обзоры ML статей

Шмидхубер всё не успокоится

https://people.idsia.ch/~juergen/physics-nobel-2024-plagiarism.html

Читать полностью…

gonzo-обзоры ML статей

Что-то интересное.

https://blog.google/technology/research/google-willow-quantum-chip/

Today I’m delighted to announce Willow, our latest quantum chip. Willow has state-of-the-art performance across a number of metrics, enabling two major achievements.

* The first is that Willow can reduce errors exponentially as we scale up using more qubits. This cracks a key challenge in quantum error correction that the field has pursued for almost 30 years.

* Second, Willow performed a standard benchmark computation in under five minutes that would take one of today’s fastest supercomputers 10 septillion (that is, 10^25) years — a number that vastly exceeds the age of the Universe.

Читать полностью…

gonzo-обзоры ML статей

Про проверку на RULER benchmark на входах от 16K до 128K токенов и размере блока в ¼ от длины последовательности написано, что точность проседает несильно, от 0 до 3%, а скорость возрастает до 5 раз (а на 70B модели и того больше). По таблице, правда, видно чуть другое -- на 7B модели ускорение до 2.7x, а точность _вырастает_. Не очень, кстати, понимаю, почему точность выше, вроде как с неаппроксимированным бейзлайном сравниваемся? Знаю я, конечно, истории, когда аппроксимация неожиданно оказывается лучше оригинала, потому что баги в оригинале (Ash недавно делился историей про https://github.com/ashvardanian/affine-gaps). Но как-то странно всё равно (spoiler, но дальше станет понятнее). На 70B модели точность падает, но ускорение выше, до 4.7x. На BABILong тоже всё сравнимо по качеству.

На длине 128K посмотрели на трейдоффы между размером блока и точностью. Логично, что с увеличением размера блока (когда один хост видит больше), качество выше.

Дальше оставили блок на 32K и увеличили размер входа до 1024K для 8B ламы. Просадка в качестве до 8%+, зато ускорение почти до 17x. На 70B ламе сделали блок 16K для входа 128K -- здесь качество -11.5%, скорость +8.7x.

Мне кажется, это довольно заметные просадки в качестве. Интересно сравнить это с принципиально другой альтернативой -- квантизацией. Какое там получается ускорение/ухудшение и если сопоставимое, то у квантизации есть выигрыш по другому измерению, на которое Nvidia по понятным причинам не очень смотрит, по задействованному железу и его цене. Но в любом случае, возможность шардить вычисления -- это хорошо, тем более что это всё ортогональные истории и когда оно сложится с обучением в низкой разрядности (а там вроде что-то идёт https://arxiv.org/abs/2307.00331), будет особенно интересно посмотреть на новые масштабы моделей. Забавно ещё, что Intel там как-то всё подёргивается (https://github.com/intel/intel-extension-for-transformers, но это не про обучение), но честно говоря не понимаю, ожидать ли от них вообще хоть чего-то.

В разрезе разных типов задач на RULER, качество работы Star attention разное. Single Needle-in-a-Haystack (NIAH) практически идентичен полному вниманию. Multi-NIAH и QA проседают заметнее. Multi-Hop Tracing ещё сильнее, он требует распространения информации и эффективной коммуникации, которой тут нет, так что это логично. Aggregation неожиданно заметно вырастает по качеству, и здесь оно видимо происходит от более качественной суммаризации внутри отдельных блоков на первой фазе алгоритма. В полном внимании, видимо, модель больше дистрактится на глобальный контекст и суммаризация по всему документу страдает из-за этого.

Поделали сколько-то абляций на NIAH: Single-NIAH, Multi-key NIAH, Multi-query NIAH.

Проверили две прикольные гипотезы про anchor блоки:
1) Модель выработала bias к абсолютной позиции блока
2) Семантическое содержимое этого блока важно для качества.

По 1) поварьировали позиции блока сохраняя его контент. Это всё мало влияет.
По 2) поварьировали контент блока (забивая его определёнными токенами, рандомом или делая шаффл). Очень влияет. Хуже всего константные токены, с ними ещё хуже, чем без блока вообще. Оригинальный контент лучше всего. Отдельным экспериментом проверили, а что если в качестве anchor block брать предыдущий? Всё равно похуже оригинального получается, но лучше остальных опций. В общем дело не в позиции, дело в содержимом. При росте размера этого блока качество тоже растёт.

Это, конечно, интересная история, что там такого в этих блоках в разных задачах, что оно настолько важно. Были же, наверняка, уже работы, оценивающие неравномерную значимость контента в разных позициях реальных датасетов, особенно на большом контексте? Поделитесь, если знаете хорошие примеры. Попахивает определённым inductive bias самих “реальных для нас” задач, что в целом логично.

В общем, интересно. Разделяй и властвуй, короче. Map & Reduce форева. И вообще работа даёт подумать над многим разным.

Читать полностью…

gonzo-обзоры ML статей

Интересная картинка (https://arxiv.org/abs/2402.08797)

Читать полностью…

gonzo-обзоры ML статей

Large Concept Models: Language Modeling in a Sentence Representation Space
LCM team, Loïc Barrault, Paul-Ambroise Duquenne, Maha Elbayad, Artyom Kozhevnikov, Belen Alastruey, Pierre Andrews, Mariano Coria, Guillaume Couairon, Marta R. Costa-jussà, David Dale, Hady Elsahar, Kevin Heffernan, João Maria Janeiro, Tuan Tran, Christophe Ropers, Eduardo Sánchez, Robin San Roman, Alexandre Mourachko, Safiyyah Saleem, Holger Schwenk
Статья: https://arxiv.org/abs/2412.08821
Код: https://github.com/facebookresearch/large_concept_model

Ещё одна классная работа от FAIR (BLT /channel/gonzo_ML/3109 тоже была их).

Хочется уметь работать на разных уровнях абстракции. Мозг, очевидно, умеет это делать и наше мышление не оперирует только лишь на уровне слов. У нас есть какой-то top-down процесс решения сложных задач. Например, при создании длинного документа мы (обычно) сначала планируем его верхнеуровневую структуру, а затем начинаем добавлять детали на более низких уровнях абстракции. Текущие LLM работают скорее не так, уровень токенов — наше (их) всё. Может, конечно, и есть там внутри какие-то неявные иерархические репрезентации, но иметь их явно было бы более полезно. Иметь ризонинг и планирование на этом уровне также было бы ценно. Совсем хорошо было бы иметь этот уровень независимым от конкретного языка и модальности — одна и та же мысль может быть выражена на разных языках и в разных модальностях (текст, голос).

Хочется (снова) уйти от токенов — в BLT мы уходили в латентную не видимую снаружи токенизацию, а здесь мы уходим в более высокоуровневое пространство эмбеддингов для концептов и хотим моделировать процесс ризонинга на уровне семантики, а не токенов, и иметь LCM (Large Concept Model) вместо LLM.

Для проверки идеи ограничиваемся двумя уровнями: 1) subword токены и 2) концепты. Под концептами понимается абстрактная неделимая идея, на практике часто соответствующая предложению в документе или высказыванию в разговорной речи. В отличие от одиночных слов это подходящий элемент для достижения независимости от языка.

Для такого подхода надо иметь пространство эмбеддингов предложений с доступным энкодером и декодером. В качестве такового взяли FAIR’овский же SONAR (https://arxiv.org/abs/2308.11466) с поддержкой 200 языков (все языки из проекта No Language Left Behind, https://arxiv.org/abs/2207.04672) на текстовых входах/выходах, 76 языков на речевом входе и одного английского на речевом выходе. SONAR бьёт по качеству LASER3 и LabSE и доступен в репе https://github.com/facebookresearch/SONAR. Размер эмбеддинга 1024 float чиселки (что значит, типичное предложение в виде эмбеддингов будет занимать в разы больше места, в работе на 1Tb текста уходило примерно 15-20Tb эмбеддингов).

Имея всё это мы через энкодер SONAR можем получить из входного текста последовательность концептов, т.е. эмбеддингов предложений. И дальше эту последовательность обрабатывать LCM, генерируя на выходе новую последовательность концептов. А её в свою очередь декодировать SONAR’ом в последовательность токенов. Энкодер и декодер SONAR берутся готовые и не обучаются, обучается только LCM.

Что красиво, одна и та же последовательность концептов из LCM может быть декодирована в разные языки и модальности без необходимости перепрогонять весь процесс ризонинга. LCM вообще не знает ничего ни про языки, ни про модальности, из которых на её вход пришли данные. Появляется красивая модульность, обучил энкодер/декодер для нового языка — и уже обученная LCM автоматом с ним работает. В работе есть таблица про количество поддерживаемых языков в разных модальностях, LCM со своими 200 языками для текста здесь всех бьёт, но не совсем понятно как получены цифры для GPT/Gemini/Claude, я вроде не видел заявленного списка поддерживаемых языков у этих моделей. Ещё, конечно, было бы интересно посмотреть на концепты, которые неодинаково хорошо декодируются в разные языки.

Читать полностью…

gonzo-обзоры ML статей

Пока готовятся новые обзоры, вот вам прекрасное рождественское:

Introduction to Black Hole Thermodynamics
Edward Witten
https://arxiv.org/abs/2412.16795

Читать полностью…

gonzo-обзоры ML статей

Обучили compute-optimal BPE and BLT модели размеров 1B-8B. BLT либо соответствует, либо превосходит BPE модели, и сохраняет это свойство на скейлинге. Заявляют, что BLT -- это первый byte-level трансформер с такими же трендами масштабирования, как у BPE-трансформеров в compute-optimal режиме.

Попутно лишний раз подтвердили, что токенизация влияет -- модели с токенизатором от Llama 3 превосходят модели с токенизатором от Llama-2 на одинаковых данных.

В режиме beyond the compute optimal ratio BLT-Entropy обученная на 4.5T байт обошла Llama 3 на 1T токенов, при одинаковых FLOPS.

У BLT моделей появляется дополнительное измерение скейлинга, можно увеличивать размер модели одновременно с размером патча при том же бюджете. Большие патчи экономят компьют, и его можно направить на рост латентного трансформера, который будет вызываться реже. Кривая скейлинга у BLT сильно лучше BPE. На малых бюджетах BPE лучше, но BLT быстро обгоняет.

На задачах про устойчивость к шуму на уровне байтов BLT рулит, иногда очень сильно перебивая Llama 3.1, обученную на в 16 раз больше токенов. На переводе в 6 распространённых языков и 21 низкоресурсных BLT тоже лучше по BLEU.

Ещё интересный эксперимент с инициализацией глобального трансформера в BLT из предобученной (на токенах) Llama 3.1. Такой BLT существенно превосходит BLT или Llama 3, обученные с нуля (соответственно на байтах и токенах). Всё с тем же бюджетом FLOPS. В принципе это можно использовать для конвертирования моделей с токенизатором в BLT. Жду волны конвертаций-файнтюнов известных моделей. Ещё это наверное что-то говорит про универсальность вычислений в стволе трансформера, которые в общем к токенам не супер сильно привязаны, получается.

В общем это всё очень интересно. Мне нравится такая движуха, токенизатор всегда для меня выглядел костылём, прикрученным сбоку. Я думаю, переход на такие модели должен дать буст мультиязычности, когда из-за плохих токенизаторов, не обученных на редких языках, эти языки сильно проседали, хотя могли бы и не. И совместимость разных моделей, наверное, тоже возрастёт. И наконец будет меньше дурацких примеров типа strawberry.

С прайсингом коммерческих моделей только непонятно, за что теперь чаржить будут, не за латентные патчи же, народ не поймёт. Неужели наконец за понятные байты или ещё лучше символы?

Читать полностью…

gonzo-обзоры ML статей

Byte Latent Transformer: Patches Scale Better Than Tokens
Artidoro Pagnoni, Ram Pasunuru, Pedro Rodriguez, John Nguyen, Benjamin Muller, Margaret Li, Chunting Zhou, Lili Yu, Jason Weston, Luke Zettlemoyer, Gargi Ghosh, Mike Lewis, Ari Holtzman, Srinivasan Iyer
Статья: https://arxiv.org/abs/2412.09871
Код: https://github.com/facebookresearch/blt

Byte Latent Transformer (BLT) -- это интересный заход на отказ от токенизации с фиксированным словарём и про работу на уровне байтов в LLM. Динамически разбиваем входной поток на патчи, определяя их границы по энтропии следующего символа, и на таких патчах и работаем. Если поток данных простой и предсказуемый, можем сделать патчи подлиннее, а если всё сложно, можно выделить больше компьюта на большее количество патчей. Получаем динамическую аллокацию компьюта.

Интересная нетривиальная работа. Теперь к деталям!

Токенизаторы -- это вообще интересная история, которая существует рядом с красивым и дифференцируемым end-to-end обучением трансформеров и разрушает эту идиллическую end-to-end картину. Токенизаторы тоже обучаются, но делается это не бэкпропом, а относительно простым алгоритмом, который выбирает наиболее часто встречающиеся последовательности в языке и составляет из них словарь, обычно заранее заданного размера. Про токенизаторы иногда забывают, но это безумно важная компонента, потому что при плохой токенизации сильно страдает итоговое качество различных задач. Например, сложно учить трансформер выполнять арифметические операции, если числа токенизируются не по отдельным цифрам, а по произвольным кускам из нескольких. Другой типовой пример, применение модели к языкам, на которых токенизация не очень обучалась, тогда слова разбиваются на токены, не отражающие реальной языковой картины и не соответствующие ничему осмысленному. История про ошибочный подсчёт букв “r” в слове “strawberry”, кажется, тоже с этим связана.

Были попытки это преодолеть и обучать модели на байтах или UTF-8 символах, но основная проблема в том, что размер последовательности от этого сильно растёт. Это сейчас вон, до 2M контексты, но оно только недавно появилось, да и дорого довольно.

Ещё, конечно, неплохо избавиться от огромных софтмаксов на размер словаря… Входные и выходные таблицы эмбеддингов могут быть очень немаленькими. Всегда есть трейдофф между размером словаря и вычислениями. Увеличивая словарь мы увеличиваем среднюю длину токена, что уменьшает число элементов в последовательности, с которой работает модель. Но это же увеличивает размерность финального слоя проекции, так что сильно тут не поиграешь. У Llama 3 размер эмбеддингов увеличился в 4 раза относительно Llama 2 при росте среднего размера токена от 3.7 до 4.4.

Идея, что модель должна динамически аллоцировать компьют там, где он нужен, привела к архитектуре Byte Latent Transformer (BLT), в которой три трансформерных блока: две маленьких локальных byte-level модели и большой глобальный латентный трансформер (latent transformer). Латентный трансформер оперирует репрезентациями патчей, а две локальные модели занимаются кодированием последовательности входных байт в патчи и репрезентаций патчей обратно в байты.

Есть множество способов разбить входной байтовый поток на патчи. Простейший вариант -- Strided Patching Every K Bytes, патчи фиксированного размера, k байт. Можно контролировать количество вычислений, задавая размер патча. Но динамической аллокации компьюта нет, а хотелось бы выделять побольше на сложные участки, и поменьше на простые. Другая проблема -- неконсистентное разбиение одних и тех же слов в зависимости от их позиции. Непонятно какой от этого профит кроме вреда.

Более понятный вариант -- Space Patching, разбиение по пробельным символам, которые скорее всего являются естественными границами в предложении. Но это может плохо работать с некоторыми языками и доменами. Ну и менять размер патча нельзя.

Читать полностью…

gonzo-обзоры ML статей

Картинка с деньгами ещё лучше

https://arcprize.org/blog/oai-o3-pub-breakthrough

Читать полностью…

gonzo-обзоры ML статей

https://www.youtube.com/watch?v=SKBG1sqdyIU

Читать полностью…

gonzo-обзоры ML статей

Навигация по работам с NeurIPS 2024

https://jalammar.github.io/assets/neurips_2024.html

Читать полностью…

gonzo-обзоры ML статей

Проверяли на NLU, text и code retrieval. ModernBERT рулит. По эффективности (максимальный размер батча и сколько тысяч токенов в секунду) всё очень хорошо. По факту у нас есть новая сота с очень хорошей производительностью. Оно Pareto-efficient по сочетанию параметров время на обработку токена и качество на GLUE.

Прикольно, чё. Следующий логичный шаг -- мультиязычность.

Читать полностью…

gonzo-обзоры ML статей

Суцкевер выступает

https://www.theverge.com/2024/12/13/24320811/what-ilya-sutskever-sees-openai-model-data-training

https://www.youtube.com/watch?v=WQQdd6qGxNs

Читать полностью…

gonzo-обзоры ML статей

Вот вам ещё хорошее интервью в ленту :) Отлично подходит на подумать в выходные.

https://youtu.be/b42UYulLJu0?si=DlH6ZtDAfJCmh-Cd

Читать полностью…

gonzo-обзоры ML статей

Извините, не могу удержаться.

Читать полностью…

gonzo-обзоры ML статей

Quanta написала популярно про этот результат и quantum error correction вообще

https://www.quantamagazine.org/quantum-computers-cross-critical-error-threshold-20241209/

Читать полностью…

gonzo-обзоры ML статей

Собственноручно проверил наличие супервеса (см. оригинальную статью и разбор от gonzo-обзоры ML статей) в Llama-3.2-1B.

Aномальный вес находится в позиции (400 - выходной канал, 1417 - входной канал) в model.layers.1.mlp.down_proj.

Не столь ярко выражен (перплексия на Wikitext-2 (8k context length) выросла с 8.375 до 8.625 при занулении данного веса), но все же очень много для всего одно веса.

[Google Colab для желающих поиграться]

Читать полностью…

gonzo-обзоры ML статей

Star Attention: Efficient LLM Inference over Long Sequences
Shantanu Acharya, Fei Jia, Boris Ginsburg
Статья: https://arxiv.org/abs/2411.17116
Код: https://github.com/NVIDIA/Star-Attention

Не иссякают попытки оптимизировать классическое квадратичное внимание трансформеров. На этот раз block-sparse approximation внимания от Нвидии, которое шардит его по нескольким хостам и минимизирует оверхед на коммуникацию, что даёт возможность эффективно обрабатывать очень длинные контексты.

Много их уже было линейных и логлинейных, начиная со Sparse Transformer от OpenAI в 2019 (/channel/gonzo_ML/65), какая-то вариация которого использовалась и в GPT-3 (/channel/gonzo_ML/305), и позже всяких Big Bird (/channel/gonzo_ML/381), Longformer (/channel/gonzo_ML/292) и прочего разного.

Предложенный Star Attention основан на наблюдении, что инференс LLM состоит из двух фаз: 1) кодирование промпта и заполнение KV кеша для него, 2) авторегрессионная генерация токенов с апдейтом этого кеша. В случае большого контекста паттерн работы это часто “очень длинный контекст + короткий запрос + короткий ответ”.

Сам Star Attention тоже двухфазный:

1. (локальное поблочное внимание) Context Encoding: весь контекст разбивается на соприкасающиеся блоки (каждый по b токенов) и распределяется по “context” хостам. Каждый хост также получает первый блок (“anchor block”). Хосты вычисляют self-attention только в пределах тех блоков, что имеют (2b кроме хоста с только первым блоком, там b), не коммуницируя друг с другом, сложность поэтому получается линейная. Хосты также заполняют KV-кеш, не включая в него anchor блок.

2. (глобальное внимание) Query Encoding and Token Generation: query реплицируется на все хосты, где он через внимание обращается в местный KV-кеш. Глобальное внимание затем вычисляется агрегируя результат на выделенном “query” хосте. Query хост также дополняет KV-кеш значениями для свежесгенерированных токенов.

Интересно, что первая фаза без anchor blocks не работает, модель не генерит правильных результатов. Авторы предполагают, что это из-за некорректной аппроксимации внимания во второй фазе. Если обрабатывать каждый блок независимо, то в начале блока возникают attention sinks (/channel/dlinnlp/1689), и после агрегации это мешает модели концентрироваться на релевантных частях контекста. Якорные блоки оттягивают на себя эти сливы, а поскольку в KV кеш эти блоки не попадают, то распределение внимания по блокам хорошо аппроксимирует глобальное внимание и проблемы не возникает (проиллюстрировано на Figure 3). Интересно, можно было тогда наверное и несколько левых псевдо-токенов добавлять вместо всего якорного блока? StreamingLLM из оригинальной статьи про сливы (https://arxiv.org/abs/2309.17453) вроде примерно это и делал. Но, спойлер, читайте абляции.

Второй этап по факту считает распределённый softmax без необходимости обмениваться KV-кешами между хостами. Есть только отправка на query хост (вектор) локально посчитанных коэффициентов внимания (после локального софтмакса), а также (скаляр) сумм локальных экспонент (знаменатель в локальном софтмаксе), которые нужны для ренормализации глобального софтмакса. Таким образом глобальные коэффициенты внимания получаются правильными.

Star attention встраивают без файнтюнинга в уже обученные LLM с полным вниманием, это разные варианты Llama-3.1 8B, а также Llama-3.1-70B-Instruct для проверки масштабируемости. В качестве бейзлайна берут Ring Attention (https://arxiv.org/abs/2310.01889), который тоже разбивал всё на блоки по разным хостам и позволял скейлить длину последовательности по числу хостов, но не делал никаких аппроксимаций механизма внимания, это было полное внимание. Там хосты обменивались своими KV кешами по кольцу.

Читать полностью…

gonzo-обзоры ML статей

19. Сегодняшние проблемы. Наше представление о кибернетической интеграции в настоящее время весьма абстрактно и туманно. Это неизбежно: понятия и цели, касающиеся отдаленного будущего, только и могут быть абстрактными. Это не значит, однако, что они не имеют никакого отношения к нашим сегодняшним проблемам. Понятия о Всемирной Эволюции и кибернетическом бессмертии имеют прямое отношение к понятию о смысле жизни и к высшим ценностям, которые мы принимаем для себя сегодня, хотя те, кто живут сейчас, могут реалистически думать лишь в терминах творческого бессмертия (хотя, кто знает?). Проблема высших ценностей — это центральная проблема нынешнего общества. Ради чего надо жить, после того как наши основные потребности с легкостью удовлетворены современной системой производства? Что есть Добро и что есть Зло? Каковы те конечные критерии, на основании которых мы должны оценивать различные модели общественного устройства? В истории человечества великие цивилизации неотделимы от великих религий, которые отвечали на эти вопросы. Упадок традиционных религий, основывающихся на метафизическом понятии о бессмертии, угрожает деградацией общества. Представление о кибернетическом бессмертии может прийти на смену своему метафизическому предшественнику и послужить основой для учения о высших ценностях нарождающейся глобальной цивилизации.

20. Интеграция и свобода. В наше время мы можем яснее, чем когда-либо, видеть фундаментальное противоречие конструктивной эволюции человеческого общества: между социальной интеграцией и личной свободой. Интеграция есть эволюционная необходимость; это очередной метасистемный переход. Если человечество поставит себе цели, не совместимые с интеграцией, результатом будет эволюционный тупик. Тогда мы не выживем. В эволюционирующей Вселенной нет остановки: все, что не развивается, гибнет. С другой стороны, драгоценной сущностью человека является свобода. Творческая свобода личности — это двигатель эволюции в эпоху разума. Если она будет подавлена интеграцией, как в тоталитарных режимах, мы тоже окажемся в эволюционном тупике.

Это противоречие реально, но ниоткуда не следует, что оно неразрешимо. В конце концов, аналогичное противоречие успешно преодолевалось эволюцией на предыдущих уровнях организации. Когда клетки объединяются в многоклеточный организм, они продолжают выполнять свои биологические функции — обмен веществ и деление. Новое качество — жизнь организма — появляется не вопреки биологическим функциям индивидуальных клеток, а благодаря им. Творческий акт свободной человеческой личности — это его “биологическая функция”. В интегрированном сверхсуществе на всех его стадиях, начиная с той, которая протекает сейчас, эта свобода должна оставаться необходимым и решающим фактором. Как достичь органического синтеза интеграции и свободы — вот вызов, который природа бросает человеку.

Источник: http://www.refal.net/turchin/phenomenon/cybernetic-manifesto.htm

Приложение к книге "Феномен науки. Кибернетический подход к эволюции"
Источник: http://www.refal.net/turchin/phenomenon/

Читать полностью…
Subscribe to a channel