Qwen-Image: Crafting with Native Text Rendering
[Техрепорт][Блогпост][Пост на эйай ньюз]
📘 Введение
Все хорошее когда-то кончается, но аттракцион неслыханной щедрости от команды Квена продолжается. Выпустив за последние дни целые ряд сильных языковых моделей, ребята из Китая выпустили крайне интересный опенсорс уже в области генерации и редактирования изображений.
Как заявляется, полученная моделька хорошо умеет просто в генережку картинок, рендеринг текста (в особенности китайского, если кому актуально) и в сложный эдитинг.
[Техрепорт][Блогпост][Пост на эйай ньюз]
📘 Введение
Все хорошее когда-то кончается, но аттракцион неслыханной щедрости от команды Квена продолжается. Выпустив за последние дни целые ряд сильных языковых моделей, ребята из Китая выпустили крайне интересный опенсорс уже в области генерации и редактирования изображений.
Как заявляется, полученная моделька хорошо умеет просто в генережку картинок, рендеринг текста (в особенности китайского, если кому актуально) и в сложный эдитинг.
🔥5❤2
🔬 Метод
🏢 Архитектура
С архитектурной точки зрения ничего фундаментально нового:
📌 Qwen-2.5VL (7B) в качестве энкодера. Данный выбор позволяет из коробки подавать одновременно текст и изображения, что необходимо для задач редактирования и персонализации. Энкодер заморожен.
📌 В качестве VAE за основу берут энкодер+декодер от коллег из Wan. Однако ее качество не полностью удовлетворяет авторов, поэтому они дообучают декодер при замороженном энкодере. Причем используют только взвешенную сумму MSE и perceptual loss. Адверсариальный лосс якобы скорее мешает. В данные для обучения заливают специально побольше текстов.
📌 Диффузионный трансформер - это просто MMDiT 🤖 а-ля SD3/FLUX.
Из примечательного - интересное решение по учету позиций картиночных и текстовых эмбедов под названием Multimodal Scalable RoPE (MSRoPE). В наивном подходе, каждому токену задавался бы просто позиционный индекс (сверху вниз, слева направо для патчей картинок и токену согласно позиции в тексте). Однако при таком подходе одинаковым образом бы кодировалась большая картинка, и меньшая картинка + текст. Ребята из Квена же предлагают все сэмплы выстраивать в диагональ. И текстовые токены это 1x1 элемент на диагонали.
📊 Данные
Отдельного внимания заслуживает процедура отбора данных. Она представляет собой многостадийных пайплайн, где сначала отфильтровывается совсем всякий шлак, голые тяночки и непотребства, а затем постепенно включаются постепенно все более строгие фильтры на качество и релевантность.
Следуя довольно стандартной практике, сначала обучают на низком разрешении (256px), а затем постепенно повышают до 640px-1328px.
Уже довольно на ранних стадиях отфильтровывают данные с чрезмерно низкой и высокой насыщенностью или контрастностью.
Для captioning используют Qwen-2.5VL (72B?), который выдает не только описание, но и другие метаданные - стиль, тип, водные знаки в виде некой json-ины.
Чтобы улучшить качество генерации текста в датасет заливают большое количество текстов 📝, в том числе и синтетически сгенерированных (некий шаблон вставляется на фон отпимальным образом, и если не шакален - принимается). Кроме того, на основе презентаций пробуют учить на разные сложные layout.
🧠 Процедура обучения
Диффузионный процесс - уже общепринятый flow-matching без танцев с бубнами.
Анализируя эффективность обучения, авторы заметили, что чекпоинтинг активаций сильно замедляет обучение, поэтому отключили его, и использовали только распределенные оптимизаторы. Вместо FSDP используют tensor-параллелизм поверх transformer engine.
Дабы улучшить общее качество и алайнмент, модельку прогоняют через DPO на ручной человеческой разметке и GRPO. Flow-matching ODE - детерминированный процесс, и дабы иметь разнообразие, на этапе GRPO используется стохастическое сэмплирование.
🏢 Архитектура
С архитектурной точки зрения ничего фундаментально нового:
📌 Qwen-2.5VL (7B) в качестве энкодера. Данный выбор позволяет из коробки подавать одновременно текст и изображения, что необходимо для задач редактирования и персонализации. Энкодер заморожен.
📌 В качестве VAE за основу берут энкодер+декодер от коллег из Wan. Однако ее качество не полностью удовлетворяет авторов, поэтому они дообучают декодер при замороженном энкодере. Причем используют только взвешенную сумму MSE и perceptual loss. Адверсариальный лосс якобы скорее мешает. В данные для обучения заливают специально побольше текстов.
📌 Диффузионный трансформер - это просто MMDiT 🤖 а-ля SD3/FLUX.
Из примечательного - интересное решение по учету позиций картиночных и текстовых эмбедов под названием Multimodal Scalable RoPE (MSRoPE). В наивном подходе, каждому токену задавался бы просто позиционный индекс (сверху вниз, слева направо для патчей картинок и токену согласно позиции в тексте). Однако при таком подходе одинаковым образом бы кодировалась большая картинка, и меньшая картинка + текст. Ребята из Квена же предлагают все сэмплы выстраивать в диагональ. И текстовые токены это 1x1 элемент на диагонали.
📊 Данные
Отдельного внимания заслуживает процедура отбора данных. Она представляет собой многостадийных пайплайн, где сначала отфильтровывается совсем всякий шлак, голые тяночки и непотребства, а затем постепенно включаются постепенно все более строгие фильтры на качество и релевантность.
Следуя довольно стандартной практике, сначала обучают на низком разрешении (256px), а затем постепенно повышают до 640px-1328px.
Уже довольно на ранних стадиях отфильтровывают данные с чрезмерно низкой и высокой насыщенностью или контрастностью.
Для captioning используют Qwen-2.5VL (72B?), который выдает не только описание, но и другие метаданные - стиль, тип, водные знаки в виде некой json-ины.
Чтобы улучшить качество генерации текста в датасет заливают большое количество текстов 📝, в том числе и синтетически сгенерированных (некий шаблон вставляется на фон отпимальным образом, и если не шакален - принимается). Кроме того, на основе презентаций пробуют учить на разные сложные layout.
🧠 Процедура обучения
Диффузионный процесс - уже общепринятый flow-matching без танцев с бубнами.
Анализируя эффективность обучения, авторы заметили, что чекпоинтинг активаций сильно замедляет обучение, поэтому отключили его, и использовали только распределенные оптимизаторы. Вместо FSDP используют tensor-параллелизм поверх transformer engine.
Дабы улучшить общее качество и алайнмент, модельку прогоняют через DPO на ручной человеческой разметке и GRPO. Flow-matching ODE - детерминированный процесс, и дабы иметь разнообразие, на этапе GRPO используется стохастическое сэмплирование.
🔥4❤2
🧪Эксперименты
Модельку валидируют на наборе text-2-image и editing бенчмарков. Qwen-Image выдает сильные результаты на GenEval, DPG, в целом опережая опенсорс и даже GPT-Image. На задачах рендеринга текста околосотовый результат на английском и разрывной на китайском (+100500 social credits).
На instruction датасетах вроде бы все тоже очень здорово. Везде не уступает (якобы) GPT-Image опять же с большим разрывом на китайском.
Дообученный VAE демонстрирует лучший PSNR/SSIM (чтобы это ни значило) по сравнению с конкурентными автокодировщиками. Причем разница особенно заметна на текстах.
Еще оно может в детекцию, novel view synthesis и прочие задачи.
💡 Выводы
Очередной качественный опенсорс от китайцев 🇨🇳 💪. Прямо чего-то фундаментального нового, прорывного нет, но видна кропотливая аккуратная работа с использованием всех лучших практик из научной литературы.
Модельку валидируют на наборе text-2-image и editing бенчмарков. Qwen-Image выдает сильные результаты на GenEval, DPG, в целом опережая опенсорс и даже GPT-Image. На задачах рендеринга текста околосотовый результат на английском и разрывной на китайском (+100500 social credits).
На instruction датасетах вроде бы все тоже очень здорово. Везде не уступает (якобы) GPT-Image опять же с большим разрывом на китайском.
Дообученный VAE демонстрирует лучший PSNR/SSIM (чтобы это ни значило) по сравнению с конкурентными автокодировщиками. Причем разница особенно заметна на текстах.
Еще оно может в детекцию, novel view synthesis и прочие задачи.
💡 Выводы
Очередной качественный опенсорс от китайцев 🇨🇳 💪. Прямо чего-то фундаментального нового, прорывного нет, но видна кропотливая аккуратная работа с использованием всех лучших практик из научной литературы.
🔥7👏2
[Релиз]
OpenSource LLMку от опенэйай добавили официально в релиз 4.55 трансформеров от 🤗.
Большинство догадок подтвердились:
📌 2️⃣ модели - большая (120B) и меньшая (20B). Однако обе из них MoE (а не меньшая dense).
📌 FP4 квантизация экспертов. Но, оказалось, что MXFP, а не NVFP.
На хабе где-то лежит оптимизированный кернел под attention_sinks, но ссылка битая.
UPD (веса появились)
- gpt-oss-120b
- gpt-oss-20b
OpenSource LLMку от опенэйай добавили официально в релиз 4.55 трансформеров от 🤗.
Большинство догадок подтвердились:
📌 2️⃣ модели - большая (120B) и меньшая (20B). Однако обе из них MoE (а не меньшая dense).
📌 FP4 квантизация экспертов. Но, оказалось, что MXFP, а не NVFP.
На хабе где-то лежит оптимизированный кернел под attention_sinks, но ссылка битая.
UPD (веса появились)
- gpt-oss-120b
- gpt-oss-20b
👍4🔥1🥱1
Your Efficient RL Framework Secretly Brings You Off-Policy RL Training
[Блогпост]
Для ускорения обучения RL-методов с роллаутами, некоторые фреймворки (VeRL) генерируют траектории с помощью оптимизированных движков инференса, например, vLLM.
Однако, расхождение между разными фреймворками инференса (transformers 🤗 / vLLM) может быть довольно значительным (из-за деталей реализации кернелов). Причем настолько, что при тех же самых весах модели, предсказания могут существенно разняться (другой выбор следующего токена).
Авторы блогпоста замечают, что данная проблема делает on-policy RL по сути off-policy, что негативно сказывается на сходимости.
В качестве решения проблемы предлагается делать своего рода importance sampling с отношением вероятностей модели в фреймворке обучения и инференса. И это хорошо помогает PPO, причем можно даже генерировать роллауты int8 квантизованной моделью без нарушения сходимости. DAPO поверх DeepSeek-R1-Distill-Qwen-1.5B, где отношение вероятностей невелико, работает хорошо и без importance sampling.
Выводы
Мораль басни такова, что численные неточности в DL не всегда совсем безобидны, и временами их стоит иметь в виду. На замерах бенчей результат тоже может существенно разниться между hf и vLLM.
[Блогпост]
Для ускорения обучения RL-методов с роллаутами, некоторые фреймворки (VeRL) генерируют траектории с помощью оптимизированных движков инференса, например, vLLM.
Однако, расхождение между разными фреймворками инференса (transformers 🤗 / vLLM) может быть довольно значительным (из-за деталей реализации кернелов). Причем настолько, что при тех же самых весах модели, предсказания могут существенно разняться (другой выбор следующего токена).
Авторы блогпоста замечают, что данная проблема делает on-policy RL по сути off-policy, что негативно сказывается на сходимости.
В качестве решения проблемы предлагается делать своего рода importance sampling с отношением вероятностей модели в фреймворке обучения и инференса. И это хорошо помогает PPO, причем можно даже генерировать роллауты int8 квантизованной моделью без нарушения сходимости. DAPO поверх DeepSeek-R1-Distill-Qwen-1.5B, где отношение вероятностей невелико, работает хорошо и без importance sampling.
Выводы
Мораль басни такова, что численные неточности в DL не всегда совсем безобидны, и временами их стоит иметь в виду. На замерах бенчей результат тоже может существенно разниться между hf и vLLM.
fengyao on Notion
Your Efficient RL Framework Secretly Brings You Off-Policy RL Training | Notion
Feng Yao* Liyuan Liu* Dinghuai Zhang Chengyu Dong Jingbo Shang Jianfeng Gao
👍14
Для интереса попробовал в Gemini через Deep Research собрать инфу про NVFP формат, и выдало оно довольно неплохую методичку со всеми нужными вводными и обзором актуальной литературы.
Не безупречно, но, на мой скромный взгляд, не хуже многих обзоров, выходящих на архиве. Полагаю, что автоматизированные survey будут все более и более актуальны в дальнейшем. В то же время, креативные аналитические статьи и разборы, с изюминкой автора, все еще останутся востребованными.
[Ссылка на Google Docs]
Не безупречно, но, на мой скромный взгляд, не хуже многих обзоров, выходящих на архиве. Полагаю, что автоматизированные survey будут все более и более актуальны в дальнейшем. В то же время, креативные аналитические статьи и разборы, с изюминкой автора, все еще останутся востребованными.
[Ссылка на Google Docs]
🔥11👍3😢2
Минутка удивительных 🤩 (или не очень) фактов.
Интуитивно кажется, что fp16/bf16 должны быть если не строго математически, то практически близки к некоему непрерывному описанию множества действительных чисел. Во всяком случае, в окрестности нуля. Поэтому вероятность принять конкретное значение должна быть малой. Что-то порядка 1 / мощность множества.
Однако, если сгенерировать x ~N(0, 1) оказывается, что для bfloat16 вероятность, что число окажется в точности нулем не так уж мала - примерно 0.6%. Для float16 и float32, к сравнению, она 0.07%.
И какова мораль 🤔, спрашивается?
Если в коде с bfloat16 (не говоря уже о типах более низкой точности), есть деление на нечто случайное, или граничный случай, стоит внимательнее обрабатывать их. Ибо они не такая уж редкость.
[Ноутбук на колабе]
Интуитивно кажется, что fp16/bf16 должны быть если не строго математически, то практически близки к некоему непрерывному описанию множества действительных чисел. Во всяком случае, в окрестности нуля. Поэтому вероятность принять конкретное значение должна быть малой. Что-то порядка 1 / мощность множества.
Однако, если сгенерировать x ~N(0, 1) оказывается, что для bfloat16 вероятность, что число окажется в точности нулем не так уж мала - примерно 0.6%. Для float16 и float32, к сравнению, она 0.07%.
И какова мораль 🤔, спрашивается?
Если в коде с bfloat16 (не говоря уже о типах более низкой точности), есть деление на нечто случайное, или граничный случай, стоит внимательнее обрабатывать их. Ибо они не такая уж редкость.
[Ноутбук на колабе]
❤21🤔15👍5😁1🤯1
FP4 All the Way: Fully Quantized Training of LLMs
[Статья][Анонимный не анонимный репозитрий]
📘 Введение
Висело оно у меня давно в бэклоге, но в кулуарах напомнили.
С увеличением затрат на обучение больших языковых моделей, когда оно стало переваливать за миллионы GPU часов, все более остро стоит вопрос о том как это делать эффективно.
Как известно, для параметров и активаций моделей не требуется представление вещественных чисел высокой точности, чтобы работать приемлемо. Обучение в половинной точности уже давно стало стандартом, да и в FP8 народ вполне себе успешно обучает. Следующая очевидная цель - обучение в FP4, тем более, что последнее поколение от “зеленых” c блмным названием (Blackwell) имеет его поддержку на уровне архитектуры.
И в ряде работ, вышедших в этом году (Training LLMs with MXFP4, Quartet), включая разбираемую, были предложены техники по стабилизации обучения в FP4.
[Статья][Анонимный не анонимный репозитрий]
📘 Введение
Висело оно у меня давно в бэклоге, но в кулуарах напомнили.
С увеличением затрат на обучение больших языковых моделей, когда оно стало переваливать за миллионы GPU часов, все более остро стоит вопрос о том как это делать эффективно.
Как известно, для параметров и активаций моделей не требуется представление вещественных чисел высокой точности, чтобы работать приемлемо. Обучение в половинной точности уже давно стало стандартом, да и в FP8 народ вполне себе успешно обучает. Следующая очевидная цель - обучение в FP4, тем более, что последнее поколение от “зеленых” c блмным названием (Blackwell) имеет его поддержку на уровне архитектуры.
И в ряде работ, вышедших в этом году (Training LLMs with MXFP4, Quartet), включая разбираемую, были предложены техники по стабилизации обучения в FP4.
🔬 Метод
Форматы FP4
Первым делом исследуют конфигурации форматов FP4. Напомню, что MXFP4 квантизует веса группами по 32 и квантизует скейлы в E8M0, а NVFP4 группами по 16 и скейлы в E4M3. Авторы фиксируют размер группы 16 и перебирают варианты квантизации скейлов от E1M6 до E8M0. Обучают Llama-like LLM на 350M параметров и замечают, что при E4M3/E3M4 скейлах достигается минимальный лосс (при фиксированном числе итераций). Из всех конфигураций расходится только E1M6 (c cамым узким диапазоном). В дальнейшем везде используют E4M3. Блоки размера 16 выбирают так как при больших лосс сходится хуже, а меньшие уже не дают профита.
Стохастическая квантизация
Квантизовать можно к ближайшему значению, а можно стохастически - вверх или вниз, с вероятностью, зависящей от расстояния до соседа.
Ребята из интела перебирают разные варианты детерминистического и стохастического квантования для весов/градиентов и активаций и получают, что лучше всего сходится вариант с детерминированной квантизацией весов и активаций на прямом проходе, и стохастической для градиентов и активаций на обратном проходе, Роль стохастики в квантизации - уменьшить bias, возникающий из-за округления тензоров.
В ходе оптимизации сигнал от градиента постепенно убывает и с какого-то момента перекрывается шумом оптимизации. Не мудрствуя лукаво, авторы предлагают обучать небольшое время с градиентами в более высокой (bf16) точности (на прямом проходе все еще FP4). И это позволяет сойтись до уровня half-precision обучения за то же суммарное число итераций.
🧪Эксперименты
Обучают семейство моделей архитектуры Llama-2 на датасете Красная Пижама. В главном эксперименте учат модель размера 7B на 1Т токенах причем не абы на чем, а на ускорителях Intel Gaudi2 (сыр 🧀 тут ни при чем, это в честь архитектора)
Обучение идет без спайков, лосс отстает несколько от bf16 бейзлайна, но нагоняет после короткой фазы с более точными градиентами (QAF).
0-шоты без QAF чуть хуже безйлайна, с QAF - такие же примерно. Впрочем, все равно оно лишь чуть лучше рандома)
💡 Выводы
Выглядит как очередной аргумент перейти на обучение LLM в FP4. Сам по себе метод выглядит не шибко изощренно, хотя необходимость QAF для лучших результатов несколько противоречит названию статьи (надо было назвать FP4 Most the way). Quartet в этом отношении по изящнее. Интересно, кто из крупных игроков выложит первый техрепорт про полное обучение серьезной модели в FP4? Ставлю либо на Нвидию, либо на Moonshot.
Форматы FP4
Первым делом исследуют конфигурации форматов FP4. Напомню, что MXFP4 квантизует веса группами по 32 и квантизует скейлы в E8M0, а NVFP4 группами по 16 и скейлы в E4M3. Авторы фиксируют размер группы 16 и перебирают варианты квантизации скейлов от E1M6 до E8M0. Обучают Llama-like LLM на 350M параметров и замечают, что при E4M3/E3M4 скейлах достигается минимальный лосс (при фиксированном числе итераций). Из всех конфигураций расходится только E1M6 (c cамым узким диапазоном). В дальнейшем везде используют E4M3. Блоки размера 16 выбирают так как при больших лосс сходится хуже, а меньшие уже не дают профита.
Стохастическая квантизация
Квантизовать можно к ближайшему значению, а можно стохастически - вверх или вниз, с вероятностью, зависящей от расстояния до соседа.
Ребята из интела перебирают разные варианты детерминистического и стохастического квантования для весов/градиентов и активаций и получают, что лучше всего сходится вариант с детерминированной квантизацией весов и активаций на прямом проходе, и стохастической для градиентов и активаций на обратном проходе, Роль стохастики в квантизации - уменьшить bias, возникающий из-за округления тензоров.
В ходе оптимизации сигнал от градиента постепенно убывает и с какого-то момента перекрывается шумом оптимизации. Не мудрствуя лукаво, авторы предлагают обучать небольшое время с градиентами в более высокой (bf16) точности (на прямом проходе все еще FP4). И это позволяет сойтись до уровня half-precision обучения за то же суммарное число итераций.
🧪Эксперименты
Обучают семейство моделей архитектуры Llama-2 на датасете Красная Пижама. В главном эксперименте учат модель размера 7B на 1Т токенах причем не абы на чем, а на ускорителях Intel Gaudi2 (сыр 🧀 тут ни при чем, это в честь архитектора)
Обучение идет без спайков, лосс отстает несколько от bf16 бейзлайна, но нагоняет после короткой фазы с более точными градиентами (QAF).
0-шоты без QAF чуть хуже безйлайна, с QAF - такие же примерно. Впрочем, все равно оно лишь чуть лучше рандома)
💡 Выводы
Выглядит как очередной аргумент перейти на обучение LLM в FP4. Сам по себе метод выглядит не шибко изощренно, хотя необходимость QAF для лучших результатов несколько противоречит названию статьи (надо было назвать FP4 Most the way). Quartet в этом отношении по изящнее. Интересно, кто из крупных игроков выложит первый техрепорт про полное обучение серьезной модели в FP4? Ставлю либо на Нвидию, либо на Moonshot.
❤4🔥1
А еще двое дорогих коллег (один из которых небезызвестный черный саморез) пару часов назад выступили на GPU MODE с рассказом про Квартет.
https://www.youtube.com/watch?v=Uj-QRMDNHC4
https://www.youtube.com/watch?v=Uj-QRMDNHC4
YouTube
Live Quartet 4 bit training
Speakers: Roberto Castro and Andrei Panferov
https://arxiv.org/abs/2505.14669
https://github.com/IST-DASLab/Quartet
https://github.com/isT-DASLab/qutlass
https://arxiv.org/abs/2505.14669
https://github.com/IST-DASLab/Quartet
https://github.com/isT-DASLab/qutlass
🔥10
Диффузия против авторегрессии
[Статья] [Код статьи] [Критикующий её блогпост]
📘 Введение
На текущий момент генеративный мир делят авторегрессионная и диффузионная парадигмы. Первая себя лучше показывает в задачах работы с последовательностями общего вида, вторая — при работе с данными, обладающими некой пространственно-временной структурой.
За последний год было несколько интересных заходов в текстовые генеративки. Основной value proposition — более быстрая генерация за счёт параллельной генерации многих токенов за раз. Но по качеству, при заданном размере модели и бюджете обучения, авторегрессионки всё ещё выглядят предпочтительнее.
Есть ещё один аспект, который может дать мотивацию к использованию текстовых диффузионок — максимально достижимое качество в условиях ограниченного количества данных. И данный вопрос является темой обсуждения ниже.
[Статья] [Код статьи] [Критикующий её блогпост]
📘 Введение
На текущий момент генеративный мир делят авторегрессионная и диффузионная парадигмы. Первая себя лучше показывает в задачах работы с последовательностями общего вида, вторая — при работе с данными, обладающими некой пространственно-временной структурой.
За последний год было несколько интересных заходов в текстовые генеративки. Основной value proposition — более быстрая генерация за счёт параллельной генерации многих токенов за раз. Но по качеству, при заданном размере модели и бюджете обучения, авторегрессионки всё ещё выглядят предпочтительнее.
Есть ещё один аспект, который может дать мотивацию к использованию текстовых диффузионок — максимально достижимое качество в условиях ограниченного количества данных. И данный вопрос является темой обсуждения ниже.
👍3
🔬 Метод
Есть такие scaling laws, описывающие зависимость функции ошибки от размера модели и бюджета обучения. На практике датасет ограничен, и интуитивно понятно, что многократный проход по нему с какого-то момента не будет приносить особой пользы.
В статье было исследование поведение AR LLM в условии ограниченных данных и предложен модифицированный закон Шиншиллы, учитывающий diminishing return от повторного прохода по данным. Для авторегрессивных LM 4-раза эпохи примерно так же хороши, как одна, а дальше польза от роста бюджета обучения уменьшается.
В AR парадигме модель предсказывает обычно следующий токен слева направо (хотя существуют и вариации с произвольным порядком). Диффузионая LLM в самой популярной постановке учится расшумлять исходный текст, в котором токены заменяются с некоторой вероятностью на специальный
AR имеет более сильный inductive bias, но диффузия зато может работать в произвольном порядке и на каждой эпохе видя по-разному данные, может извлечь что-то новое.
Лосс для авторегресии - это честное правдоподобие модели на примере данных, а для диффузии - нижняя граница.
Есть такие scaling laws, описывающие зависимость функции ошибки от размера модели и бюджета обучения. На практике датасет ограничен, и интуитивно понятно, что многократный проход по нему с какого-то момента не будет приносить особой пользы.
В статье было исследование поведение AR LLM в условии ограниченных данных и предложен модифицированный закон Шиншиллы, учитывающий diminishing return от повторного прохода по данным. Для авторегрессивных LM 4-раза эпохи примерно так же хороши, как одна, а дальше польза от роста бюджета обучения уменьшается.
В AR парадигме модель предсказывает обычно следующий токен слева направо (хотя существуют и вариации с произвольным порядком). Диффузионая LLM в самой популярной постановке учится расшумлять исходный текст, в котором токены заменяются с некоторой вероятностью на специальный
[MASK]
токен.AR имеет более сильный inductive bias, но диффузия зато может работать в произвольном порядке и на каждой эпохе видя по-разному данные, может извлечь что-то новое.
Лосс для авторегресии - это честное правдоподобие модели на примере данных, а для диффузии - нижняя граница.
🧪Эксперименты
Авторы обучают семейство Llama-like языковых моделей размером от 7M до 2.5B параметров на выборках до 100М уникальных токенов. Всего обучаются по 100 AR и диффузионных моделей.
Для обеих парадигм строят зависимость валидационного лосса от числа эпох. AR сначала идут бодрее, но потом начинают переобучаться, в то время, как диффузия продолжает улучшаться по лоссу на валидации даже при нескольких сотнях эпох.
И самый низкий лосс достигается диффузионной моделью на заданной сетке параметров. Поверх обученных моделей фитируют data-constrained scaling law откуда выходит, что диффузионки могут несколько сотен раз эффективно проходиться по одним и тем же токенам.
Затем сравнивают 0-шоты, которые едва-едва лучше рандома, используя чекпоинты с наименьшим валидационным лоссом. И диффузия оказывается несколько лучше в data-constrained settings.
Полученный результат авторы объясняют тем, что диффузионная постановка дает автоматически некоторую аугментацию за счет зашумления данных и прохода по последовательностям в произвольном порядке.
Можно ли поднять качество AR-моделей за счет аугментации? Attention drop / маскирование токенов в AR никак не помогает. А вот обучение с разными перестановками порядка токенов будто бы позволяет достичь того же валидационного лосса, что и диффузия.
🤔 Критика
Блогпост, вышедший вскоре, разносит методологию данной статейки, хоть и в целом подтверждает ключевые выводы. Авторы блогпоста обращают внимание на следующие моменты:
📌 Лосс для диффузии и авторегрессии сранивать вообще-то некорректно, так как один - это правдподобие, а другой - оценка на него.
📌 В правильное выражение для лосса диффузии входит множитель, зависящий от шага диффузии, без которого формула, использованная в первой статье неверна.
📌 Early stopping на валидации делать не кошерно. Валидационный лосс для AR может начать расти из-за самоуверенных неточных предсказаний, но качество на бенчмарках все равно продолжит расти. И, собственно, так оно и оказывается.
📌 Используемая зависимости для scaling laws справедлива только в ограниченном диапазоне, так как в ней нигде не возникает возможность роста валидационного лосса, которая имеет место в большом числе эпох.
Критики проводят примерно те же эксперименты, но на больших моделях / объёмах данных и приходят к тому же выводы, что диффузия при большом количестве проходов выходит на лучшее качество.
Кроме того, отмечают авторы, диффузия обладает двухсторонним вниманием, которое более выразительно и потенциально может выжать нечто большее из контекста.
💡 Выводы
Не знаю, насколько близок тот момент, когда человечество будет реально упираться в данные, а не вычисления, и 100 эпох по квадриллиону токенов будет чем-то посильным, а пока на ближайшее будущее авторегрессионная парадигма все еще остается предпочтительной в NLP, будучи более вычислительно эффективной. Интересно, насколько выводы переносятся на файнтьюны на маленьких датасетах. Сможет ли диффузия выжать больше из маленького SFT датасета? Кроме того, диффузионный подход, будучи более молодым здесь, возможно, имеет еще некий потенциал для прокачки.
Авторы обучают семейство Llama-like языковых моделей размером от 7M до 2.5B параметров на выборках до 100М уникальных токенов. Всего обучаются по 100 AR и диффузионных моделей.
Для обеих парадигм строят зависимость валидационного лосса от числа эпох. AR сначала идут бодрее, но потом начинают переобучаться, в то время, как диффузия продолжает улучшаться по лоссу на валидации даже при нескольких сотнях эпох.
И самый низкий лосс достигается диффузионной моделью на заданной сетке параметров. Поверх обученных моделей фитируют data-constrained scaling law откуда выходит, что диффузионки могут несколько сотен раз эффективно проходиться по одним и тем же токенам.
Затем сравнивают 0-шоты, которые едва-едва лучше рандома, используя чекпоинты с наименьшим валидационным лоссом. И диффузия оказывается несколько лучше в data-constrained settings.
Полученный результат авторы объясняют тем, что диффузионная постановка дает автоматически некоторую аугментацию за счет зашумления данных и прохода по последовательностям в произвольном порядке.
Можно ли поднять качество AR-моделей за счет аугментации? Attention drop / маскирование токенов в AR никак не помогает. А вот обучение с разными перестановками порядка токенов будто бы позволяет достичь того же валидационного лосса, что и диффузия.
🤔 Критика
Блогпост, вышедший вскоре, разносит методологию данной статейки, хоть и в целом подтверждает ключевые выводы. Авторы блогпоста обращают внимание на следующие моменты:
📌 Лосс для диффузии и авторегрессии сранивать вообще-то некорректно, так как один - это правдподобие, а другой - оценка на него.
📌 В правильное выражение для лосса диффузии входит множитель, зависящий от шага диффузии, без которого формула, использованная в первой статье неверна.
📌 Early stopping на валидации делать не кошерно. Валидационный лосс для AR может начать расти из-за самоуверенных неточных предсказаний, но качество на бенчмарках все равно продолжит расти. И, собственно, так оно и оказывается.
📌 Используемая зависимости для scaling laws справедлива только в ограниченном диапазоне, так как в ней нигде не возникает возможность роста валидационного лосса, которая имеет место в большом числе эпох.
Критики проводят примерно те же эксперименты, но на больших моделях / объёмах данных и приходят к тому же выводы, что диффузия при большом количестве проходов выходит на лучшее качество.
Кроме того, отмечают авторы, диффузия обладает двухсторонним вниманием, которое более выразительно и потенциально может выжать нечто большее из контекста.
💡 Выводы
Не знаю, насколько близок тот момент, когда человечество будет реально упираться в данные, а не вычисления, и 100 эпох по квадриллиону токенов будет чем-то посильным, а пока на ближайшее будущее авторегрессионная парадигма все еще остается предпочтительной в NLP, будучи более вычислительно эффективной. Интересно, насколько выводы переносятся на файнтьюны на маленьких датасетах. Сможет ли диффузия выжать больше из маленького SFT датасета? Кроме того, диффузионный подход, будучи более молодым здесь, возможно, имеет еще некий потенциал для прокачки.
❤8👍3
Give Me FP32 or Give Me Death? Challenges and Solutions for Reproducible Reasoning
[Статья][Код]
Введение
На днях от думающих 🤔 машин Миры Мурати вышел занятный блогпостик про воспроизводимость ответов LLM.
В июне этого года вышла статья посвященная той же проблеме с упором на ризонинг с хайпожорским 😆 названием. Ее и сегодня и разберем.
[Статья][Код]
Введение
На днях от думающих 🤔 машин Миры Мурати вышел занятный блогпостик про воспроизводимость ответов LLM.
В июне этого года вышла статья посвященная той же проблеме с упором на ризонинг с хайпожорским 😆 названием. Ее и сегодня и разберем.
👍6
🔬 Метод
Процедура жадного декодирования в LLMах на каждом шаге выбирает токен с наибольшей вероятностью, и, казалось, бы должна быть полностью детерминированной. Выдавать один и тот же ответ на разных размерах батча, GPU. Но не тут то было…
Корень зла в том, что арифметические операции в конечной точности не ассоциативны из-за точности округления:
Исполняться они могут в разном порядке, что и приводит к недетерминированным выходам.
Для FP32 проблема стоит еще не так остро из-за большой мантиссы, но для BF16 c 7 битами мантиссы эффект может быть вполне осязаемым.
Дабы оценить разброс в зависимости от экспериментальной конфигурации, авторы подготовили 12 конфигураций: 2 типа GPU, распараллеливанием на 2 и 4 GPU и 3 варианта размера батча и для каждого из них посчитали метрики на бенчах.
🧪Эксперименты
Рассматривают 2 ризонящие модели:
- DeepSeek-R1-Distill-
- Qwen-7B, DeepSeek-R1-Distill-Llama-8B
и 2 неризонящие:
- Qwen2.5-7B-Instruct
- Llama-3.1-8B-Instruct
И замеряют на всяком там AIME и LiveCodeBench.
И обнаруживают следующее:
📌 При жадном декодировании разброс для BF16 довольно нетривиален - 1%, а то и 5-9% для ризонящих моделей. Для FP16 разброс меньше, и для FP32 еще меньше. Примечательно, что для дистиллов дипсика разброс даже для FP32 иногда нетривиален.
📌 Средняя выходная длина может очень сильно варьироваться от конфигурации. До 9000 токенов на AIME.
Авторы присматриваются к вероятностям логитов моделей и замечают, что зачастую разница между top-1 и top-2 невелика. В особенности, для рассуждающих моделей. И изменения последнего значащего бита может быть достаточно, что изменить предсказание следующего токена.
💡 Выводы
Учитывая приведенные выше нюансы, авторы утверждают, что для хорошей воспроизводимости необходимо инферить в более высокой точности, что, конечно, потребует больших вычислительных затрат, но, мол, куда деваться. Дабы не хранить чекпоинт в FP32 весь в памяти, предлагается держать его в исходной точности, а затем делать upcast в FP32 на лету.
Мораль такова - эффект от конечной точности LLM вполне весомый, и если нужно выбить соту - вполне рабочая стратегия шатать размер батча и железо для инференса 😅.
Процедура жадного декодирования в LLMах на каждом шаге выбирает токен с наибольшей вероятностью, и, казалось, бы должна быть полностью детерминированной. Выдавать один и тот же ответ на разных размерах батча, GPU. Но не тут то было…
Корень зла в том, что арифметические операции в конечной точности не ассоциативны из-за точности округления:
(a + b) + c вообще говоря не a + (b + c)
Исполняться они могут в разном порядке, что и приводит к недетерминированным выходам.
Для FP32 проблема стоит еще не так остро из-за большой мантиссы, но для BF16 c 7 битами мантиссы эффект может быть вполне осязаемым.
Дабы оценить разброс в зависимости от экспериментальной конфигурации, авторы подготовили 12 конфигураций: 2 типа GPU, распараллеливанием на 2 и 4 GPU и 3 варианта размера батча и для каждого из них посчитали метрики на бенчах.
🧪Эксперименты
Рассматривают 2 ризонящие модели:
- DeepSeek-R1-Distill-
- Qwen-7B, DeepSeek-R1-Distill-Llama-8B
и 2 неризонящие:
- Qwen2.5-7B-Instruct
- Llama-3.1-8B-Instruct
И замеряют на всяком там AIME и LiveCodeBench.
И обнаруживают следующее:
📌 При жадном декодировании разброс для BF16 довольно нетривиален - 1%, а то и 5-9% для ризонящих моделей. Для FP16 разброс меньше, и для FP32 еще меньше. Примечательно, что для дистиллов дипсика разброс даже для FP32 иногда нетривиален.
📌 Средняя выходная длина может очень сильно варьироваться от конфигурации. До 9000 токенов на AIME.
Авторы присматриваются к вероятностям логитов моделей и замечают, что зачастую разница между top-1 и top-2 невелика. В особенности, для рассуждающих моделей. И изменения последнего значащего бита может быть достаточно, что изменить предсказание следующего токена.
💡 Выводы
Учитывая приведенные выше нюансы, авторы утверждают, что для хорошей воспроизводимости необходимо инферить в более высокой точности, что, конечно, потребует больших вычислительных затрат, но, мол, куда деваться. Дабы не хранить чекпоинт в FP32 весь в памяти, предлагается держать его в исходной точности, а затем делать upcast в FP32 на лету.
Мораль такова - эффект от конечной точности LLM вполне весомый, и если нужно выбить соту - вполне рабочая стратегия шатать размер батча и железо для инференса 😅.
🔥8❤2😁2👍1
На канале GPU MODE пару недель назад вышла интересная лекция от Кристофера Де Са (один из чуваков, стоявших за QuIP/QuIP#/QTIP/YAQA, а точнее за теоретической подоплекой всего перечисленного).
В ней он дает некоторую базу про задачу квантизации, квадратичные приближения, откуда берется GPTQ и Incoherence Processing. В частности, я сам наконец понял, как можно было дойти до разложения Холески в GPTQ 😄.
Базарит дядька довольно забавно и корчит физиономии, так что не заскучаете.
В ней он дает некоторую базу про задачу квантизации, квадратичные приближения, откуда берется GPTQ и Incoherence Processing. В частности, я сам наконец понял, как можно было дойти до разложения Холески в GPTQ 😄.
Базарит дядька довольно забавно и корчит физиономии, так что не заскучаете.
YouTube
Lecture 73: [ScaleML Series] Quantization in Large Models
Day 3: Quantization in Large Models by Professor Chris De Sa.
Full Schedule: https://scale-ml.org/bootcamp/
The GPU MODE x Scale ML speaker series is a 5-day, online event hosted on the GPU MODE YouTube channel where top researchers in AI will talk about…
Full Schedule: https://scale-ml.org/bootcamp/
The GPU MODE x Scale ML speaker series is a 5-day, online event hosted on the GPU MODE YouTube channel where top researchers in AI will talk about…
🔥17❤6