Интересное что-то
517 subscribers
2.71K photos
252 videos
138 files
4.51K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
🧩 sync-with-uv

Небольшой, но полезный пакет, который автоматизирует синхронизацию версий между uv.lock и .pre-commit-config.yaml.

Зачем это нужно:
- Часто версии инструментов (black, ruff, mypy и др.) расходятся: одно указано в lock-файле, другое — в pre-commit.
- В итоге могут воспроизводиться разные окружения и непредсказуемые ошибки.

Что делает sync-with-uv:
- Автоматически подтягивает версии из uv.lock в .pre-commit-config.yaml.
- Интегрируется как pre-commit hook.
- Поддерживает частичную синхронизацию — не затрагивает инструменты, для которых версии не заданы.

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

🔗 Репозиторий: https://github.com/tsvikas/sync-with-uv
Forwarded from ML physicist (Алексей Маметьев)
Думаю многие понимают что в современных LLM attention работает не как Attention(Q, K, V) = softmax(QK^T / √d_k)V

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

Multi-head Latent Attention (MLA)
Сжимают KV - проецируют в низкоразмерное пространство, а потом восстанавливают обратно когда нужно вычислять внимание.
Что дает: KV-cache меньше в 28 раз (с 213GB до 7.6GB), скорость +20x
Где: DeepSeek

Grouped Query Attention (GQA)
Вместо отдельных KV для каждой головы - шарят между группами. Типа 32 query головы делят 8 KV голов.

Что дает: Память меньше в 2-4 раза, инференс быстрее, можно дообучить существующую MHA модель за 5% compute
Где: Llama-2/3, Mistral, Gemma-2, Qwen

Multi-Query Attention (MQA)
Экстремальная версия GQA - всего 1 KV голова на все queries.
Что дает: Максимальная экономия памяти (до 8x), но качество страдает
Где: Falcon, PaLM, старые модели Google

Sliding Window Attention
Каждый токен смотрит только на n ближайших
Что дает: O(N) сложность вместо O(N²), можно обрабатывать бесконечные последовательности
Где: Mistral, Gemma-2 (чередует с полным), Longformer

Unmasked attention for prefix
Для системного сообщения в диалоге атеншн работает без маски, а для остальных сообщений в диалоге с. Таким образом ЛЛМ начинает напоминать encoer-decoder архитектуру.
Что дает: лучшее следование инструкциям
Где: эксперементировал гугл в 2021-23, но не вылилось ни во что большое. Сейчас в многих VLM атеншн по визуальным патчам работает именно так

Sparse Attention (H2O, Scissorhands)
На каждом шаге выкидываем из KV кеша те токены на которые мало смотрели на прошлыхх заменяя их 0.
Что дает: KV-cache меньше в 10-20 раз, но можно потерять важную информацию
Где: StreamingLLM, модели для длинного контекста, скорее экзотика

Linear Attention
Заменяют softmax на линейное ядро, позволяя формулировать как RNN.
Что дает: O(N) сложность, можно делать рекуррентный инференс с постоянной памятью
Где: RWKV, RetNet, Hyena, GLA - экзотика
Forwarded from ML physicist (Алексей Маметьев)
Думаю многие понимают что в современных LLM attention работает не как Attention(Q, K, V) = softmax(QK^T / √d_k)V

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

Multi-head Latent Attention (MLA)
Сжимают KV - проецируют в низкоразмерное пространство, а потом восстанавливают обратно когда нужно вычислять внимание.
Что дает: KV-cache меньше в 28 раз (с 213GB до 7.6GB), скорость +20x
Где: DeepSeek

Grouped Query Attention (GQA)
Вместо отдельных KV для каждой головы - шарят между группами. Типа 32 query головы делят 8 KV голов.

Что дает: Память меньше в 2-4 раза, инференс быстрее, можно дообучить существующую MHA модель за 5% compute
Где: Llama-2/3, Mistral, Gemma-2, Qwen

Multi-Query Attention (MQA)
Экстремальная версия GQA - всего 1 KV голова на все queries.
Что дает: Максимальная экономия памяти (до 8x), но качество страдает
Где: Falcon, PaLM, старые модели Google

