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

TL;DR: я прошёл кейс на антифрод в real estate. Фидбек положительный 👍

▶️Что было на кейсе?
Как я понял, когда готовился, самое важное — это структура ответа. Я отвечал по такому пайплайну:

1) описываю задачу своими словами
2) выделяю пользу для бизнеса и для пользователя, бизнес, продукт метрики, контр-метрики.
3) формулирую задачу в рамках ML, что поступает на вход, а что на выход модели, оценка нагрузки
4) анализирую доступные данные, фичи + опр таргет
5) бейзлайн (если можно)
6) настраиваем мониторинг метрик (бизнесовые + системные)
7) дизайн аб-теста
8) указываю на проблемы и недостатки бейзлайна
9) продвинутое ml решение (доп фичи, DL)
10) дизайн аб-теста
11) выкатка в прод, вырисовка архитектуры (сервисы, бдшки), требуемые гпушки, оценка нагрузки RPM

Тема кейса — поиск фродовых итемов в недвижимости на Авито.

▶️Что я сделал хорошо (на мой взгляд)?
- Метрики, бизнесовая часть
- Быстро допёр до правильного определения "фрода" (тк меня однажды заскамили с арендой на Авито 😁)
- Бейзлайн
- Архитектура
- Софт скилы

▶️Что я сделал плохо (на мой взгляд)?
- Когда усложнял решение туда-сюда размышлял, в итоге пришел к какому-то решению, но цепочка рассуждений была слабая
- Пытался как-то вставить разметку через LLM, в итоге был провальный ход, но я вышел из этого тупика сам
- АБ тестирование я кое-как с ошибками вытащил
- Волновался, интервьюер по идее не заметил, но из-за этого было труднее думать. В будущем конечно нужно над собой работать

😢 Видео не сохранилось.
Так бы я его выложил, конечно, с разрешения HR и интервьюера.

▶️Что в итоге?
Я пока что в ожидании оффера. Так как собес прошел успешно и фидбек положительный, то я стану уважаемым мидлом (первого уровня), а не джунишкой-обоссышкой. Я очень рад!! 😇 Продолжу заниматься Fashion в Авито 💅

P.S. В комментариях к посту фотки моих рассуждений на доске.
Please open Telegram to view this post
VIEW IN TELEGRAM
recsys-in-shopping-tmc25.pdf
5.3 MB
Про мой доклад на Turbo ML Conf 2025

Вчера выступил на конференции Т-Банка. Рассказал о том:
- Как мы видим академический research с точки зрения продуктовой команды
- Какие инсайты получили из продуктовой разработки (и чего не найдёшь в статьях)
- Как преобразовали продуктовую проблему в статью про SMMR

Ключевые тезисы:

1️⃣ Next-basket recommendation
По нашим экспериментам — не увеличивает GMV. Чем точнее предсказываешь корзину пользователя:
✔️ Больше используют рекомендации
✖️ Но пропорционально меньше пользуются поиском и каталогом
Есть надежды на uplift-рекомендации, но пока work in progress.

2️⃣ Формальный подход к фичам в ранкере
Мы пришли к почти формальной методике:
- Применима к любому сервису
- Покрывает почти все значимые признаки
- Позволяет генерировать тысячи фичей

Алгоритм:
1. Расписать все степени свободы
2. Выделить приоритетные
3. Реализовать

📌 Очень похожий подход описывал Иван Брагин в докладе про 3 место на VK RecSys Challenge

3️⃣ "Нельзя выучить то, чего нет"
Много докладов по recsys про более точные предсказания next item или улучшения трансформерных моделей. Но почти ничего про важное условие: это работает только при наличии персональных паттернов в данных

Пример:
Если дачники не покупали семена в сервисе → никакая модель не порекомендует семена дачникам
✔️ Частичное решение через LLM: статья YouTube 2024

Вывод:
Качество рекомендаций = не только код, но и качество данных.
Как сказал DeepSeek: "На доброй земле и крапива цветёт, на худой и рожь сохнет."

