Мой друг Саид замутил модельку мирового уровня, поэтому считаю важным поделиться с вами 😎
3🔥15
Forwarded from CV Time
Как LLaMA 3.1 работает с изображениями
Сегодня расскажем, как LLaMA 3.1 работает с изображениями. Как устроена архитектура модели, на чём её обучали и какие результаты она показывает на разных бенчмарках.
В основе энкодера изображений в Llama 3 выступает модель ViT-H/14 с 630 миллионами параметров, обученная на наборе из 2,5 миллиарда пар изображений и текстов. Картинку, полученную на вход, делят на патчи размером 16X16, прогоняют через линейное преобразование и трансформерные слои.
На выходе получается картиночное представление из 2 308 токенов, что весьма много. Эта последовательность с помощью кросс-аттеншен блоков подается в LLM. Это интересно, потому что, как правило, в мультимодальных LLM (visual language models, VLM) картиночные токены подают прямо в промпт, добавляя к текстовым. Это сделано для того, чтобы заморозить веса LLM и обучать только голубые блоки на схеме.
Тем самым не забивается исходный контекст LLM, а свойства модели на текстовом домене не теряются. Веса языковой модели остаются замороженными, чтобы сохранить производительность на текстовых задачах, то есть обновляются только веса визуального энкодера и адаптера изображений.
Что касается видео, то тут меняется количество кадров на входе: на претрейне их 16, а на файнтюне — 64. Далее их сводят к фиксированной размерности и точно так же, как с изображениями, добавляют через кросс-аттеншн в LLM.
На претрейне используют 6 миллиардов пар картинка-текст. Для фильтрации датасета убирают все описания на языках, отличных от английского, и пары с низким CLIP-скором. Дальше происходит дедупликация, чтобы исключить часто повторяющиеся картинки.
В ходе ресемплирования текстовых описаний их частотность понижают. Кроме того, в каждое описание добавляют распознанный на картинке текст — это нужно для улучшения результатов на задачах, которые требуют использования OCR.
Существует весьма необычная стадия пост-претрейна — с применением небольшого датасета на 500 миллионов сэмплов. 150 миллионов из них — это изображения вроде скриншотов с HTML-кодами и таблицами.
На файнтюне инженеры прибегают к ещё одному нестандартному трюку — hot-swap. Они подменяют веса предварительно обученной LLM на веса языковой модели, прошедшей Instruction Tuning. На SFT используют академические датасеты, ответы, написанные людьми, и синтетические данные — например, изображения, созданные из текстовых описаний.
Далее создают пары, оцененные асессорами по семибалльной шкале. Кроме того, есть процедура Rejection sampling для итеративного выбора высококачественных ответов, сгенерированных моделью. Потом авторы статьи обучают reward-модель и делают DPO, как и для текстовой модели.
Получившаяся модель на 405 миллиардов параметров показывает 80,2 пункта в бенчмарке VQAv2 и 84,8 пункта в TextVQA. При этом она уступает Claude 3.5 в DocVQA, ChartQA и AI2 Diagram.
Разбор подготовил❣ Роман Исаченко
CV Time
Сегодня расскажем, как LLaMA 3.1 работает с изображениями. Как устроена архитектура модели, на чём её обучали и какие результаты она показывает на разных бенчмарках.
В основе энкодера изображений в Llama 3 выступает модель ViT-H/14 с 630 миллионами параметров, обученная на наборе из 2,5 миллиарда пар изображений и текстов. Картинку, полученную на вход, делят на патчи размером 16X16, прогоняют через линейное преобразование и трансформерные слои.
На выходе получается картиночное представление из 2 308 токенов, что весьма много. Эта последовательность с помощью кросс-аттеншен блоков подается в LLM. Это интересно, потому что, как правило, в мультимодальных LLM (visual language models, VLM) картиночные токены подают прямо в промпт, добавляя к текстовым. Это сделано для того, чтобы заморозить веса LLM и обучать только голубые блоки на схеме.
Тем самым не забивается исходный контекст LLM, а свойства модели на текстовом домене не теряются. Веса языковой модели остаются замороженными, чтобы сохранить производительность на текстовых задачах, то есть обновляются только веса визуального энкодера и адаптера изображений.
Что касается видео, то тут меняется количество кадров на входе: на претрейне их 16, а на файнтюне — 64. Далее их сводят к фиксированной размерности и точно так же, как с изображениями, добавляют через кросс-аттеншн в LLM.
На претрейне используют 6 миллиардов пар картинка-текст. Для фильтрации датасета убирают все описания на языках, отличных от английского, и пары с низким CLIP-скором. Дальше происходит дедупликация, чтобы исключить часто повторяющиеся картинки.
В ходе ресемплирования текстовых описаний их частотность понижают. Кроме того, в каждое описание добавляют распознанный на картинке текст — это нужно для улучшения результатов на задачах, которые требуют использования OCR.
Существует весьма необычная стадия пост-претрейна — с применением небольшого датасета на 500 миллионов сэмплов. 150 миллионов из них — это изображения вроде скриншотов с HTML-кодами и таблицами.
На файнтюне инженеры прибегают к ещё одному нестандартному трюку — hot-swap. Они подменяют веса предварительно обученной LLM на веса языковой модели, прошедшей Instruction Tuning. На SFT используют академические датасеты, ответы, написанные людьми, и синтетические данные — например, изображения, созданные из текстовых описаний.
Далее создают пары, оцененные асессорами по семибалльной шкале. Кроме того, есть процедура Rejection sampling для итеративного выбора высококачественных ответов, сгенерированных моделью. Потом авторы статьи обучают reward-модель и делают DPO, как и для текстовой модели.
Получившаяся модель на 405 миллиардов параметров показывает 80,2 пункта в бенчмарке VQAv2 и 84,8 пункта в TextVQA. При этом она уступает Claude 3.5 в DocVQA, ChartQA и AI2 Diagram.
Разбор подготовил
CV Time
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1😎1 1
Новый взгляд на диффузии
В появившееся свободное время я наконец добрался до постов sander.ai (он занимается Veo 2 в Google DeepMind). И тут, бац, спустя столько времени, сильно изменилось моё понимание диффузии. Поэтому вот основные тейки, которые вы можете применять во всех сферах DL.
1️⃣ Главная фишка диффузии — это способность описывать очень сложное распределение. У классических моделей вроде GAN и VAE есть ограничения: они, по сути, работают с одним доменом и одними и теми же типами картинок. Диффузия же способна моделировать произвольное распределение. Если нужно описать что-то действительно сложное и многогранное, стоит обратить внимание именно на диффузию.
2️⃣ Диффузию и авторегрессия связаны! В эпоху мультимодальности существуют два подхода — диффузия и авторегрессия. Оба работают, и поэтому хочется их объединить. Видим, что есть диффузию для LLM и авторегрессивную генерацию изображений.
Пока что ни один из этих подходов не достигает SOTA (state of the art) на «чужом» домене. Причина в том, что у генерации текста и у генерации изображений разные функции ошибки:
- Авторегрессия максимизирует вероятность каждого пикселя, что даёт детализированные фрагменты, но общее изображение может выглядеть странно.
- Человек видит картинку целиком, а уж затем вглядывается в детали. Сначала воспринимаются «низкие частоты» — общий план, и только потом «высокие частоты» — мелкие детали.
- Диффузия, по сути, — это авторегрессия в пространстве частот: сначала формируется эскиз (низкие частоты), затем дорисовываются детали (высокие) с учётом эскиза.
Тут и есть пересечении, на которой могут развиваться оба подхода.
3️⃣ Trade-off между качеством и скоростью. Раньше я не понимал, зачем менять скорость генерации на качество. Но с точки зрения продукта это имеет смысл: меньше шагов диффузии — быстрее работа, больше шагов — лучше итоговое качество. Было бы здорово перенять подобную гибкость и для LLM; вполне возможно, что именно на таких компромиссах будет строиться более совершённый reasoning, когда за счёт политики на основе диффузии будет выбираться насколько подробным может быть ответ.
😎 Conclusion
Важно постоянно развиваться и узнавать новое, особенно в мире, где технологии меняются так быстро. Я уже обновил свою подборку по диффузиям, а в ближайшее время планирую добавить туда и материалы про видеомодели — следите за обновлениями!
В появившееся свободное время я наконец добрался до постов sander.ai (он занимается Veo 2 в Google DeepMind). И тут, бац, спустя столько времени, сильно изменилось моё понимание диффузии. Поэтому вот основные тейки, которые вы можете применять во всех сферах DL.
Пока что ни один из этих подходов не достигает SOTA (state of the art) на «чужом» домене. Причина в том, что у генерации текста и у генерации изображений разные функции ошибки:
- Авторегрессия максимизирует вероятность каждого пикселя, что даёт детализированные фрагменты, но общее изображение может выглядеть странно.
- Человек видит картинку целиком, а уж затем вглядывается в детали. Сначала воспринимаются «низкие частоты» — общий план, и только потом «высокие частоты» — мелкие детали.
- Диффузия, по сути, — это авторегрессия в пространстве частот: сначала формируется эскиз (низкие частоты), затем дорисовываются детали (высокие) с учётом эскиза.
Тут и есть пересечении, на которой могут развиваться оба подхода.
😎 Conclusion
Важно постоянно развиваться и узнавать новое, особенно в мире, где технологии меняются так быстро. Я уже обновил свою подборку по диффузиям, а в ближайшее время планирую добавить туда и материалы про видеомодели — следите за обновлениями!
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍10❤4 2🔥1
Диффузионные модели для видео: с чего начать? /w @Magistrkoljan
Сегодня я расскажу, как минимальными усилиями начать свой путь в мире диффузионных моделей для генерации видео. Если вы не знаете, что такое диффузионные модели, то рекомендую сначала прочитать guidebook по диффузионным моделям. Начнём!
Туториалы
Отличной стартовой точкой будет прохождение туториалов, где можно получить обзор всей области: от как модифицировать картиночную модель для генерации видео и до как учить полноценную модель с нуля и еще потом дообучать.
• Видео-обзор диффузионных моделей для видео
• Текстовый обзор от ранних до моделей, до самых актуальных
Прикладные фреймворки
Если теория вас не впечатляет, то советую потыкаться в демки:
• Анимируем своё лицо - используем подход Live portraitнедиффузионный, но всё равно прикольно (пример в комментариях)
• Быстрая генерация видео - используем LTX-Video — дешево и сердито
Если хотите сами покодить, то вот вам:
• Запуск подхода AnimateDiff - самый простой подход по генерации видео на основе картиночной модели
• Запуск модели через diffusers - из коробки запустить CogVideo можно и на колабе
Если у вас еще есть и деньги:
• Kling — для генерации различного контента + фишки в виде генерации по реферансам
• Gen 3 — для генерации image-to-video
Основные модели
Если вам хочется разобраться в технических деталях, обратите внимание на два глубоких техрепорта:
• MovieGen от Meta
• Cosmos1 от NVIDIA
В материалах описаны все детали: сбор данных, детали архитектуры, подходы по обучению.
Прикольные применения видео моделей
Применимость видео моделей как будто безгранична, они могут помогать во всех задачах компьютерного зрения (поэтому и вам стоит их изучить 😊).
Меня больше всего поразила генерация игр на ходу — сел в самолёт и можно поиграть в Minecraft или CS2
• OASIS
• DIAMOND
За какими подходами стоит следить?
• Diffusion Forcing - авторам удалось соединить авторегрессию и диффузии, что достаточно сложно и я писал про их сложность вот тут
• CausVid - сделали реалтайм генерацию видео, вы можете смотреть видео и оно дальше продолжает генерироваться 😱
Чтобы оставаться в курсе дел:
• Awesome-Video-Diffusion - я для себя ничего не нашел лучше это гитхаба, его обновляет каждый день мой знакомый, по совместительству автор фичи Motion Brush в Kling
❗️Сохраняйте к себе и пересылайте друзьям, чтобы все были в теме. Пишите в комментариях ваши замечания и идеи, чем можно дополнить обзор
Сегодня я расскажу, как минимальными усилиями начать свой путь в мире диффузионных моделей для генерации видео. Если вы не знаете, что такое диффузионные модели, то рекомендую сначала прочитать guidebook по диффузионным моделям. Начнём!
Туториалы
Отличной стартовой точкой будет прохождение туториалов, где можно получить обзор всей области: от как модифицировать картиночную модель для генерации видео и до как учить полноценную модель с нуля и еще потом дообучать.
• Видео-обзор диффузионных моделей для видео
• Текстовый обзор от ранних до моделей, до самых актуальных
Прикладные фреймворки
Если теория вас не впечатляет, то советую потыкаться в демки:
• Анимируем своё лицо - используем подход Live portrait
• Быстрая генерация видео - используем LTX-Video — дешево и сердито
Если хотите сами покодить, то вот вам:
• Запуск подхода AnimateDiff - самый простой подход по генерации видео на основе картиночной модели
• Запуск модели через diffusers - из коробки запустить CogVideo можно и на колабе
Если у вас еще есть и деньги:
• Kling — для генерации различного контента + фишки в виде генерации по реферансам
• Gen 3 — для генерации image-to-video
Основные модели
Если вам хочется разобраться в технических деталях, обратите внимание на два глубоких техрепорта:
• MovieGen от Meta
• Cosmos1 от NVIDIA
В материалах описаны все детали: сбор данных, детали архитектуры, подходы по обучению.
Прикольные применения видео моделей
Применимость видео моделей как будто безгранична, они могут помогать во всех задачах компьютерного зрения (поэтому и вам стоит их изучить 😊).
Меня больше всего поразила генерация игр на ходу — сел в самолёт и можно поиграть в Minecraft или CS2
• OASIS
• DIAMOND
За какими подходами стоит следить?
• Diffusion Forcing - авторам удалось соединить авторегрессию и диффузии, что достаточно сложно и я писал про их сложность вот тут
• CausVid - сделали реалтайм генерацию видео, вы можете смотреть видео и оно дальше продолжает генерироваться 😱
Чтобы оставаться в курсе дел:
• Awesome-Video-Diffusion - я для себя ничего не нашел лучше это гитхаба, его обновляет каждый день мой знакомый, по совместительству автор фичи Motion Brush в Kling
❗️Сохраняйте к себе и пересылайте друзьям, чтобы все были в теме. Пишите в комментариях ваши замечания и идеи, чем можно дополнить обзор
🔥18❤3👍3
Для дальнейшего углубления
Для обучения видеомоделей нужны:
1) большие вычислительные ресурсы и умения работать с ними
2) правильная предобработка и разметка данных
3) новые виды метрик, чтобы оценивать качество моделей
Пойдем по порядку:
Обучение моделей:
Для обучения видео моделей жизненно-важно уметь обучать большие модели. Поэтому рекомендую прочитать про различные виды параллелизма, без которых обучение видеомоделей невозможно. Для самого обучения рекомендую фреймворк torchtitan — нет сложности как в обёртках в виде lightning все +- на дефолтном торче. Последний обзор от HF.
Работа с данными
Вторая сложность это сбор данных. Видео весит очень много, и поэтому вам неожиданно может прилететь бан по ip за скачивание. Поэтому подготовьтесь к покупке большого числа прокси, чтобы можно было скачать все данные.
Чтобы обработать видео вам пригодятся:
• Библиотека для нарезки видео на сцены — выявляет нужные сцены на изображении
• InternVL2.5 или Tarsier — пригодятся вам для получения текстовых описаний видео
• Модель для оценивания движения на изображении — слишком статичные или слишком быстрые видео лучше убрать
Оценка качества моделей
• Для оценки качества используется обычно VBench или MovieGenBench. Из метрик замеряют качество изображения, соответствие текстовому промпту и консистентность видео и т.д. Критериев очень много поэтому за подробностями лучше глянуть в статью.
Инференс моделей
Ну и когда ваша модель готова, то важным становится эффективно инференсить её:
• FastVideo от hao-ai-lab - ускоренная версия модели HVideo
• xDiT - использует несколько видеокарт при инференсе, за счёт чего получается ускорение
Статьи:
И в конце хочется добавить основные статьи, которые вы можете изучить для полного понимания всей картины, в дополнению к основному посту:
• HunuyaunVideo
• CogVideoX
• VideoWorld
• LuminaVideo
• Goku
Для обучения видеомоделей нужны:
1) большие вычислительные ресурсы и умения работать с ними
2) правильная предобработка и разметка данных
3) новые виды метрик, чтобы оценивать качество моделей
Пойдем по порядку:
Обучение моделей:
Для обучения видео моделей жизненно-важно уметь обучать большие модели. Поэтому рекомендую прочитать про различные виды параллелизма, без которых обучение видеомоделей невозможно. Для самого обучения рекомендую фреймворк torchtitan — нет сложности как в обёртках в виде lightning все +- на дефолтном торче. Последний обзор от HF.
Работа с данными
Вторая сложность это сбор данных. Видео весит очень много, и поэтому вам неожиданно может прилететь бан по ip за скачивание. Поэтому подготовьтесь к покупке большого числа прокси, чтобы можно было скачать все данные.
Чтобы обработать видео вам пригодятся:
• Библиотека для нарезки видео на сцены — выявляет нужные сцены на изображении
• InternVL2.5 или Tarsier — пригодятся вам для получения текстовых описаний видео
• Модель для оценивания движения на изображении — слишком статичные или слишком быстрые видео лучше убрать
Оценка качества моделей
• Для оценки качества используется обычно VBench или MovieGenBench. Из метрик замеряют качество изображения, соответствие текстовому промпту и консистентность видео и т.д. Критериев очень много поэтому за подробностями лучше глянуть в статью.
Инференс моделей
Ну и когда ваша модель готова, то важным становится эффективно инференсить её:
• FastVideo от hao-ai-lab - ускоренная версия модели HVideo
• xDiT - использует несколько видеокарт при инференсе, за счёт чего получается ускорение
Статьи:
И в конце хочется добавить основные статьи, которые вы можете изучить для полного понимания всей картины, в дополнению к основному посту:
• HunuyaunVideo
• CogVideoX
• VideoWorld
• LuminaVideo
• Goku
Подборка каналов
Ребята предложили залететь в подборку каналов, я согласился, потому что ребята — топ! Так что про всех понемногу:
• Захар — человеку 18 лет, а ведет один из немногих каналов по аудио и делает уже свой стартап
• Антон — руководитель OCR команды в яндексе и делает прикольные посты про то как быть руководителем (мне сейчас актуально)
• Дэнчик — легенда в 15 лет статья на А* делает офигенные модельки на аудио
• Андрей — уважаемый человек, прошли одну школу жизни МФТИ + Сколтех. Мне нравятся его лайфхаки
• Никиты — прикольный посты про систем дизайну и его путь в ML
• Коля — постит полезное, но в основном мемы (иногда и отдохнуть хочется).
• Дима — офигенно пишет про ML, есть подборка с материалами, а также пишет много про основы ML и системный дизайн, что я считаю важным знать, но самому уже не интересно про это писать :(
• Александр — придумал интересный для меня формат обзоров на посты других людей), что уже за гранью моего понимания, но думаю мега эффективным людям будет полезно
• Сергей Николенко — уважаемый человек, поднимал ML, еще когда я был ребёнком. Тут просто человеку респект.
Ребята предложили залететь в подборку каналов, я согласился, потому что ребята — топ! Так что про всех понемногу:
• Захар — человеку 18 лет, а ведет один из немногих каналов по аудио и делает уже свой стартап
• Антон — руководитель OCR команды в яндексе и делает прикольные посты про то как быть руководителем (мне сейчас актуально)
• Дэнчик — легенда в 15 лет статья на А* делает офигенные модельки на аудио
• Андрей — уважаемый человек, прошли одну школу жизни МФТИ + Сколтех. Мне нравятся его лайфхаки
• Никиты — прикольный посты про систем дизайну и его путь в ML
• Коля — постит полезное, но в основном мемы (иногда и отдохнуть хочется).
• Дима — офигенно пишет про ML, есть подборка с материалами, а также пишет много про основы ML и системный дизайн, что я считаю важным знать, но самому уже не интересно про это писать :(
• Александр — придумал интересный для меня формат обзоров на посты других людей), что уже за гранью моего понимания, но думаю мега эффективным людям будет полезно
• Сергей Николенко — уважаемый человек, поднимал ML, еще когда я был ребёнком. Тут просто человеку респект.
🔥9👍2 2🤯1
«Вы открываете изображения неправильно!»
В современных архитектурах машинного обучения загрузка изображений из файлов часто становится узким местом из-за ограничений CPU. Каждая миллисекунда на подготовку данных имеет значение, особенно при работе с большими датасетами и сложными моделями.
Я решил проверить эффективность стандартных инструментов и сравнил производительность Pytorch DataLoader с NVIDIA DALI — библиотекой, специально разработанной для ускорения загрузки и предварительной обработки изображений.
Результаты эксперимента:
• JPEG: За 10 эпох обработки 1000 изображений NVIDIA DALI справился за 4 секунды, в то время как Pytorch потребовал 55 секунд — разница более чем в 15 раз!
• PNG: Для изображений в формате PNG разница также заметна: 16 секунд против 55 секунд.
Код
Потыкаться в код можно тут
оставил в комментариях версию поста от MrBeast для более расслабленного чтения
В современных архитектурах машинного обучения загрузка изображений из файлов часто становится узким местом из-за ограничений CPU. Каждая миллисекунда на подготовку данных имеет значение, особенно при работе с большими датасетами и сложными моделями.
Я решил проверить эффективность стандартных инструментов и сравнил производительность Pytorch DataLoader с NVIDIA DALI — библиотекой, специально разработанной для ускорения загрузки и предварительной обработки изображений.
Результаты эксперимента:
• JPEG: За 10 эпох обработки 1000 изображений NVIDIA DALI справился за 4 секунды, в то время как Pytorch потребовал 55 секунд — разница более чем в 15 раз!
• PNG: Для изображений в формате PNG разница также заметна: 16 секунд против 55 секунд.
Код
Потыкаться в код можно тут
👍14🔥6
⚡️SageAttention — brand new attention
Flash Attention бустит классический attention по скорости, но что если я скажу, что можно еще быстрее, если правильно квантизовать Flash Attention. Sage Attention за счёт умной квантизации + понимании CUDA ускоряют Flash Attention 2 от 2x до 5x раз.
Небольшое введение в квантизацию.
Допустим, у нас есть матрица A, которую мы хотим перевести из формата FP16 в INT8. Для этого:
1. Сначала находим максимальное абсолютное значение элементов матрицы и вычисляем коэффициент скейлинга (scale factor):
δA = max(|A|) / 127
2. Делим исходную матрицу на этот коэффициент и округляем, получая матрицу низкой точности \hat{A} (например, INT8):
 = round(A / δA)