Sliding Window Attention
Каждый токен смотрит только на n ближайших
Что дает: O(N) сложность вместо O(N²), можно обрабатывать бесконечные последовательности
Где: Mistral, Gemma-2 (чередует с полным), Longformer

Unmasked attention for prefix
Для системного сообщения в диалоге атеншн работает без маски, а для остальных сообщений в диалоге с. Таким образом ЛЛМ начинает напоминать encoer-decoder архитектуру.
Что дает: лучшее следование инструкциям
Где: эксперементировал гугл в 2021-23, но не вылилось ни во что большое. Сейчас в многих VLM атеншн по визуальным патчам работает именно так

Sparse Attention (H2O, Scissorhands)
На каждом шаге выкидываем из KV кеша те токены на которые мало смотрели на прошлыхх заменяя их 0.
Что дает: KV-cache меньше в 10-20 раз, но можно потерять важную информацию
Где: StreamingLLM, модели для длинного контекста, скорее экзотика

Linear Attention
Заменяют softmax на линейное ядро, позволяя формулировать как RNN.
Что дает: O(N) сложность, можно делать рекуррентный инференс с постоянной памятью
Где: RWKV, RetNet, Hyena, GLA - экзотика
Forwarded from ML physicist (Алексей Маметьев)
Дифузионнки для текста

Пару месяцев назад gemini анонсировало gemini diffusion - первую дифузионную текстовую модель, которая по метрикам относительно близка к обычным LLM (и то и то трансформер, но один авторегерессионный а другой - дифузионный)

Как она работает

Обычная ллмка последовательно, токен за токеном генерирует последовательность. На запрос LLM(Какая сталица франции) результатом будет распределение вероятности следующего токена из которого сразу выберется самый вероятный кандидат

Gemini diffusion работает немного подругому. Вместо того что бы сразу определяться с токеном, она "постепенно" расшумляет его распределение вероятности. То есть на выходе из модели так же распределения вероятностей токенов, но мы не семплируем output сразу, а много раз вызываем одну и ту же модель, подавая output i го шага как вход i+1

И только после этого семплируем токен.

Такой подход позваляет генерировать не "токен за токеном", а сразу "разшумлять" весь ответ ллмки, так что скорости генерации таких моделей получаются ошеломительные
Работа с данными на Kaggle

Меня попросили сделать доклад о примерах того, как в соревнованиях на Kaggle была важна работа с данными (примеры анализа, magic/golden features, внешние источники, понимание домена и так далее).

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

Home Credit Default Risk - На основе суммы кредита, ежемесячной суммы выплаты и количества выплат (этого не было в данных, но сделали модель для предсказания) удалось восстановить процентную ставку (которой не было в данных). А процентная ставка - очень сильный сигнал, ибо по факту отражает степень риска клиента.

Instant Gratification - это была задачка с синтетическими данными. Многим удалось сделать reverse engineering функции генерации данных, и благодаря этому получить 0.97+ AUC.

Santander Customer Transaction - люди обнаружили, что в тесте часть данных была синтетической. Был довольно хитрый подход - синтетические данные определяли по распределению значений. Суть в том, что в данных было 200 независимых признаков. Если просто тренировать на них модель, она найдёт какие-нибудь паттерны и оверфитнется. Было несколько решений проблемы: Построить 200 моделей или Naive Bayes, использовать shuffle augmentation, использовать деревянные модели с малой глубиной.

Red Hat Business Value - в данных были лики, которые позволяли для многих строк довольно точно определять таргет. Поэтому многие строили отдельные модели для ликованых строк и для других.

Intel & MobileODT Cervical Cancer Screening - нашлись случаи, когда фото одного и того же человека были в трейне и тесте, использование этой информации улучшало модели.

IEEE-CIS Fraud Detection - организаторы соревнования убрали userid, но людям удалось сделать reverse engineering с высокой точность, и это было ключом к успеху.

Quora Question Pairs - участникам удалось построить графы вопросом на трейне совместно с тестом, что давало большой буст.

