Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
RabbitMQ базовый курс за час

Установка, админ панель. Зачем нужен Rabbit MQ. Брокер сообщений

🗝 Урок живет здесь

Кодим на Коленке
| #RabbitMQ
Демка бизнес-ассистента, которая показывает основы построения reasoning системы c tool use на базе простой LLM (GPT-4o)

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

(на самом деле интеграций с реальными системами нет, агент работает в симуляции)

Из библиотек требуется только openai/pydantic для Structured Outputs и rich (для красивого вывода в терминал). Все остальные вещи вроде демо-БД и инструментов реализованы прямо в коде.

Всего в демке 159 строчек исполняемого кода. Большая часть которого - SGR схема инструментов (у ассистента всего один промпт) и реализация работы самих инструментов.

Статья с демкой - SGR Demo. Код одним файлом - в статье после разбора.

Для тех, кому хочется более серьезного кода, в статье есть раздел "Hardening the code" про то, как можно эту обучающую демку развить дальше.

Ваш, @llm_under_hood 🤗

---
Полный список статей:

- SGR Intro - заглавная страница с определением и основными ссылками
- SGR Patterns - примеры простых паттернов, из которых можно "собирать" более сложные reasoning схемы: Cascade, Routing, Cycle.
- SGR Examples - четыре примера: simple math task, text-to-sql, document classification, advanced reasoning in compliance.
- SGR Demo - минимальное демо бизнес-ассистента с SGR под капотом.
😮 чуток погундеть пришел

только сейчас добрался до Group Sequence Policy Optimization (GSPO) от qwen и вот апдейт к прошлому посту про RL и GRPO, где я по верхам разобрал, как работает обучение с подкреплением

напоминалка. в GRPO мы убираем value-сеть (тяжёлая и дорогая махина в классическом PPO) и сравниваем награды ответов внутри одной группы промпта. дёшево и сердито.

что такое importance weighting и зачем вообще это?
мы генерим ответы старой политикой, а учим уже новую (старая модель генерит ответы, а апдейтим мы веса уже новой модели — off-policy). чтобы вклад примеров был честным, умножаем их на коэффициент «важности»:
- если новой модели ответ «нравится» больше, чем старой, тогда вес > 1 (усиливаем),
- нравится меньше — вес < 1 (ослабляем).
это устраняет перекос от off-policy данных — вся суть GRPO.

че значит "нравится больше"?
Нравится больше = новая политика (новая модель) даёт этому же ответу бОльшую вероятность (выше log-likelihood), чем старая.

как считаем на практике (очень коротко):
1. Берём тот же prompt и ровно тот же ответ от старой модели.
2. Кормим их новой модели в режиме teacher forcing.
3. Снимаем log-вероятности токенов ответа
4. Сравниваем со старой (моделью/политикой): считаем importance = exp(mean(logp_new - logp_old)) для каждого токена отдельно.

- importance > 1: новой модели токен «нравится» больше -> усиливаем вклад;
- importance < 1: нравится меньше -> ослабляем.

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

GSPO
переносит importance weighting на уровень всей последовательности. один стабильно посчитанный, нормированный по длине вес на весь ответ — и этот вес ставится всем его токенам.

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

что получаем
резко падает дисперсия градиентов -> обучение ровнее и стабильнее.

как работает?
1. сэмплим несколько ответов на один промпт
2. считаем group-relative advantage (z-оценка награды)
3. считаем sequence likelihood ratio между новой и старой политикой, нормируем по длине и клипаем. (вот здесь главное отличие — теперь мы не по токенам смотрим важность, а по всей последовательности целиком)
4. один и тот же вес умножаем на все токены ответа и делаем апдейт

🚀 получаем
стабильнее и быстрее, чем GRPO, особенно на длинных ответах/больших моделях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from LLM is all you need
#RAG #retriever

Multi-query - еще одна техника улучшения ретривера в RAG-системе.

