Awesome DL
785 subscribers
28 photos
3 videos
1 file
66 links
Канал о статьях, которые интересно почитать
Автор: @anvilarth

Boost: https://t.me/awesome_dl?boost
Download Telegram
Подборка каналов

Ребята предложили залететь в подборку каналов, я согласился, потому что ребята — топ! Так что про всех понемногу:

Захар — человеку 18 лет, а ведет один из немногих каналов по аудио и делает уже свой стартап
Антон — руководитель OCR команды в яндексе и делает прикольные посты про то как быть руководителем (мне сейчас актуально)
Дэнчик — легенда в 15 лет статья на А* делает офигенные модельки на аудио
Андрей — уважаемый человек, прошли одну школу жизни МФТИ + Сколтех. Мне нравятся его лайфхаки
Никиты — прикольный посты про систем дизайну и его путь в ML
Коля — постит полезное, но в основном мемы (иногда и отдохнуть хочется).
Дима — офигенно пишет про ML, есть подборка с материалами, а также пишет много про основы ML и системный дизайн, что я считаю важным знать, но самому уже не интересно про это писать :(
Александр — придумал интересный для меня формат обзоров на посты других людей), что уже за гранью моего понимания, но думаю мега эффективным людям будет полезно
Сергей Николенко — уважаемый человек, поднимал ML, еще когда я был ребёнком. Тут просто человеку респект.
🔥9👍22🤯1
«Вы открываете изображения неправильно

В современных архитектурах машинного обучения загрузка изображений из файлов часто становится узким местом из-за ограничений CPU. Каждая миллисекунда на подготовку данных имеет значение, особенно при работе с большими датасетами и сложными моделями.

Я решил проверить эффективность стандартных инструментов и сравнил производительность Pytorch DataLoader с NVIDIA DALI — библиотекой, специально разработанной для ускорения загрузки и предварительной обработки изображений.

Результаты эксперимента:

JPEG: За 10 эпох обработки 1000 изображений NVIDIA DALI справился за 4 секунды, в то время как Pytorch потребовал 55 секунд — разница более чем в 15 раз!

PNG: Для изображений в формате PNG разница также заметна: 16 секунд против 55 секунд.

Код

Потыкаться в код можно тут

оставил в комментариях версию поста от MrBeast для более расслабленного чтения
👍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.

Как применить у себя.

Устанавливаем библиотеку и дальше делаем вот так

import torch.nn.functional as F

from sageattention import sageattn
F.scaled_dot_product_attention = sageattn
🔥133
🛠 Опыт is a key to success

Последний год работы в стартапе сильно изменил моё отношение к тому, что такое опыт.

Раньше мне казалось, что опыт — это просто накопленные знания и навыки. Но теперь я вижу, что настоящая сила опыта в другом: это грамотное распределение ресурсов на долгосрочной перспективе.

Когда общался с автором xformers, он сказал, что одна из главных проблем стартапов (от себя добавлю, что и больших компаний в России) в гонке AI — понять, куда направить ресурсы. Вложиться в создание собственной технологии или подождать, когда кто-то другой выпустит уже готовое решение? И ответа на это нет, кроме одного — собственного опыта.

Опыт — это искусство принимать грамотные решения, чтобы не тратить самый ценный ресурс — время — впустую. Если идёшь не туда, ты не просто теряешь время сейчас, ты ещё и теряешь время, возвращаясь назад.

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

Что изменилось в моём подходе сейчас?

1️⃣ Я перестал гоняться за самыми крутыми решениями просто потому, что они крутые. Теперь для меня важно видеть общую картину. Я выбираю простоту и устойчивость, потому что за такими решениями будущее. Подумайте, какие решения обеспечат стабильность вашего проекта в будущем.

2️⃣ Опыт даёт возможность видеть картину целиком — именно поэтому опытные руководители бесценны. Ты можешь делать всё правильно в моменте, но без общей стратегии через пару лет всё просто развалится. Есть ли у вас человек, который может помочь вам своим опытом?

3️⃣Если вам интересно узнать больше о грамотном принятии решений, рекомендую почитать вот этот пост. А также рекомендую самый простой способ начать собирать опыт — это набивать шишки и двигаться дальше самостоятельно. Не бойтесь экспериментировать и набираться опыта самостоятельно.
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥131
o4-mini-high is AGI?

Короче, решил потестить o4-mini-high на проге. Это жесть.
‣ По сравнению с o3, намного быстрее скорость инференса, вообще не приходится ждать.
‣ C точки зрения идей и решений — мама дорогая. Я где-то пару недель спрашивал людей как ускорять модели, она выдала все идеи после одного запроса и сразу же имплементировала. Для меня взрыв мозга.

Конечно, если говорить о нишевых задачах — например, вырезание фона — тут всё ещё мимо: выдаёт фигню, потому что нужно реально видеть картинку и оценивать результат визуально. Но качество идей и решений — это просто взрыв мозга.

Я в комментах приложил сравнение: простая реализация vs. реализация после нескольких уточнений. Раньше, чтобы просто понять, как это сделать, ушло бы недели две. А теперь — один запрос, и всё готово.
🔥5🗿1
Автоматизация контента в соцсетях

