gonzo-обзоры ML статей
Стартап Миры Мурати разродился на этой неделе первым постом в блоге. Тема: воспроизводимость ответов LLM. https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/ Где там остаётся недетерминизм, когда все сиды уже зафиксированы. Разбирают…
Кстати, там продолжения в блоге пошли:
LoRA Without Regret
https://thinkingmachines.ai/blog/lora/
Modular Manifolds
https://thinkingmachines.ai/blog/modular-manifolds/
LoRA Without Regret
https://thinkingmachines.ai/blog/lora/
Modular Manifolds
https://thinkingmachines.ai/blog/modular-manifolds/
Thinking Machines Lab
LoRA Without Regret
How LoRA matches full training performance more broadly than expected.
🔥10
Что-то интересное
Ring-1T-preview: Deep Thinking, No Waiting
The first 1 trillion open-source thinking model
https://huggingface.co/inclusionAI/Ring-1T-preview
Ring-1T-preview: Deep Thinking, No Waiting
The first 1 trillion open-source thinking model
https://huggingface.co/inclusionAI/Ring-1T-preview
👀33😱3🤔1
Вот наконец и продукт доехал
Introducing Tinker: a flexible API for fine-tuning language models.
Write training loops in Python on your laptop; we'll run them on distributed GPUs.
Private beta starts today. We can't wait to see what researchers and developers build with cutting-edge open models!
https://thinkingmachines.ai/tinker/
https://x.com/thinkymachines/status/1973447428977336578
Today we launched Tinker.
Tinker brings frontier tools to researchers, offering clean abstractions for writing experiments and training pipelines while handling distributed training complexity. It enables novel research, custom models, and solid baselines.
Excited to see what people build.
https://x.com/miramurati/status/1973498366521954774
Introducing Tinker: a flexible API for fine-tuning language models.
Write training loops in Python on your laptop; we'll run them on distributed GPUs.
Private beta starts today. We can't wait to see what researchers and developers build with cutting-edge open models!
https://thinkingmachines.ai/tinker/
https://x.com/thinkymachines/status/1973447428977336578
Today we launched Tinker.
Tinker brings frontier tools to researchers, offering clean abstractions for writing experiments and training pipelines while handling distributed training complexity. It enables novel research, custom models, and solid baselines.
Excited to see what people build.
https://x.com/miramurati/status/1973498366521954774
Thinking Machines Lab
Tinker
Tinker is a training API for researchers and developers.
🥴16❤7🤔3🔥1🤮1
Stochastic activations
Maria Lomeli, Matthijs Douze, Gergely Szilvasy, Loic Cabannes, Jade Copet, Sainbayar Sukhbaatar, Jason Weston, Gabriel Synnaeve, Pierre-Emmanuel Mazaré, Hervé Jégou
Статья: https://arxiv.org/abs/2509.22358
Есть ещё на свете люди, продолжающие копаться в низких уровнях (на этот раз активации)! Но привязывают всё равно к LLM. Так необычно во введении читать, что функция активации -- это то, что внутри LLM между двумя линейными слоями в FFN блоке. Мы раньше всегда это проще объясняли, на примере одного нейрона…
Авторы предлагают стохастические активации. Я сначала по названию подумал, что речь будет несколько про другое, что будет какая-то хитрая функция с рандомом, ну как RReLU (randomized rectified linear unit, где для отрицательной части выбирался рандомный небольшой линейный коэффициент), но оказалось, что они предлагают случайно выбирать между SILU и RELU (что конечно тоже можно рассматривать как стохастическую функцию, но здесь стохастика вынесена на более высокий уровень), и у этого подхода есть свои плюсы.
RELU (=max(x, 0)) как известно был хорош, помог быстро продвинуть всю область где-то в районе AlexNet, когда оказалось, что с ним учится сильно быстрее, чем с дифференцируемой классикой типа сигмоид и гиперболических тангенсов. Проблема с RELU была в том, что если активация в зоне отрицательного аргумента, то там нулевой градиент и она оттуда не выберется. Как раз поэтому сети с RELU также естественным образом демонстрировали тенденцию к разреженности, что в свою очередь хорошо, если железо более эффективно умеет перемножать разреженные матрицы (но такое появилось сильно не сразу, да и для подобного паттерна разреженности это может быть непросто).
SILU (Sigmoid Linear Unit, оно же swish, =xσ(x)), особенно в сочетании с гейтами (SwiGLU), стабильно бил RELU по качеству, но не давал разреженности. Возможно, что бил как раз потому, что у RELU градиенты нулевые были в большом количестве случаев, и это не давало сети хорошо учиться.
Был и миллион других функций. Из относительно недавнего, например, Adaptive SwisH (ASH, https://arxiv.org/abs/2210.11672), со стохастическим сэмплингом внутри. Где-то идейно рядом с разреженностью также лежит Dropout, включая structured варианты типа LayerDrop (упоминали тут https://news.1rj.ru/str/gonzo_ML/2845).
Вопрос далее классический: как адресовать ограничения RELU, сохранив все его преимущества?
Предлагаются два подхода:
1) Swi+FT -- файнтюнинг активаций: обучаешь LLM с одной активацией (более качественной), потом заменяешь на RELU и файнтюнишь. Если точнее, то при обучении для первых
2) StochA -- собственно стохастические активации: случайно выбираются активации из заданного набора, либо в трейне, либо в тесте. Здесь используется бернуллиевская (бинарная) случайная величина
Альтернативная стратегия -- случайно выбирать между identity (y=x) и нулевой функцией (y=0) с вероятностью, заданной сигмоидой, что в матожидании даёт SILU. На практике работает не очень.
Maria Lomeli, Matthijs Douze, Gergely Szilvasy, Loic Cabannes, Jade Copet, Sainbayar Sukhbaatar, Jason Weston, Gabriel Synnaeve, Pierre-Emmanuel Mazaré, Hervé Jégou
Статья: https://arxiv.org/abs/2509.22358
Есть ещё на свете люди, продолжающие копаться в низких уровнях (на этот раз активации)! Но привязывают всё равно к LLM. Так необычно во введении читать, что функция активации -- это то, что внутри LLM между двумя линейными слоями в FFN блоке. Мы раньше всегда это проще объясняли, на примере одного нейрона…
Авторы предлагают стохастические активации. Я сначала по названию подумал, что речь будет несколько про другое, что будет какая-то хитрая функция с рандомом, ну как RReLU (randomized rectified linear unit, где для отрицательной части выбирался рандомный небольшой линейный коэффициент), но оказалось, что они предлагают случайно выбирать между SILU и RELU (что конечно тоже можно рассматривать как стохастическую функцию, но здесь стохастика вынесена на более высокий уровень), и у этого подхода есть свои плюсы.
RELU (=max(x, 0)) как известно был хорош, помог быстро продвинуть всю область где-то в районе AlexNet, когда оказалось, что с ним учится сильно быстрее, чем с дифференцируемой классикой типа сигмоид и гиперболических тангенсов. Проблема с RELU была в том, что если активация в зоне отрицательного аргумента, то там нулевой градиент и она оттуда не выберется. Как раз поэтому сети с RELU также естественным образом демонстрировали тенденцию к разреженности, что в свою очередь хорошо, если железо более эффективно умеет перемножать разреженные матрицы (но такое появилось сильно не сразу, да и для подобного паттерна разреженности это может быть непросто).
SILU (Sigmoid Linear Unit, оно же swish, =xσ(x)), особенно в сочетании с гейтами (SwiGLU), стабильно бил RELU по качеству, но не давал разреженности. Возможно, что бил как раз потому, что у RELU градиенты нулевые были в большом количестве случаев, и это не давало сети хорошо учиться.
Был и миллион других функций. Из относительно недавнего, например, Adaptive SwisH (ASH, https://arxiv.org/abs/2210.11672), со стохастическим сэмплингом внутри. Где-то идейно рядом с разреженностью также лежит Dropout, включая structured варианты типа LayerDrop (упоминали тут https://news.1rj.ru/str/gonzo_ML/2845).
Вопрос далее классический: как адресовать ограничения RELU, сохранив все его преимущества?
Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича, да взять сколько-нибудь развязности, какая у Балтазара Балтазарыча, да, пожалуй, прибавить к этому ещё дородности Ивана Павловича — я бы тогда тотчас же решилась.
Предлагаются два подхода:
1) Swi+FT -- файнтюнинг активаций: обучаешь LLM с одной активацией (более качественной), потом заменяешь на RELU и файнтюнишь. Если точнее, то при обучении для первых
1 − α от общего числа шагов выбирается хорошая активация (SILU например), а затем переключаемся на вторую (RELU). Значение α обычно в районе 5-10%, иногда пробуют 20%. На инференсе тоже оставляем вторую активацию. Нет никаких прогревов оптимизатора, его параметры не переинициализируются, но применяется косинусное расписание, где learning rate плавно уменьшается до 0.01 от своего пикового значения. Поскольку SILU и RELU похожи (одинаковые асимптоты и значение в нуле), то проблемы не возникает. Есть спайк на лоссе в момент переключения, но он быстро уходит.2) StochA -- собственно стохастические активации: случайно выбираются активации из заданного набора, либо в трейне, либо в тесте. Здесь используется бернуллиевская (бинарная) случайная величина
ω ∼ Bernoulli(p), так что с вероятностью p выбирается одна функция, и 1-p -- другая. Это, кстати, тоже напоминает дропаут активаций (хоть дропаут и для другой цели), так как получается что с заданной вероятностью мы выбираем функцию, которая занулит отрицательный аргумент.Альтернативная стратегия -- случайно выбирать между identity (y=x) и нулевой функцией (y=0) с вероятностью, заданной сигмоидой, что в матожидании даёт SILU. На практике работает не очень.
❤8👍7😁3
Обучают dense декодеры с GQA, RMSNorm + pre-norm, RoPE. Модели 1.5B и 3B. Оптимизатор AdamW. Токенизатор Llama3, словарь 128k + 256 зарезервированных токенов. Предобучение на 47B и 80B токенов, в основном англ тексты и код. Батч 1M токенов, контекст 8k.
Стохастическая активация даёт чуть меньший лосс на трейне по сравнению с RELU. Но и SILU тоже даёт меньший лосс, и не заметно как-то очень больших различий с ним. Без файнтюнинга на валидации всё проседает, но после него норм, но опять же, насколько я вижу, не лучше детерминированного SILU.
При использовании RELU на инференсе разреженность может превышать 90%, что по идее позволяет не тягать из памяти 90% весов. Разреженность в 90% даёт ускорение инференса на 65% на CPU. На GPU надо ещё как-то сделать вычисления достаточно предсказуемыми, чтобы балансировать нагрузку между CUDA тредами.
Вот эта часть вообще одна из самых интересных, но деталей тут не очень много. Как именно реализовали вычисления на CPU? Если боттлнек -- доступ к памяти, то всё равно ведь сначала надо прочитать, чтобы понять, что там ноль? Либо сразу делать sparse вычисления и для конкретных умножений использовать какую-то библиотеку для разреженной линейной алгебры с правильным форматом хранения. Была ли процедура конвертации dense модели в частично sparse для инференса? Упоминают хранение разных матриц по строкам или столбцам, но хочется мяса про sparse FFN.
Интересно, что при файнтюнинге, если использовать одновременно Swi+FT и StochA, то в момент переключения на RELU есть выброс на графике лосса, но далее он уходит и финальное качество модели выше, чем если бы изначально обучалась на RELU. При этом если использовать только Swi+FT, то итоговый результат хуже. И они всё равно хуже детерминированного SILU.
Другое любопытное замечание: в тест-тайм можно использовать StochA вместо RELU и без файнтюнинга (!). Оно неплохо работает, результат между RELU и SILU. Можно это использовать для генерации множественных ответов по одному промпту.
На downstream задачах похожая картина. Новые методы лучше RELU, но хуже SILU. То есть главный selling point, это потенциальное ускорение за счёт разреженности, 1.65x для CPU (а для GPU ещё надо постараться, но по идее для нвидиевских GPU нескольких последних поколений с поддержкой разреженности в тензорных ядрах должно как-то работать). Если нужно качество, то SILU лучше без вариантов. Ну или популярный SwiGLU, который SILU с гейтом. Есть ещё часто используемый GELU, хотя мне кажется от него стали уходить в SwiGLU (Себастиан подтверждает).
Наверное какие-то другие более новые функции активации тоже есть, но я не видел современного сравнения их всех по типу старого доброго для CNN (https://arxiv.org/abs/1505.00853) или исследования Ноама Шазира про трансформеры (https://arxiv.org/abs/2002.05202). Был вот ReLU^2 для разреженных LLM, где он всех побил (https://arxiv.org/abs/2402.03804). Был xIELU (https://arxiv.org/abs/2411.13010), который тоже вроде лучше SwiGLU. Ждём, когда кто-то снова сделает полномасштабное сравнение.
Наверное, здесь в очередной раз можно закончить цитатой Ноама Шазира из той работы 2020 года:
В общем непонятно, может глобально это всё неважно и мелочи, но может за этим и скрывается что-то фундаментальное, что мы пока ещё не поняли, базовые физические законы.
Кстати, у Ноама был кейноут доклад на свежей HotChips:
https://www.youtube.com/watch?v=v0beJQZQIGA
Всё в его участием смотреть и читать стоит! Напомню также, что он соавтор статьи про трансформер, T5, статей про MoE и т.п.. Пример очень крутого человека без PhD.
На этом и закончим.
Стохастическая активация даёт чуть меньший лосс на трейне по сравнению с RELU. Но и SILU тоже даёт меньший лосс, и не заметно как-то очень больших различий с ним. Без файнтюнинга на валидации всё проседает, но после него норм, но опять же, насколько я вижу, не лучше детерминированного SILU.
При использовании RELU на инференсе разреженность может превышать 90%, что по идее позволяет не тягать из памяти 90% весов. Разреженность в 90% даёт ускорение инференса на 65% на CPU. На GPU надо ещё как-то сделать вычисления достаточно предсказуемыми, чтобы балансировать нагрузку между CUDA тредами.
Вот эта часть вообще одна из самых интересных, но деталей тут не очень много. Как именно реализовали вычисления на CPU? Если боттлнек -- доступ к памяти, то всё равно ведь сначала надо прочитать, чтобы понять, что там ноль? Либо сразу делать sparse вычисления и для конкретных умножений использовать какую-то библиотеку для разреженной линейной алгебры с правильным форматом хранения. Была ли процедура конвертации dense модели в частично sparse для инференса? Упоминают хранение разных матриц по строкам или столбцам, но хочется мяса про sparse FFN.
Интересно, что при файнтюнинге, если использовать одновременно Swi+FT и StochA, то в момент переключения на RELU есть выброс на графике лосса, но далее он уходит и финальное качество модели выше, чем если бы изначально обучалась на RELU. При этом если использовать только Swi+FT, то итоговый результат хуже. И они всё равно хуже детерминированного SILU.
Другое любопытное замечание: в тест-тайм можно использовать StochA вместо RELU и без файнтюнинга (!). Оно неплохо работает, результат между RELU и SILU. Можно это использовать для генерации множественных ответов по одному промпту.
На downstream задачах похожая картина. Новые методы лучше RELU, но хуже SILU. То есть главный selling point, это потенциальное ускорение за счёт разреженности, 1.65x для CPU (а для GPU ещё надо постараться, но по идее для нвидиевских GPU нескольких последних поколений с поддержкой разреженности в тензорных ядрах должно как-то работать). Если нужно качество, то SILU лучше без вариантов. Ну или популярный SwiGLU, который SILU с гейтом. Есть ещё часто используемый GELU, хотя мне кажется от него стали уходить в SwiGLU (Себастиан подтверждает).
Наверное какие-то другие более новые функции активации тоже есть, но я не видел современного сравнения их всех по типу старого доброго для CNN (https://arxiv.org/abs/1505.00853) или исследования Ноама Шазира про трансформеры (https://arxiv.org/abs/2002.05202). Был вот ReLU^2 для разреженных LLM, где он всех побил (https://arxiv.org/abs/2402.03804). Был xIELU (https://arxiv.org/abs/2411.13010), который тоже вроде лучше SwiGLU. Ждём, когда кто-то снова сделает полномасштабное сравнение.
Наверное, здесь в очередной раз можно закончить цитатой Ноама Шазира из той работы 2020 года:
We offer no explanation as to why these architectures seem to work; we attribute their success, as all else, to divine benevolence
В общем непонятно, может глобально это всё неважно и мелочи, но может за этим и скрывается что-то фундаментальное, что мы пока ещё не поняли, базовые физические законы.
Кстати, у Ноама был кейноут доклад на свежей HotChips:
https://www.youtube.com/watch?v=v0beJQZQIGA
Всё в его участием смотреть и читать стоит! Напомню также, что он соавтор статьи про трансформер, T5, статей про MoE и т.п.. Пример очень крутого человека без PhD.
На этом и закончим.
arXiv.org
Stochastic activations
We introduce stochastic activations. This novel strategy randomly selects between several non-linear functions in the feed-forward layer of a large language model. In particular, we choose between...
👍8❤3🤯1
Новую архитектуру подвезли! ‘Dragon Hatchling’ (BDH) построена на принципах распределённых графовых моделей мозга, при этом есть GPU-friendly имплементация. Выглядит очень интересно и демонстрирует свойства, характерные для биологических систем.
https://news.1rj.ru/str/gonzo_ML_podcasts/906
Более фундаментальное изменение, чем например недавние Tversky Neural Networks (https://news.1rj.ru/str/gonzo_ML/3932).
https://news.1rj.ru/str/gonzo_ML_podcasts/906
Более фундаментальное изменение, чем например недавние Tversky Neural Networks (https://news.1rj.ru/str/gonzo_ML/3932).
Telegram
gonzo_ML_podcasts
The Dragon Hatchling: The Missing Link between the Transformer and Models of the Brain
Adrian Kosowski, Przemysław Uznański, Jan Chorowski, Zuzanna Stamirowska, Michał Bartoszkiewicz
Статья: https://arxiv.org/abs/2509.26507
Код: https://github.com/pathwaycom/bdh…
Adrian Kosowski, Przemysław Uznański, Jan Chorowski, Zuzanna Stamirowska, Michał Bartoszkiewicz
Статья: https://arxiv.org/abs/2509.26507
Код: https://github.com/pathwaycom/bdh…
❤12👍8🔥7