Когда пользователи пишут вопросы (в RAG) они часто допускают ошибки, пишут транслитом, путаются в формулировках и т.д. А это не хорошо для энкодера, и очень не хорошо для BM25 (и других компонентов ретривера). Multi-query позволяет это исправить за счёт разных формулировок одного и того же вопроса.

Как это работает:
1. Получаем исходный запрос.
2. Просим LLM написать несколько вариантов исходного запроса.
3. Выполняем поиск документов (чанков) по каждому из них (включая и исходный запрос).
4. Результаты всех поисков объединяем или переаранжируем.

Например: пользователь вводит: "Как испечь торт?"
LLM на это может сгенерировать:
- "Рецепт торта"
- "Как приготовить торт в духовке?"
- "Ингредиенты для домашнего торта"

Такое разнообразие довольно сильно улучшает покрытие поисковой выдачи.

Дополнительно:
1. Можно попросить переформулировать запрос в каком-либо стиле. Например, если запросы на медицинскую тематику, то можно сделать так: "Перепиши вопрос так, как будто его писал врач с многолетним опытом работы".
2. Отдельно можно попросить перевести запрос на английский.
Хуже = лучше

Моя команда в Я.Маркете внедрила метрику дискаверийности (новизны) рекомендаций товаров. И в этом полугодии мы пробуем ее активно растить

Естественно, посмотрели статьи про рост beyond accuracy метрик, внедрили успешные подходы из них, запустили А/В и …
научились стат значимо метрику дискавери снижать 🌚

И меня это очень порадовало

Теперь мы точно знаем, что влияет на метрику в минус - будем делать ровно наоборот и вероятно получим рост! Так что «красные» А/В тесты с падением метрик - часто гораздо полезнее кучи «серых» тестов без изменения метрик

А вообще, вопросиков к современным статьям очень много (особенно в recsys). Неправильный train-test split, подбор метрик под результаты, специально недотюненные бейзлайны, …

Поэтому я обожаю reproducibility reports (впору уж писать свой), где независимые авторы пробуют повторить результаты из статей - и пишут свои менее biased выводы. Один из самых известных в recsys Turning Dross into gold loss: is Bert4Rec really better than SasRec? пару лет назад позволил внедрить SasRec-like модели почти во всех доменах и компаниях

В общем, проверяйте даже «общепринятые» подходы и радуйтесь, если смогли подвинуть ваши метрики даже вниз - отсюда появляется куча идей, как подвинуть их уже вверх 👆
Forwarded from AbstractDL
Dynamic Fine-Tuning

Вот всё-таки есть что-то такое особенное в RL для LLM, чего нет в SFT... модели ну не хотят правильно обобщаться без меморизации редких примеров или деградации на других доменах. Недавно вышло несколько работ, которые показывают, что SFT, на самом деле, это тот же RL, просто с оооочень кривым reward (раз, два). Если коротко, то дело в кросс-энтропии на последовательности токенов. Ведь токены с малой вероятностью вносят непропорционально большой вклад в лосс и неприятно большую дисперсию при SFT.

В статье "On the Generalization of SFT" опять математически вывели SFT как частный случай кривого RL и предложили ну мега простой способ это починить в одну строчку кода. Надо взвесить токенный CE-лосс на вероятность каждого токена, и всё становится прям хорошо.

Назвали эту поправку "reward rectification" или "Dynamic Fine-Tuning" (DFT). Авторы получили большой буст на fine-tuning бенчмарках по сравнению с обычным SFT, а кое-где оно обходит даже GRPO и PPO, причём на очень широком наборе гиперпараметров.

На всякий случай ещё раз подчеркну, DFT — это чистый SFT режим, то есть тут не нужны reward/reference модели, пары примеров, разметка и т.п. Достаточно только позитивных SFT примеров. Кажется это обязательно надо пойти попробовать.

Статья, GitHub
Forwarded from Data Blog
📰 Neuronpedia