У меня всегда была идея, что круто писать на зарубежную аудиторию. Там и охваты выше, и расти можно быстрее, потому что международный рынок контента более конкурентный — сразу видно, работает твой контент или нет.

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

С фидбэком от @fminxyz удалось довести первую версию до вменяемого состояния (пример на картинке это — https://t.me/fminxyz/30). Хотел уже выложить и дать всем попробовать, но Telegram внезапно выдал три бана на ботов и столько же раз выкинул из аккаунтов. Стало немного стрёмно.

Так что пока не выкладываю публично. Но если хочется потестить — просто скиньте ссылку на пост в личку, и я покажу, как он может выглядеть после конвертации. Пока что так, по-тихому 🙃.

P.S. В комментариях накинул еще примеров
🔥11
Создал агента для ответов на вопросы

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

Сейчас на хайпе — агенты: те самые, которые должны решать за вас задачи, работать быстро и эффективно и вообще сильно упрощать жизнь.

В полноценную замену человека я пока не верю, но понимаю, что на API можно сделать много прикольных и реально полезных штук. Поэтому я провёл небольшой ресерч и пришёл к выводу:

Самое простое и полезное применение агентов — это работа с большими материалами в формате Q&A.


Логика очень простая:
- собираешь базу знаний,
- делаешь по ней быстрый поиск,
- и вуаля — можно разгрузить себе голову от однотипных ответов.

Так как я техлид по курсу «Диффузионные модели», я решил в рамках курса собрать MVP-бота, который будет отвечать на вопросы по материалам. Результатом стал бот: https://t.me/ImpressiveNameBot

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

За основу взял LangChain (от которого потом отказался из-за хостинга), к которому подключил OpenAI API. Код тут:

Я планирую дальше развивать бота (основное, что хочется сделать это добавить ему память), и тут мне очень помог пост о том, как можно работать с векторными индексами в LLM.

Помимо памяти, на Канале Доброго Вани ещё можно прочитать про технологическое предпринимательство, разного уровня материалы для Data Science, хакатоны — и много чего другого.


Как появится свободное время, думаю, допилю бота, чтобы можно было использовать его не только как Q&A, но и как полноценного ассистента.

P.S. Если у вас есть идеи как улучшить бота / добавить супер RAG, то буду рад любой помощи!)
9🔥3
Хочу рассказать про канал моего друга Саида.

Саид уже сделал одну из топовых моделей на HF, а сейчас полностью ушёл в работу над своим стартапом AnyAgent. Немного завидую — он выбрал идею и просто пошёл её делать — человек пошел за мечтой.

AnyAgent — это ассистент, через который можно обновить календарь, запланировать встречу или распланировать день. Я попробовал сам — понравилось, как он помогает с микроменеджментом, особенно с календарём. Это то, что обычно забивает голову. Сейчас продукт находится в стадии бета тестировании и активно двигается к тому, чтобы создать единый портал для вашей жизни!

Если интересно смотреть, как продукт строится с нуля, или просто хочется попробовать такого “джарвиса” — советую подписаться на канал Саида
106🔥3
Channel photo updated
Пост знакомство

Я Андрей Филатов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
645😎432
Awesome DL pinned «Пост знакомство Я Андрей Филатов – Team Lead Gen AI CV в стартапе, занимаюсь применением генеративных моделей для создания визуального контента: создание изображений/видео, редактирования изображений/видео, создание персонализированных генераций. В ML/DL…»
Пока я путешествую по разным странам и набираюсь опыта, у меня не всегда остаётся время писать в канал. Хотя идей накопилось немало — год назад я о многих из них даже не думал. Чтобы заполнить паузу и заодно набраться мотивации через новых подписчиков, решил поучаствовать в папке.

Я честно рекомендую ребят, которых приведу ниже — уделил время просмотру их контента:

- Тимлид и работа руками — про то, как совмещать управление и свои задачи от друга Сани, у которого еще есть офигенный канал про то как стать тимлидом.
- Коммуникация с бизнесом и умение говорить "НЕТ. Андрей круто рассказывает про то важно говорить, на желание построить космолёт.
- Путь Арины — Арина ведет канал уже долго и мне понравилось, что можно посмотреть на путь развитие в DS/ML человека, и найти себя в этом пути.
- Мотивация от Тани — Таня тоже рассказывает свой путь, но больше уделяет внимания внутренним переживаниям лично мне этого не хватает, часто контент это просто разбор статей+материалы, за которыми теряется реальный человек.
- Длинный опыт в DS — тут из подборки один из самых опытных челов. Тут вы узнаете больше про решение реальных кейсов и проблем. Мне такое часто помогает — я раньше писал, что 30 минутный разговор может спасти вам месяцы работы

Сама папка тут — уверен, каждому приглянётся хотя бы один канал.

А я продолжаю путешествовать 🚶‍♂️🌍

https://t.me/addlist/v5lLkN7LNPQ4MmJi
14🔥10👏4🗿3😎32🆒11
Привет! Меня зовут Олег, я исследую, как оптимально скейлить языковые модели в 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, мы уже очень близко 🚀
1🔥121👏1