4️⃣ RL в RecSys: год спустя
После прошлогоднего доклада "RL в RecSys: хайп или игра в долгую":
🔹 Пока склоняемся к "хайп"
🔹 Но продолжаем наблюдать за ситуацией
Forwarded from Neural Info
Прочитал тут прикольную статью про кэширование, советую изучить всем кто примерно представляет себе что такое кэширование, но никогда не погружался даже в базовые детали данной техники.

В статье рассказывается про скорость различных уровней памяти, trade-off объема и скорости памяти, стратегии кэширования в зависимости от различных потребностей приложения, а также в конце статьи можно узнать про некоторые техники замещения элементов в кэше, в частности про крайне популярный Least Recently Used (LRU) алгоритм.

https://planetscale.com/blog/caching

Ссылку на статью украл нашел в посте Антона.

#programming
Привет, товарищи-статистики!

Наконец-то написал про еще один метод последовательного тестирования, но очень свежий!

YEAST - YEt Another Sequential Test от ребят из Zalando от 2024-го года.

Это вам не методы из 40-х / 70-х / 80-х, которые индустрия переоткрыла для себя (хоть я и считаю, что Group Sequential Testing + "тщеность" бытия усилий самый простой, лаконичный и понятный из них + легче реализовывается)

Я наткнулся на него случайно: решил посмотреть на создателя известного калькулятора по AB - Эвана Миллера, в его ленте в Линкедин наткнулся на пост как раз про этот тест. И это оказалось - красиво!

Кажется, ребята смогли реализовать мечту многих начинающих AB-щников, а точнее даже типичного заказчика: при какой конкретно сумме транзакций / РТО / конверсий (условно, по B, но там чуть хитрее) мы сможем сказать, что результаты действительно лучше и надо катить. Так-то обычно заказчиками и начинающим после в ответ начинают рассказывать про критерии, и те немного начинают унывать от каких-то статистик, t-распределений..

Метод "идеалогически" является альтернативой всем ранее представленным тестам, работает с аблютной величиной метрики, - максимальная конкретика вместо t, лямбд и пр., - не нуждается в определении моделей данных как тот же (m)SPRT.

Метод уже внедрен в AB-платформу Zalando и является их стандартом.

Подготовил для вас, дорогие товарищи, максимально разжеванный разбор метода, в том числе математики, а она там может привести в уныние и бывалого :) Даже Эван намекнул: "they (Zalando) do real math instead of my 18th century aristocratic hand-waving" (он пытался что-то такое реализовать давненько)

Давайте поймём YEAST: Yet Another Sequential Test
Применимая в реальной работе модификация RICE

За последнее время уже с несколькими людьми из разных компаний обсуждал, как я модифицировал метод приоритизации RICE, и все говорили: «Да! У нас тоже все эти ситуации и проблемы есть!»

Да кто такой этот ваш RICE?
Длинный ответ можно прочитать, например, тут https://productstar.ru/rice.

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

Критерии простые (как я люблю):
- Reach (охват) – количество пользователей, которых затронет предлагаемая фича.
- Impact (влияние) – в некоторой мере оценочное суждение, насколько важна и нужна фича, насколько сильно она повлияет на пользователей.
- Confidence (уверенность) – степень уверенности в двух предыдущих оценках. Одно дело – вы подробный рисерч провели, а другое – вы пальцем в небо ткнули на основании своих ощущений.
- Effort (усилия) – трудозатраты на выполнение.

В теории это всё. Мол, так делайте, и спина болеть не будет.

Но на практике работы в разных командах и компаниях, где у моих команд было много заказчиков, я вывел еще два дополнительных критерия.

Коэффициент обманщика (пишу вам тут литературно приемлемым языком)
Помните сказку про мальчика, который кричал «Волки!»?

Так нередко встречается и в жизни. Есть заказчики, которые говорят: «Это точно очень надо», ты им делаешь, а они потом не пользуются. Или те, кто говорит: «Очень срочно!!!», ты делаешь, а они только откроют посмотреть недели через две-три. Или те, кто говорит: «Это блокер! Без этого нельзя продолжать работу!!!», а при детальном рассмотрении оказывается, что просто у пары людей из десятков что-то медленно работает и надо ждать дольше, чем обычно.