Two Sigma Connect: Rental Listing Inquiries - timestamp-ы папок с картинками сильно коррелировали с таргетом

Bosch Production Line Performance - определенные последовательности данных имели значительно более высокий шанс failure (таргета).

Sberbank Russian Housing Market - было важно извлечь год из данных и добавить макроэкономические данные

Rossmann Store Sales - было очень полезно использовать внешние данные (погода, праздники и прочее).

Какие ещё были подобные интересные соревнования?

#kaggle #datascience
Если не видели, тут очередной курс по трансформерам выкладывают.

CME 295 - Transformers & Large Language Models
This course explores the world of Transformers and Large Language Models (LLMs). You'll learn the evolution of NLP methods, the core components of the Transformer architecture, along with how they relate to LLMs as well as techniques to enhance model performance for real-world applications. Through a mix of theory and practical insights, this course will equip you with the knowledge to leverage LLMs effectively. Ideal for those with a background in calculus, linear algebra, and basic machine learning concepts.

https://cme295.stanford.edu/syllabus/
#полезного_пост

Выше у меня полыхало на нравоучения с претензией на великость от молодых да успешных и приводил кейс куда это может привести.

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

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

Итак

Чарльз Шваб — от клерка-чертежника до главы нескольких стальных компаний

И его книга «Как преуспеть с тем что есть» (1917)

Эндрю Карнеги — от ребенка-рабочего до стального магната (пусть прекрасные зумеры расскажут про риски человеку который ребенком прыгал в ткацкие станки 19 века менять шпуни)

И сборник его эссе "The Gospel of Wealth" 1889

Книжки столетней давности не применить? Ок, подержите мое пиво.

Помните затасканный сюжет (он кстати из книги Шваба выше):

I had a mill manager who was finely educated, thoroughly capable and master of every detail of the business. But he seemed unable to inspire his men to do their best.
“How is it that a man as able as you,” I asked him one day, “cannot make this mill turn out what it should?”
“I don’t know,” he replied. “I have coaxed the men; I have pushed them, I have sworn at them. I have done everything in my power. Yet they will not produce.”
It was near the end of the day; in a few minutes the night force would come on duty. I turned to a workman who was standing beside one of the red-mouthed furnaces and asked him for a piece of chalk.
“How many heats has your shift made today?” I queried.
“Six,” he replied.
I chalked a big “6” on the floor, and then passed along without another word. When the night shift came in they saw the “6” and asked about it.
“The big boss was in here today,” said the day men. “He asked us how many heats we had made, and we told him six. He chalked it down.”
The next morning I passed through the same mill. I saw that the “6” had been rubbed out and a big “7” written instead. The night shift had announced itself. That night I went back. The “7” had been erased, and a “10” swaggered in its place. The day force recognized no superiors. Thus a fine competition was started, and it went on until this mill, formerly the poorest producer, was turning out more than any other mill in the plant. 

А стоит помнить.

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

Иду к шефу с калькуляцией сколько выйдет команда из 3-4 человек на все майские (а праздничные дни по двойной таксе). Оклады у ребят были в районе 100ки чистыми — вот и представьте что четверо на 2 недели вышли бы примерно 4 (чел) * 2 (двойная оплата) * 50_000 (пол-мес) = 400 тыс. рублей — поэтому не встречаю в нем сочуствия от слова «совсем». Быть уволенным за сорванный проект совсем не хочется.

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

Естественно, соревнование с призовым фондом в 100к.

К концу майских у меня было штуки 2 крутых оформленных рабочих решения и несколько попроще за бюджет вчетверо меньше чем решение в лоб (так и еще и уговаривать никого не пришлось). Почему так вышло? Ведь победитель получил ровно столько же сколько получил бы согласившись поработать на праздниках -- только работы сильно больше вышло бы. А ответ есть в цитате из Шваба выше.

А еще один мой кейс по запуску соревнования думаю вам хорошо известен — MTS ML Cup 2023. На понятном языке задачу и бейзлайн описал на хабре.

За фонд в 650 тыс боролись 2311 участников с 6336 решениями — сравните с крупными банками у которых призовой фонд в 10 раз больше а участников в 10 раз меньше.