Достаточно давно наблюдаю за разными ресурсами, которые помогают потрогать интерпретируемость в онлайн режиме. Сделать такой ресурс сложно, поддерживать — ещё сложнее, и один из любимых для меня — Neuronpedia. И сегодня туда как раз завезли обновления.

Neuronpedia — похожа на 3Blue1Brown, но только для механистической интерпретируемости.

В режиме игры (или простого «тыкания») там можно:


* попробовать Gemma Scope — мини-игра, которая поможет понять, что такое признак (feature) в модели, как найти за что отвечает признак и как управлять (steering) моделью на основе найденного признака;
* исследовать Circuit Tracer — визуализация, которая помогает понять, как признаки проходят по модели layer by layer и образуют цепочки (circuits);
* рассмотреть аннотированные признаки, полученные с помощью SAE и Transcoders на разных моделях — эта возможность хорошо описывает идею SAE (sparse autoencoders), Transcoders и то, как именно с ними получаются признаки.

Моделей с обученными SAE немного, но они пополняются и «свежая» появилась сегодня — Qwen3-4B с 6 миллионами автоматически аннотированными фичами. SAE доступны сразу для всех слоёв.

📰 Выделенные понятия — feature, steering, circuit, sae, transcoders — сейчас составляют основное направление в MI.

Плюсом — это не только академически полезно, но и визуально красиво: можно буквально «увидеть» то, что стоит за инференсами, которые нас скоро заменят.

Всем хорошей среды!
Ваш Дата-автор.
DINOv3 прикольная штука. Плюсы и минусы более-менее понятны. Но вкратце попробовал пройтись по ним в видео.
Заодно побенчмаркал Intel-овскую NPU-шку на новом компе + AMD-шную NPU на доступном компе.
Вообще DINOv3 на удивление везде хуже работает.
https://youtu.be/HaJNyyWsio4
🤨 BERT в RecSys и Ранжировании? Шта??

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

☺️ Что из себя представляет BERT? Это энкодер (фото 1), на вход которому мы подаем некоторую последовательность. А что если у нас есть две последовательности, которые мы хотим сравнить между собой? Например: аналогичны ли эти последовательности (задача дедупликации, задача поиска аналогов, задача подбора релевантного товара...)

В таком случае мы можем взять два берта-башни (фото 2), подавать первые последовательности на вход первой башне, вторые последовательности на вход второй башне, выходы башен как-то совместно преобразовывать (например, считать по ним косинус или евклидово расстояние, конкатенировать и применять линейные слои и тд...) и по результату преобразования считать лосс. Таким образом, мы "сближаем" похожие элементы, обучая башни максимизировать скоры похожих элементов и минимизировать скоры непохожих. В качестве таргета можем взять бинарную величину (0 - элементы непохожи, 1 - элементы похожи, BCE Loss).

☺️ Что же касается самих башен, то явным плюсом такого подхода является возможность получать векторные представления из левой и правой башен, например: если мы решали задачу поиска релевантных товаров для пользователя, то первая башня будет давать нам возможность получать эмбеддинги пользователей, а вторая - эмбеддинги товаров. Таким образом, в процессе решения одной задачи мы получили мощные заготовки, которые в перспеткиве дадут возможность решать задачи сегментации клиентов, сегментации товаров, также эти эмбеддинги и различные преобразования над ними послужат отличными фичами (например, в бустингах) в рамках других задач.

Важно отметить, что башен может быть и две, и три, и десять. Например, вы хотите не просто найти релевантный товар для пользователя, а сразу пару релевантных товаров. Тогда, как вариант, заиспользовать Башню пользователя, Башню товара №1 и Башню товара №2. Вобщем, фантазия здесь безграничная.

🔥 В дополнение к рассказу прикрепляю оригинальную статью про SplitBert. Приятного изучения!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ИИ-мозговед для поиска ограничителей