Все примеры – это настоящие истории. А то вдруг подумаете, что это я сочинил для красного словца, ведь кто будет в здравом уме обманывать и драматизировать?)

Ну так вот, зная таких граждан и статистику их поведения, можно закладывать коэффициент понижения.

Коэффициент офигевшего
А еще бывает порой так, что вы посчитали все коэффициенты и задача объективно не сильно важна. А иногда даже просто от неё 0 профита. НО эту задачу хочет видеть какой-нибудь высокий/важный/громкий руководитель. И тогда у вас появляется сильно повышающий множитель.

Примеры тут тоже видел разные:
- На А/Б тестировании проверили, что автогенеренные картинки и крафтовые имеют одну и ту же кликабельность и один и тот же профит. Но у важного руководителя, видимо, нет другой важной работы, он отсматривает каждую картиночку и настаивает, чтобы было «сексуально» (я не выдумываю, это цитата). В результате люди будут кратно тратить больше времени и сил, чтобы босс был доволен, что у стрелочки не прямой хвостик, а волнистый.
- Очередная пассия начальника придумала (ни с кем не обсудив, конечно) и выдала в свою соцсеть, что компания сделает какой-то ивент. Теперь у отдела маркетинга новые планы 🙂
- Один руководитель хочет положить себе в резюме недостающий кусочек менеджерского пазла, и теперь у команды новый проект.

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

Но в реальной жизни не бывает объективных и отстраненных аргументов. Даже в компаниях с культурой эффективности и продуктовости. А уж в компаниях, где такой культуры нет, тем более будет человеческий фактор очень сильно выражен.

Так что, на моем опыте, RICE подойдет для 70-90% задач (я их называю политически нейтральными), но оставшиеся 10-30% будут обмазаны дополнительными понижающими и повышающими коэффициентами, и вам придется с этим смириться. Везде так. Различается только частотой и силой проявления.
Forwarded from Tensor Banana
Float - липс синк и говорящая голова на реал-тайм скорости

- на вход картинка 512х512
- лицо должно занимать 60% кадра и смотреть прямо. Если есть обрезка головы, например, макушка, на выходе будут сильные артефакты
- нет video2video, на вход только картинка
- поддерживает 7 эмоций, можно задавать вручную: 'angry', 'disgust', 'fear', 'happy', 'neutral', 'sad', 'surprise' (гнев", "отвращение", "страх", "радость", "нейтральность", "грусть", "удивление"). По умолчанию использует смешанные эмоции.
- аниме лица не анимирует
- скорость на 3090 почти реалтайм: 39 секунд аудио за 41 секунду обработки
- жрет всего 3.3 гига VRAM при 20 секундах аудио
- в комфи ставится через manager по URL без всяких танцев с бубном

Надо бы сделать в комфи авто-вырезалку квадратного портрета с последующей склейкой обратно поверх исходного лица.


код: https://github.com/set-soft/ComfyUI-FLOAT_Optimized

ноды для comfy: https://github.com/set-soft/ComfyUI-FLOAT_Optimized

видео примеры: https://deepbrainai-research.github.io/float/
Interpolation.pdf
2.4 MB
Интерполяции здорового человека. Я более-менее дописал обещанный несколько месяцев назад текст про интерполяции и делюсь им с дорогими пампищиками. Замечания, рекомендации и предложения are welcome. Текст ещё будет расширяться в смысле библиографии и возможно будет дописан кусочек про тригонометрические интерполяции, но, думаю, что в текущем виде уже можно показывать :-)

Что в тексте. Я проповедую идею, что на все интерполяционные задачи полезно смотреть с точки зрения сопряженного пространства. Идея в том, что «данные для интерполяции» нужно понимать как линейные функционалы. То есть как базис сопряженного пространства. Затем подбирать к ним дуальный базис в исходном пространстве функций (тех, при помощи которых интерполируем) и собирать уже из этих многочленов интерполирующие функции.