stay tuned ⚡️
Я принес. Bar is sooooooooo high

Сегодня приношу вам социально-айтишный хоррор про то, как человек отработал в Amazon Web Services 3 года и уволился, устав бежать изо всех сил в этом колесе https://nekrolm.github.io/blog.html.

Для себя я отметил несколько моментов:

- Традиционная любовь корпораций евангелизировать свои «принципы», «свойства», «ценности» и прочие желаемые в работниках качества. Да, я понимаю, что на масштабе многих тысяч людей нужна какая-то общая линейка и общее направление, куда идти синхронно в ногу. Но чем старше и опытнее я становлюсь (совсем скоро счетчик снова тикнет), тем лучше умею отличать в этом всём пользу от манипуляции 🙂
- Стрессовый кашель. Страшно, если вдуматься, как стресс перекручивает человеческий организм, и каков должен быть его уровень, и сколько он должен был копиться. У меня есть пара знакомых, которые с подобным тоже столкнулись.
- Любовь к прожарке, баррейзингу и влияние этого на моральное состояние человека. Опять же, да, я понимаю, что в бигтехе очень дорога цена ошибки, плюс взгляд со стороны и критика помогают отточить решение. Просто надо понять, что это, как и всегда, некоторый трейдофф, где есть толика пользы и толика страдания.
- Релизы по году-полтора. Менеджеры уже давно привыкли к долгому циклу обратной связи от своей работы, но вот для инженеров это бедовая цифра, на мой взгляд.
- Ну и конечно же ежедневный опрос о том, как ты энергичен, жизнерадостен и насколько быстро работаешь – это прям лучший инструмент, чтобы понять, что происходит с людьми. Особенно на фоне регулярных рассказов о том, как планируется делать сокращения.

Там, наверное, по опросам шкалит уровень энергии и трудолюбия.
Всё как в анекдоте:
- Специалисты говорят, что люди стали жить лучше.
- А люди утверждают, что ничего не ощущают.
- Но ведь они же не специалисты.


Фан-факт: я заготовил этот пост ещё в воскресенье, а в понедельник AWS конкретно так прилёг. Вчера было много мемов про сокращение SRE и разработчиков в Амазоне, мол, у нас тут ИИ много чего теперь делает.
А я вот видите, как всегда, со стороны людей захожу🙂
Forwarded from Dealer.AI
Мама любит Mamba и Сережа тоже (с) Тихий "релиз" Mamba3 на ICLR2026.

Если хотите понять, про что Mamba и все эти RWKV, какие модели уже были и оценить перспективу – читайте тут, тут и тут.

Утечка тут, чирикают тут. Хвалебные отзывы по каналам смотреть не тут. 💳

Мое мнение такое, уже несколько лет мы видим развитие SSM, RWKV моделей. Основной пойнт - это линейность от размера входного сиквенса, в отличии от механизмов внимания в трансформерах. При этом, мы наследуем и проблемы, аля затухание или взрыв градиента, что влияет на механизм "памяти" внутри архитектуры. Отсюда мы и получаем пляски с разными микстами rnn+transformer в виде указанных выше моделей семейств ssm, rwkv.

Причем можно проследить несколько направлений:

1. Работа с механизмом внутренней "памяти" в лице специальных блоков внутри архитектуры.

2. Работа с сложностью от длины контекста. Микстят блоки ssm с блоками трансформера, где-то последовательно, где-то параллельно.

3. Оптимизация работы всей этой доброты на GPU. Т.к. в отличии от RNN-like, трансформеры параллеляться хорошо.

Кстати знаю, что в бигтехах стажерам дают RWKV делать для тюна автокомплит и пр. Штуки для умной клавы, вместо lstm, разумеется. И это работает on-device хорошо, как и сказано в Mamba3 в качестве перспективы.

4. Работа над стабильностью самой архитектуры, чтобы исключить проблемы RNN. Все эти плавности/насыщения весов и сходимость оттуда же.

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