3. После вычислений в низкой точности (например, произведения матриц AB), получаем итоговый результат, снова умножая на коэффициенты скейлинга:
C ≈ (Â × B̂) × (δA × δB)
Здесь приведен простой пример квантизации — на самом деле, факторы скейлинга можно выбирать для каждой строчки отдельно, что улучшить качество за счёт бОльшего числа факторов. В статье SageAttention про это подробно рассказано, рекомендую ознакомиться.
Основной проблемой данного подхода является то, что могут возникать выбросы:
Например, если в исходной матрице A:
A = [0.1, 0.2, 0.15, 1000]
То коэффициент скейлинга будет:
δA = 1000 / 127 ≈ 7.87
И после квантизации получится:
A_quant = round(A / δA) = [0, 0, 0, 127]
Поэтому залог успешной квантизации, подумать головой и разобраться с выбросами, что и сделали в SageAttention.
Небольшое введение в формулы и погнали:
➤ P = Attention = Softmax(QK^T / \sqrt{d})
➤ V - value -> V* = PV
SageAttention:
➤ Переводим вычисление QK^T в INT8 и стабилизируем выбросы с помощью нормализации матрицы K (это стандартная техника для борьбы с выбросами, берите на вооружение!). Дополнительно оптимально подбираем стратегию квантизации, глядя на структуру самих матриц.
➤ Делаем фьюзинг (объединение) операций скейлинга и анскейлинга с соседними слоями.
➤ Вычисление PV делаем в FP16 — так стабильнее, потому что FP8 слишком сильно теряет точность.
SageAttention2:
➤ Современные GPU (например, Nvidia H100) поддерживают не только INT8, но и INT4. Поэтому теперь делаем квантизацию матриц Q и K в INT4, а также дополнительно нормализуем матрицу Q, чтобы не искажать итоговый результат attention.
➤ Реализуем глубокие CUDA-оптимизации. Например, оказывается, что масштабирование при квантизации можно параллельно применять сразу к элементам векторов по специальной формуле (каждый 8i + 2k + 1-й элемент). Жёсткая оптимизация на низком уровне GPU 🔥
➤ Вычисления PV делаем в FP8, так как теперь нашли способ стабилизировать результат при помощи двойной буферизации с FP32
SpargeAttention:
➤ FlashAttention работает с матрицами поблочно. Если какой-то блок attention заполнен нулями, то считать его нет смысла — результат не изменится.
➤ Авторы придумали механизм, как быстро находить и пропускать такие блоки на основе похожести матриц Q и K.
➤ Дополнительно, в процессе вычисления attention можно пропускать отдельные блоки, основываясь на пороге.
➤ Поверх этой разреженности используется подход из SageAttention2 (с INT4-квантизацией и CUDA-оптимизациями).
Результат
🔥 SageAttention уже быстрее, чем FlashAttention2 примерно в 2.1 раза (на RTX4090), а также на 2.7 раза быстрее xformers. При этом точность моделей практически не страдает.
🔥 SageAttention2 ускоряет attention примерно в 3 раза по сравнению с FlashAttention2 и в 4.5 раза быстрее xformers на RTX4090.
🔥 SpargeAttn ускоряет inference дополнительно, обеспечивая от 2.5 до 5 раз быстрее по сравнению с другими методами attention.
Как применить у себя.
Устанавливаем библиотеку и дальше делаем вот так
Flash Attention бустит классический attention по скорости, но что если я скажу, что можно еще быстрее, если правильно квантизовать Flash Attention. Sage Attention за счёт умной квантизации + понимании CUDA ускоряют Flash Attention 2 от 2x до 5x раз.
Небольшое введение в квантизацию.
1. Сначала находим максимальное абсолютное значение элементов матрицы и вычисляем коэффициент скейлинга (scale factor):
δA = max(|A|) / 127
2. Делим исходную матрицу на этот коэффициент и округляем, получая матрицу низкой точности \hat{A} (например, INT8):
 = round(A / δA)