Тут есть два важных момента.
1. Формулы получаются символьные, а значит универсальные.
2. Не особо важно какими функциями интерполировать. Можно полиномами (как в обычных сплайнах и интерполяционном многочлене Лагранжа), а можно тригонометрическими функциями, можно и какими-нибудь экспоненциальными даже. Или даже смешанными наборами. В общем чем угодно — не важно. Формулы позволяют.

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

Ну и немного эксклюзива.
Можно поиграться с формулами самостоятельно, я сделал проект в colab. Не ругайтесь, весь код сгенерирован при помощи #AI и, вероятно, ужасен :-)

1. Про базис тригонометрических функций тут.
2. Про интерполяцию тригонометрическими функциями тут.
3. Вычисления для сплайнов 5-го порядка здесь.

Надеюсь, что будет полезно и популярно. #научпоп
Каталог каталогов по ML и ИИ.

1. Мини-проекты по машинному обучению с Python
Небольшие проекты для понимания основных концепций. Создание моделей машинного обучения с Scikit-learn для регрессии и классификации.

2. Анализ данных и библиотека проектов машинного обучения
Учебные материалы, код и наборы данных для проектов анализа данных и машинного обучения.

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

4. 500+ проектов машинного обучения и ИИ с кодом
500+ реальных проектов: машинное обучение, глубокое обучение, компьютерное зрение, НЛП.

5. Проекты генеративного ИИ
Современные проекты и сервисы генеративного ИИ. Инструменты для генерации текста, изображений, аудио, видео.

6. Инструменты и проекты LangChain
Инструменты и проекты с фреймворком LangChain для приложений на основе больших языковых моделей и ИИ-агентов.

7. Решения Kaggle
Решения и идеи соревнований Kaggle. Лучшие подходы к решению задач машинного обучения.

8. Топ проектов глубокого обучения на GitHub
Популярные проекты глубокого обучения, ранжированные по количеству звезд. Фреймворки, инструменты и ресурсы.

9. Справочник по машинному обучению
Ссылки, учебные материалы и ресурсы по машинному обучению и глубокому обучению.

10. Ресурсы глубокого обучения
Учебники, проекты, книги и сообщества по глубокому обучению. Нейронные сети, обучение с подкреплением, исследования ИИ.

Обычно такое не люблю, но тут реально собраны тысячи полезных ссылок.
Тут и обучение и фреймворки и инструменты.
Все что может пригодиться в мире ИИ.
Подборки курируемые с десятками, а иногда и сотнями контрибьюторов.
И всё бесплатно. Лет на 5 обучения хватит.

#обучение #каталоги
———
@tsingular
Forwarded from .ml
Популярные SOTA-модели для суперразрешения

📍 Upscale-A-Video — модель для восстановления видео с низким разрешением, основанная на диффузии.

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


Что интересно:

📚 Модифицированные блоки UNet используют темпоральный механизм внимания — обучаются только временные слои, в то время как пространственные остаются фиксированными.

📚 Rotary Position Embedding использует вращательные матрицы для кодирования относительных позиций элементов в последовательности, что позволяет лучше учитывать временные зависимости.

📍 VideoGigaGan — SOTA-модель для видео суперразрешения, в которой ключевую роль играет функция потерь.

Архитектура: традиционный трансформер с UNet-подобным декодером. Важным аспектом является использование temporal attention, который позволяет передавать карты внимания между соседними кадрами. Это уменьшает размер модели и повышает её эффективность.


Что интересно:

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

📚 Применяет фильтры низких частот (anti-aliasing block) при пониженной размерности, что позволяет избежать эффекта мерцания и артефактов, которые часто встречаются в генерируемых видео.

Где взять данные для обучения моделей?


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

Процесс включает:

📌 Размытие из-за микродвижений.
📌 Уменьшение разрешения изображения.
📌 Добавление шума, характерного для камер при нормальном освещении.
📌 JPEG-сжатие, которое широко используется в современных устройствах.

Для обучения модели применяют подход, схожий с дистилляцией: модель дообучают на небольшом датасете реальных данных (real VSR). При этом важно учитывать loss между последними слоями исходной модели и новой, чтобы градиенты изменялись минимально на декодерной части.

💜 Этот пост написал Никита Алутис, ML-разработчик в Точке