Также мы уже видели публично аналоги от Qwen3 next, от ребят из Nvidia и пр., стало ли это смертью трансформера? Поживем, увидим, пока все еще не становилось. Но динамика развития архитектур данного семейства хорошая, может даже кому-то лучше заложиться на знание и представление о таких архитектурах. А каким-то rnd командам и на собственные исследования и разработки, чтобы потом внезапно не оказаться в догоняющих.

Всем добра, увидимся. 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dealer.AI
REGEN – новый подход к рекомендациям на основе диалогового взаимодействия.

Традиционные рекомендательные системы сосредоточены на предсказании следующего товара, который может понравиться пользователю, но не способны вести естественный диалог, понимать отзывы на естественном языке или объяснять причины рекомендаций. Существующие архитектуры и наборы данных не позволяли изучать эти новые возможности, теперь же есть REGEN от Google (Reviews Enhanced with GEnerative Narratives).

Работа поделена на два важных аспекта:

1. Датасет для измерения качества подобных взаимодействий юзера, рекомендательной системы и диалогового интерфейса.

2. Предложены и протестированны две архитектуры рекомендаций: FLARE - на базе коллаборативной фильтрации; и LUMEN - на базе LM (Gemma LLM), учитывающей, как интеракции user-item, так и текстовые взаимодействия. Люмен заявили впервые именно в статье REGEN.

Начнём с данных. Созданный набор данных REGEN был собран не совсем с нуля – исследователи дополнили общедоступный Amazon Product Reviews dataset, синтезировав с помощью LLM Gemini 1.5 Flash два ключевых элемента:
1. Критика: Примеры того, как пользователь может выразить предпочтение или критику в диалоге (например, "Я бы предпочел черную ручку, а вы предлагаете мне красную").
2. Нарративы: Разнообразные текстовые пояснения, такие как причины для покупки, отзывы о продуктух или предпочтения пользователя.

Архитектуры моделей. Как уже упоминалось, были предложены и протестированы два подхода:

1. Гибридная система FLARE. Классическая модель аля SASRec предсказывает следующий товар, а легковесная языковая модель Gemma 2B генерирует нарратив на основе этого предсказания.

2. Единая модель LUMEN. Одна большая языковая модель обучается для совместного выполнения задач: обработки критики, генерации рекомендации и создания нарратива в рамках единого процесса. Модель учится e2e "решать", когда выдать ID товара, а когда продолжить генерировать текст.

Дизайн эксперимента и метрики.
Эксперименты были построены вокруг предложенной авторами статьи задачи – совместной генеративной рекомендации товаров. Модели получали историю покупок и, опционально, текстовую критику, после чего должны были порекомендовать следующий товар и сгенерировать о нем контекстуальный нарратив.

Для оценки использовались два типа метрик:

- Метрики точности рекомендаций. Основной метрикой был Recall@10 – насколько часто желаемый товар оказывается в топ-10 предсказаний.
- Метрики качества текста. Для оценки сгенерированных нарративов использовались BLEU, ROUGE и семантическое сходство cosine similarly (используют Gecko эмбы).

В итоге, включение пользовательской обратной связи в модели улучшало Recall@10 для обеих архитектур. Разумеется, для модели на базе e2e подхода LUMEN качество согласованности было лучше, ввиду исполнения LM как базы архитектуры. Однако и последовательное использование FLARE, как next item prediction+LM также улучшало метрики. Для подробного изучения показателей бенчей советую заглянуть в статью.

В целом, основная идея авторов создать новый подход на основе не только исторических интеракций юзера с товарами, но и посредством воздействия естественного языка в виде обратной связи (отзывов, критики и пр.). Это же позволяет перевести рекомендации и поиск в "живой формат" диалогового взаимодействия, возможностью уточнения и обратной связи. Представьте, вам не понравились рекомендации, вы просто пишите: "неплохо, но я бы хотел видеть тут <целевой объект>". А система тут же реагирует на это в виде обновления пула.
В целом, мы уже видим на примере Perplexity и OpenAI переход в диалоговое взаимодействие с их решениями, как наиболее нативное и удобное. Теперь очередь рекомендательных систем.