3. После вычислений в низкой точности (например, произведения матриц AB), получаем итоговый результат, снова умножая на коэффициенты скейлинга:
C ≈ (Â × B̂) × (δA × δB)
Здесь приведен простой пример квантизации — на самом деле, факторы скейлинга можно выбирать для каждой строчки отдельно, что улучшить качество за счёт бОльшего числа факторов. В статье
Основной проблемой данного подхода является то, что могут возникать выбросы:
Например, если в исходной матрице A:
A = [0.1, 0.2, 0.15, 1000]
То коэффициент скейлинга будет:
δA = 1000 / 127 ≈ 7.87
И после квантизации получится:
A_quant = round(A / δA) = [0, 0, 0, 127]
Поэтому залог успешной квантизации, подумать головой и разобраться с выбросами, что и сделали в SageAttention.
Небольшое введение в формулы и погнали:
➤ P = Attention = Softmax(QK^T / \sqrt{d})
➤ V - value -> V* = PV
SageAttention:
➤ Переводим вычисление QK^T в INT8 и стабилизируем выбросы с помощью нормализации матрицы K (это стандартная техника для борьбы с выбросами, берите на вооружение!). Дополнительно оптимально подбираем стратегию квантизации, глядя на структуру самих матриц.
➤ Делаем фьюзинг (объединение) операций скейлинга и анскейлинга с соседними слоями.
➤ Вычисление PV делаем в FP16 — так стабильнее, потому что FP8 слишком сильно теряет точность.
SageAttention2:
➤ Современные GPU (например, Nvidia H100) поддерживают не только INT8, но и INT4. Поэтому теперь делаем квантизацию матриц Q и K в INT4, а также дополнительно нормализуем матрицу Q, чтобы не искажать итоговый результат attention.
➤ Реализуем глубокие CUDA-оптимизации. Например, оказывается, что масштабирование при квантизации можно параллельно применять сразу к элементам векторов по специальной формуле (каждый 8i + 2k + 1-й элемент). Жёсткая оптимизация на низком уровне GPU 🔥
➤ Вычисления PV делаем в FP8, так как теперь нашли способ стабилизировать результат при помощи двойной буферизации с FP32
SpargeAttention:
➤ FlashAttention работает с матрицами поблочно. Если какой-то блок attention заполнен нулями, то считать его нет смысла — результат не изменится.
➤ Авторы придумали механизм, как быстро находить и пропускать такие блоки на основе похожести матриц Q и K.
➤ Дополнительно, в процессе вычисления attention можно пропускать отдельные блоки, основываясь на пороге.
➤ Поверх этой разреженности используется подход из SageAttention2 (с INT4-квантизацией и CUDA-оптимизациями).
Результат
🔥 SageAttention уже быстрее, чем FlashAttention2 примерно в 2.1 раза (на RTX4090), а также на 2.7 раза быстрее xformers. При этом точность моделей практически не страдает.
🔥 SageAttention2 ускоряет attention примерно в 3 раза по сравнению с FlashAttention2 и в 4.5 раза быстрее xformers на RTX4090.
🔥 SpargeAttn ускоряет inference дополнительно, обеспечивая от 2.5 до 5 раз быстрее по сравнению с другими методами attention.
Как применить у себя.
Устанавливаем библиотеку и дальше делаем вот так
import torch.nn.functional as F
from sageattention import sageattn
F.scaled_dot_product_attention = sageattn
🔥13❤3
🛠 Опыт is a key to success
Последний год работы в стартапе сильно изменил моё отношение к тому, что такое опыт.
Раньше мне казалось, что опыт — это просто накопленные знания и навыки. Но теперь я вижу, что настоящая сила опыта в другом: это грамотное распределение ресурсов на долгосрочной перспективе.
Когда общался с автором xformers, он сказал, что одна из главных проблем стартапов (от себя добавлю, что и больших компаний в России) в гонке AI — понять, куда направить ресурсы. Вложиться в создание собственной технологии или подождать, когда кто-то другой выпустит уже готовое решение? И ответа на это нет, кроме одного — собственного опыта.
Опыт — это искусство принимать грамотные решения, чтобы не тратить самый ценный ресурс — время — впустую. Если идёшь не туда, ты не просто теряешь время сейчас, ты ещё и теряешь время, возвращаясь назад.
Самые дорогие ошибки — те, что происходят из-за недостатка опыта. Ты можешь даже не понять, что идёшь в тупик, пока не окажешься в начальной точке снова.
Что изменилось в моём подходе сейчас?
1️⃣ Я перестал гоняться за самыми крутыми решениями просто потому, что они крутые. Теперь для меня важно видеть общую картину. Я выбираю простоту и устойчивость, потому что за такими решениями будущее. Подумайте, какие решения обеспечат стабильность вашего проекта в будущем.
2️⃣ Опыт даёт возможность видеть картину целиком — именно поэтому опытные руководители бесценны. Ты можешь делать всё правильно в моменте, но без общей стратегии через пару лет всё просто развалится. Есть ли у вас человек, который может помочь вам своим опытом?
3️⃣ Если вам интересно узнать больше о грамотном принятии решений, рекомендую почитать вот этот пост. А также рекомендую самый простой способ начать собирать опыт — это набивать шишки и двигаться дальше самостоятельно. Не бойтесь экспериментировать и набираться опыта самостоятельно.
Последний год работы в стартапе сильно изменил моё отношение к тому, что такое опыт.
Раньше мне казалось, что опыт — это просто накопленные знания и навыки. Но теперь я вижу, что настоящая сила опыта в другом: это грамотное распределение ресурсов на долгосрочной перспективе.
Когда общался с автором xformers, он сказал, что одна из главных проблем стартапов (от себя добавлю, что и больших компаний в России) в гонке AI — понять, куда направить ресурсы. Вложиться в создание собственной технологии или подождать, когда кто-то другой выпустит уже готовое решение? И ответа на это нет, кроме одного — собственного опыта.
Опыт — это искусство принимать грамотные решения, чтобы не тратить самый ценный ресурс — время — впустую. Если идёшь не туда, ты не просто теряешь время сейчас, ты ещё и теряешь время, возвращаясь назад.
Самые дорогие ошибки — те, что происходят из-за недостатка опыта. Ты можешь даже не понять, что идёшь в тупик, пока не окажешься в начальной точке снова.
Что изменилось в моём подходе сейчас?
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥13❤1
o4-mini-high is AGI?
Короче, решил потестить o4-mini-high на проге. Это жесть.
‣ По сравнению с o3, намного быстрее скорость инференса, вообще не приходится ждать.
‣ C точки зрения идей и решений — мама дорогая. Я где-то пару недель спрашивал людей как ускорять модели, она выдала все идеи после одного запроса и сразу же имплементировала. Для меня взрыв мозга.
Конечно, если говорить о нишевых задачах — например, вырезание фона — тут всё ещё мимо: выдаёт фигню, потому что нужно реально видеть картинку и оценивать результат визуально. Но качество идей и решений — это просто взрыв мозга.
Я в комментах приложил сравнение: простая реализация vs. реализация после нескольких уточнений. Раньше, чтобы просто понять, как это сделать, ушло бы недели две. А теперь — один запрос, и всё готово.
Короче, решил потестить o4-mini-high на проге. Это жесть.
‣ По сравнению с o3, намного быстрее скорость инференса, вообще не приходится ждать.
‣ C точки зрения идей и решений — мама дорогая. Я где-то пару недель спрашивал людей как ускорять модели, она выдала все идеи после одного запроса и сразу же имплементировала. Для меня взрыв мозга.
Конечно, если говорить о нишевых задачах — например, вырезание фона — тут всё ещё мимо: выдаёт фигню, потому что нужно реально видеть картинку и оценивать результат визуально. Но качество идей и решений — это просто взрыв мозга.
Я в комментах приложил сравнение: простая реализация vs. реализация после нескольких уточнений. Раньше, чтобы просто понять, как это сделать, ушло бы недели две. А теперь — один запрос, и всё готово.
🔥5🗿1
Автоматизация контента в соцсетях
У меня всегда была идея, что круто писать на зарубежную аудиторию. Там и охваты выше, и расти можно быстрее, потому что международный рынок контента более конкурентный — сразу видно, работает твой контент или нет.
💡 Поэтому я решил выйти в открытый океан и попробовать писать туда. Но как человек ленивый, быстро понял, что самому что-то новое сочинять влом. Решил переписать свои старые посты. Потом стало влом и это — и я сделал бота, который сам конвертирует посты из телеги в формат для других соцсетей ( с переводом и форматированием).
С фидбэком от @fminxyz удалось довести первую версию до вменяемого состояния (пример на картинке это — https://www.tgoop.com/fminxyz/30). Хотел уже выложить и дать всем попробовать, но Telegram внезапно выдал три бана на ботов и столько же раз выкинул из аккаунтов. Стало немного стрёмно.
Так что пока не выкладываю публично. Но если хочется потестить — просто скиньте ссылку на пост в личку, и я покажу, как он может выглядеть после конвертации. Пока что так, по-тихому 🙃.
P.S. В комментариях накинул еще примеров
У меня всегда была идея, что круто писать на зарубежную аудиторию. Там и охваты выше, и расти можно быстрее, потому что международный рынок контента более конкурентный — сразу видно, работает твой контент или нет.
💡 Поэтому я решил выйти в открытый океан и попробовать писать туда. Но как человек ленивый, быстро понял, что самому что-то новое сочинять влом. Решил переписать свои старые посты. Потом стало влом и это — и я сделал бота, который сам конвертирует посты из телеги в формат для других соцсетей ( с переводом и форматированием).
С фидбэком от @fminxyz удалось довести первую версию до вменяемого состояния (пример на картинке это — https://www.tgoop.com/fminxyz/30). Хотел уже выложить и дать всем попробовать, но Telegram внезапно выдал три бана на ботов и столько же раз выкинул из аккаунтов. Стало немного стрёмно.
Так что пока не выкладываю публично. Но если хочется потестить — просто скиньте ссылку на пост в личку, и я покажу, как он может выглядеть после конвертации. Пока что так, по-тихому 🙃.
P.S. В комментариях накинул еще примеров
🔥11
Создал агента для ответов на вопросы
В рамках своего вайб-кодинга я начал делать мини-демки, чтобы понять, какие полезные штуки можно собрать и параллельно своими действиями вдохновить людей создавать интересные вещи самостоятельно.
Сейчас на хайпе — агенты: те самые, которые должны решать за вас задачи, работать быстро и эффективно и вообще сильно упрощать жизнь.
В полноценную замену человека я пока не верю, но понимаю, что на API можно сделать много прикольных и реально полезных штук. Поэтому я провёл небольшой ресерч и пришёл к выводу:
Логика очень простая:
- собираешь базу знаний,
- делаешь по ней быстрый поиск,
- и вуаля — можно разгрузить себе голову от однотипных ответов.
Так как я техлид по курсу «Диффузионные модели», я решил в рамках курса собрать MVP-бота, который будет отвечать на вопросы по материалам. Результатом стал бот: https://www.tgoop.com/ImpressiveNameBot
Пока это базовая версия, которая может отвечать на ваши вопросы по диффузионным моделям и помогать в сложных терминах, но следующим шагом планирую добавить память.
За основу взял LangChain (от которого потом отказался из-за хостинга), к которому подключил OpenAI API. Код тут:
Я планирую дальше развивать бота (основное, что хочется сделать это добавить ему память), и тут мне очень помог пост о том, как можно работать с векторными индексами в LLM.
Как появится свободное время, думаю, допилю бота, чтобы можно было использовать его не только как Q&A, но и как полноценного ассистента.
P.S. Если у вас есть идеи как улучшить бота / добавить супер RAG, то буду рад любой помощи!)
В рамках своего вайб-кодинга я начал делать мини-демки, чтобы понять, какие полезные штуки можно собрать и параллельно своими действиями вдохновить людей создавать интересные вещи самостоятельно.
Сейчас на хайпе — агенты: те самые, которые должны решать за вас задачи, работать быстро и эффективно и вообще сильно упрощать жизнь.
В полноценную замену человека я пока не верю, но понимаю, что на API можно сделать много прикольных и реально полезных штук. Поэтому я провёл небольшой ресерч и пришёл к выводу:
Самое простое и полезное применение агентов — это работа с большими материалами в формате Q&A.
Логика очень простая:
- собираешь базу знаний,
- делаешь по ней быстрый поиск,
- и вуаля — можно разгрузить себе голову от однотипных ответов.
Так как я техлид по курсу «Диффузионные модели», я решил в рамках курса собрать MVP-бота, который будет отвечать на вопросы по материалам. Результатом стал бот: https://www.tgoop.com/ImpressiveNameBot
Пока это базовая версия, которая может отвечать на ваши вопросы по диффузионным моделям и помогать в сложных терминах, но следующим шагом планирую добавить память.
За основу взял LangChain (от которого потом отказался из-за хостинга), к которому подключил OpenAI API. Код тут:
Я планирую дальше развивать бота (основное, что хочется сделать это добавить ему память), и тут мне очень помог пост о том, как можно работать с векторными индексами в LLM.
Помимо памяти, на Канале Доброго Вани ещё можно прочитать про технологическое предпринимательство, разного уровня материалы для Data Science, хакатоны — и много чего другого.
Как появится свободное время, думаю, допилю бота, чтобы можно было использовать его не только как Q&A, но и как полноценного ассистента.
P.S. Если у вас есть идеи как улучшить бота / добавить супер RAG, то буду рад любой помощи!)
Langchain
LangChain’s suite of products supports developers along each step of their development journey.
Хочу рассказать про канал моего друга Саида.
Саид уже сделал одну из топовых моделей на HF, а сейчас полностью ушёл в работу над своим стартапом AnyAgent. Немного завидую — он выбрал идею и просто пошёл её делать — человек пошел за мечтой.
AnyAgent — это ассистент, через который можно обновить календарь, запланировать встречу или распланировать день. Я попробовал сам — понравилось, как он помогает с микроменеджментом, особенно с календарём. Это то, что обычно забивает голову. Сейчас продукт находится в стадии бета тестировании и активно двигается к тому, чтобы создать единый портал для вашей жизни!
Если интересно смотреть, как продукт строится с нуля, или просто хочется попробовать такого “джарвиса” — советую подписаться на канал Саида
Саид уже сделал одну из топовых моделей на HF, а сейчас полностью ушёл в работу над своим стартапом AnyAgent. Немного завидую — он выбрал идею и просто пошёл её делать — человек пошел за мечтой.
AnyAgent — это ассистент, через который можно обновить календарь, запланировать встречу или распланировать день. Я попробовал сам — понравилось, как он помогает с микроменеджментом, особенно с календарём. Это то, что обычно забивает голову. Сейчас продукт находится в стадии бета тестировании и активно двигается к тому, чтобы создать единый портал для вашей жизни!
Если интересно смотреть, как продукт строится с нуля, или просто хочется попробовать такого “джарвиса” — советую подписаться на канал Саида
Telegram
A$TEX
скроль меньше - живи больше
10❤6🔥3
Пост знакомство
Я Андрей Филатов – Team Lead Gen AI CV в стартапе, занимаюсь применением генеративных моделей для создания визуального контента: создание изображений/видео, редактирования изображений/видео, создание персонализированных генераций.
В ML/DL уже более 6 лет – с момента стажировки в Тинькоффе в 2019 году, где работал почти по соседству с Олегом Тиньковым и сохранил пару историй о нём. Затем был EPFL (где публиковался на NeurIPS) и работа в команде Kandinsky Sber AI.
Параллельно мне нравится делиться знаниями. Вёл курсы в МФТИ (DL), в HSE/Sber/Сколтехе (CV), сейчас техлид курса по диффузионным моделям. А ещё иногда помогаю студентам с научным руководством.
Философия канала
ML-контент в телеграм часто повторяется поэтому моё желание писать на аутентичные темы, что внести вклад в общее ML знание русскоязычного коммунити. А с дальнейшим развитием вещать и на международную аудиторию
📌 Ключевая идея: объяснять сложное просто, писать аутентично.
Что можно найти в канале?
🔹 Гайдбуки :
• Диффузионные модели
• Видео-диффузионные модели
🔹 Выступления и подкасты:
• Генеративные аугментации, ещё один
• Подкаст про искусство и ИИ
🔹 Разбор интересных тем:
• Табличные данные в ML
• Робототехника + ML (совместно с @TimeEscaper, он пишет в своём канале)
• Kandinsky и важность синтетики
• Синтетические данные в ML
💡 Если вам интересно сотрудничество, нужно консультация или просто интересно пообщаться, то пишите сюда @anvilarth
Я Андрей Филатов – Team Lead Gen AI CV в стартапе, занимаюсь применением генеративных моделей для создания визуального контента: создание изображений/видео, редактирования изображений/видео, создание персонализированных генераций.
В ML/DL уже более 6 лет – с момента стажировки в Тинькоффе в 2019 году, где работал почти по соседству с Олегом Тиньковым и сохранил пару историй о нём. Затем был EPFL (где публиковался на NeurIPS) и работа в команде Kandinsky Sber AI.
Параллельно мне нравится делиться знаниями. Вёл курсы в МФТИ (DL), в HSE/Sber/Сколтехе (CV), сейчас техлид курса по диффузионным моделям. А ещё иногда помогаю студентам с научным руководством.
Философия канала
ML-контент в телеграм часто повторяется поэтому моё желание писать на аутентичные темы, что внести вклад в общее ML знание русскоязычного коммунити. А с дальнейшим развитием вещать и на международную аудиторию
📌 Ключевая идея: объяснять сложное просто, писать аутентично.
Что можно найти в канале?
🔹 Гайдбуки :
• Диффузионные модели
• Видео-диффузионные модели
🔹 Выступления и подкасты:
• Генеративные аугментации, ещё один
• Подкаст про искусство и ИИ
🔹 Разбор интересных тем:
• Табличные данные в ML
• Робототехника + ML (совместно с @TimeEscaper, он пишет в своём канале)
• Kandinsky и важность синтетики
• Синтетические данные в ML
💡 Если вам интересно сотрудничество, нужно консультация или просто интересно пообщаться, то пишите сюда @anvilarth
taskdiscovery.epfl.ch
Task Discovery: Finding the Tasks that Neural Networks Generalize on
Deformable Neural Radiance Fields creates free-viewpoint portraits (nerfies) from casually captured videos.
6❤44😎3 3 1
Awesome DL pinned «Пост знакомство Я Андрей Филатов – Team Lead Gen AI CV в стартапе, занимаюсь применением генеративных моделей для создания визуального контента: создание изображений/видео, редактирования изображений/видео, создание персонализированных генераций. В ML/DL…»
Пока я путешествую по разным странам и набираюсь опыта, у меня не всегда остаётся время писать в канал. Хотя идей накопилось немало — год назад я о многих из них даже не думал. Чтобы заполнить паузу и заодно набраться мотивации через новых подписчиков, решил поучаствовать в папке.
Я честно рекомендую ребят, которых приведу ниже — уделил время просмотру их контента:
- Тимлид и работа руками — про то, как совмещать управление и свои задачи от друга Сани, у которого еще есть офигенный канал про то как стать тимлидом.
- Коммуникация с бизнесом и умение говорить "НЕТ. Андрей круто рассказывает про то важно говорить, на желание построить космолёт.
- Путь Арины — Арина ведет канал уже долго и мне понравилось, что можно посмотреть на путь развитие в DS/ML человека, и найти себя в этом пути.
- Мотивация от Тани — Таня тоже рассказывает свой путь, но больше уделяет внимания внутренним переживаниям лично мне этого не хватает, часто контент это просто разбор статей+материалы, за которыми теряется реальный человек.
- Длинный опыт в DS — тут из подборки один из самых опытных челов. Тут вы узнаете больше про решение реальных кейсов и проблем. Мне такое часто помогает — я раньше писал, что 30 минутный разговор может спасти вам месяцы работы
Сама папка тут — уверен, каждому приглянётся хотя бы один канал.
А я продолжаю путешествовать 🚶♂️🌍
https://www.tgoop.com/addlist/v5lLkN7LNPQ4MmJi
Я честно рекомендую ребят, которых приведу ниже — уделил время просмотру их контента:
- Тимлид и работа руками — про то, как совмещать управление и свои задачи от друга Сани, у которого еще есть офигенный канал про то как стать тимлидом.
- Коммуникация с бизнесом и умение говорить "НЕТ. Андрей круто рассказывает про то важно говорить, на желание построить космолёт.
- Путь Арины — Арина ведет канал уже долго и мне понравилось, что можно посмотреть на путь развитие в DS/ML человека, и найти себя в этом пути.
- Мотивация от Тани — Таня тоже рассказывает свой путь, но больше уделяет внимания внутренним переживаниям лично мне этого не хватает, часто контент это просто разбор статей+материалы, за которыми теряется реальный человек.
- Длинный опыт в DS — тут из подборки один из самых опытных челов. Тут вы узнаете больше про решение реальных кейсов и проблем. Мне такое часто помогает — я раньше писал, что 30 минутный разговор может спасти вам месяцы работы
Сама папка тут — уверен, каждому приглянётся хотя бы один канал.
А я продолжаю путешествовать 🚶♂️🌍
https://www.tgoop.com/addlist/v5lLkN7LNPQ4MmJi
Telegram
DS/DA
Andrei Filatov invites you to add the folder “DS/DA”, which includes 16 chats.
❤14🔥10👏4🗿3😎3 2🆒1 1
Привет! Меня зовут Олег, я исследую, как оптимально скейлить языковые модели в Jülich Supercomputing Centre. Пока Андрей подзаряжается энергией для будущих постов, с его позволения поделюсь тут нашей новой работой — “Optimal Scaling Needs Optimal Norm”. Всем, кто задумывался о правильном тюнинге гиперпараметров — будет интересно!
Главная проблема в скейлинге — как подбирать гиперпараметры (learning rate, batch size и т.д.) на масштабе >1B параметров и >100B токенов, когда перебор брутфорсом уже не вариант. Известные подходы вроде muP и других параметризаций гарантируют оптимальность при скейлинге модели, но не объясняют, что делать при увеличении размера датасета — скажем, с 1B до 1T токенов. Эмпирические scaling laws (пример или наша прошлая работа) помогают, но теории объединяющей всё вместе пока не существует.
Мы подошли к этой проблеме со стороны norm-based optimization. Сейчас на хайпе Muon, который бьёт Adam, а в основе всего лежит теория Jeremy Bernstein (Modular Duality) — очень советую глянуть, это прям база. Также этот подход позволяет отслеживать эволюцию норм по слоям, и именно в них оказывается кроется секрет оптимального скейлинга!
С Scion (улучшенная версия Muon) мы показали: чтобы достичь оптимального скейлинга одновременно модели и(!) датасета, нужно удерживать веса на одном и том же manifold’е — то есть сохранять норму весов постоянной при любом масштабе. Кроме того, мы вывели, как оптимально подбирать batch size и learning rate в этом сэтапе, выпустили Distributed Scion для тренировки на множестве GPU + открыли логи 2000+ экспериментов.
В общем, всех инсайтов вкратце не описать, так что гляньте статью — буду рад обсудить идеи и услышать ваши мысли в комментах 😌
И апвоутните нас на Hugging Face! Было бы круто попасть в топ Daily Papers, мы уже очень близко 🚀
Главная проблема в скейлинге — как подбирать гиперпараметры (learning rate, batch size и т.д.) на масштабе >1B параметров и >100B токенов, когда перебор брутфорсом уже не вариант. Известные подходы вроде muP и других параметризаций гарантируют оптимальность при скейлинге модели, но не объясняют, что делать при увеличении размера датасета — скажем, с 1B до 1T токенов. Эмпирические scaling laws (пример или наша прошлая работа) помогают, но теории объединяющей всё вместе пока не существует.
Мы подошли к этой проблеме со стороны norm-based optimization. Сейчас на хайпе Muon, который бьёт Adam, а в основе всего лежит теория Jeremy Bernstein (Modular Duality) — очень советую глянуть, это прям база. Также этот подход позволяет отслеживать эволюцию норм по слоям, и именно в них оказывается кроется секрет оптимального скейлинга!
С Scion (улучшенная версия Muon) мы показали: чтобы достичь оптимального скейлинга одновременно модели и(!) датасета, нужно удерживать веса на одном и том же manifold’е — то есть сохранять норму весов постоянной при любом масштабе. Кроме того, мы вывели, как оптимально подбирать batch size и learning rate в этом сэтапе, выпустили Distributed Scion для тренировки на множестве GPU + открыли логи 2000+ экспериментов.
В общем, всех инсайтов вкратце не описать, так что гляньте статью — буду рад обсудить идеи и услышать ваши мысли в комментах 😌
И апвоутните нас на Hugging Face! Было бы круто попасть в топ Daily Papers, мы уже очень близко 🚀
arXiv.org
Optimal Scaling Needs Optimal Norm
Despite recent progress in optimal hyperparameter transfer under model and dataset scaling, no unifying explanatory principle has been established. Using the Scion optimizer, we discover that...
1🔥9❤1👏1