5:30 утра. Не спалось. Вчера обсуждали метод расстановок в психологии - и я подумал: а почему бы не проверить это на себе?
Никогда ранее подобным не занимался, но подумал, вдруг это поможет избавиться от лишней суеты в некоторых сферах.

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

Выкладываю промпт, собранный Клодом. Проверено на себе:

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

Твои ключевые компетенции:
1. Теоретическая база
- Глубокое понимание системных законов (принадлежность, иерархия, баланс давать-брать)
- Знание феноменологического подхода
- Понимание трансгенерационных связей и родовой травмы
- Владение концепциями "прерванного движения любви" и "исключенных из системы"

2. Практические навыки
- Умение создавать безопасное пространство для клиента
- Способность видеть скрытые динамики в системе
- Навык работы с заместителями (в онлайн формате - через визуализацию)
- Умение находить разрешающие фразы и ритуалы

3. Этические принципы
- Уважение к судьбе каждого члена системы
- Отсутствие осуждения
- Следование за энергией системы, а не навязывание решений
- Конфиденциальность и бережность

Формат работы:
При первом контакте:
1. Приветствуй клиента тепло и создай атмосферу доверия
2. Кратко объясни суть метода расстановок (если необходимо)
3. Спроси о запросе - с чем человек хочет работать
4. Уточни важную информацию о семейной системе

Ключевые вопросы для прояснения:
- "Что вы хотите изменить в своей жизни?"
- "Кто входит в вашу семейную систему?" (родители, братья/сестры, значимые партнеры, дети)
- "Были ли в роду тяжелые судьбы?" (ранние смерти, исключения, тайны, войны, репрессии)
- "Какие чувства вы испытываете, когда думаете об этой ситуации?"

Проведение расстановки:
1. Определение фигур - выясни, кого нужно поставить в поле
2. Расстановка - предложи клиенту мысленно расставить фигуры в пространстве
3. Наблюдение динамик - опиши, что происходит в поле (напряжения, движения, чувства)
4. Поиск решения - через разрешающие фразы, поклоны, принятие
5. Интеграция - помоги клиенту принять новый образ

Разрешающие фразы (примеры):
- "Я вижу тебя и уважаю твою судьбу"
- "Ты большой/большая, я маленький/маленькая"
- "Я принимаю от тебя жизнь и передаю её дальше"
- "То, что произошло, останется с тобой, а я пойду своим путём"
- "Я отдаю тебе твоё и беру своё"

Типичные системные динамики:
- Парентификация - ребёнок занимает место родителя
- Идентификация - человек повторяет судьбу исключенного
- Прерванное движение любви - блокировка чувств к родителям
- Треугольники - вовлечение третьего в отношения пары
- Системная совесть - лояльность роду через повторение судеб

Стиль коммуникации:
- Говори медленно, давая время для внутренней работы
- Используй простые, но глубокие фразы
- Избегай интерпретаций - следуй за тем, что показывает поле
- Будь внимателен к чувствам и телесным ощущениям клиента
- Периодически спрашивай: "Как это для вас?" "Что вы чувствуете?"

Важные напоминания:
- Не все можно решить за одну расстановку
- Некоторые вещи нужно оставить как есть
- Уважай сопротивление - оно тоже имеет смысл
- Решение приходит через принятие, а не через борьбу
- Любовь ребёнка к родителям безусловна и не может быть отменена

Завершение сессии:
1. Убедись, что клиент заземлён и находится в контакте с собой
2. Дай время на интеграцию опыта
3. Предложи не обсуждать расстановку 2-3 дня
4. Напомни, что изменения могут проявляться постепенно

Противопоказания для работы:
- Острые психотические состояния
- Суицидальные намерения (требуется помощь психиатра)
- Нежелание клиента работать с семейной системой
- Отсутствие запроса на изменения

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


Всем любви и мира❤️
Please open Telegram to view this post
VIEW IN TELEGRAM