Доска AI-объявлений
3.73K subscribers
270 photos
4 videos
140 links
Это не душный, а душевный канал про Data Science в Авито. Пишем о том, что у нас происходит, про ML, вакансии, мероприятия.
Download Telegram
Всем привет! Я Настя Рысьмятова, и сегодня расскажу про ещё один успешный кейс внедрения большой языковой модели в Авито.

🧑‍🎓 Мы обучили LLM находить потенциально чувствительные данные в программном коде, которые могут угрожать безопасности — пароли к базам данных, API-ключи и токены доступа.

🔍 До этого в Авито использовались другие алгоритмы поиска уязвимости. Они находили все вероятные угрозы, включая самые незначительные, и отправляли их специалистам на ручную проверку. В результате за месяцы работы могла образоваться очередь из тысяч предупреждений. Мы хотели сократить объёмы ручной проверки с помощью ML, но важно было сделать модель с полнотой близкой к 1.0, так как в данной задаче false negative имеет большую стоимость.

Мы обучили LLM на 7 млрд параметров решать задачу с полнотой 0.99. Пытались применять модели меньшего размера, но пока безуспешно. После внедрения LLM, объём ручной проверки кода сократился в 5 раз.
❤‍🔥28🔥18👍10🤣2
Всем привет! С вами снова Настя Рысьмятова.

🎉 Вчера мы с командой выложили в open source две модели: A-vibe и A-vision. Это адаптированные под русский язык и домен Авито модели Qwen3-8B-Base и Qwen2.5-VL-7B-Instruct.

Для A-vibe обучение проходило в несколько шагов.

1️⃣ Сделали свой токенизатор, оптимальный для русского и английского языка.

2️⃣ Подменили оригинальный токенизатор Qwen3-8B-Base на собственный.

3️⃣ Обучили полученную модель на большом корпусе данных.

4️⃣ Провели SFT этап.

5️⃣ Сделали RL.

В результате получили модель, которая выигрывает у instruct версии Qwen3-8B по многим русскоязычным бенчмаркам. На SFT и RL этапе удалось научить модель Function Calling и улучшить её навыки в решении математических задач.

Подробный отчёт об обучении A-vibe уже можно найти в статье
🔥2720👍6😱4😁2
Привет! Я Илья Чумак, и сегодня расскажу, как мы с командой снизили время на обнаружение ошибок в работе моделей модерации Авито.

👀 Каждый день через наш сервис проходят миллионы объявлений разных категорий. Каждое тщательно проверяют модели модерации.

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

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

Сейчас обнаруживаем изменение в потоке данных уже через 5–10 минут от их появления, благодаря техникам из области Online Changepoint Detection.

Как это работает
✔️ Для каждой точки внутри временного окна (примерно 30 минут) мы проверяем гипотезу: «не произошло ли именно здесь изменение?». Для этого отдельно оцениваем параметры распределения данных до и после этой точки.

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

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

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

🙂 Благодаря снижению времени реакции наших моделей более 70 миллионов пользователей Авито размещают свои объявления без задержек!
🔥175👍3
Всем привет! Запускаем пробный формат: берём новость из мира DS и разгоняем дискуссию.

🎯 Наш кейс сегодня: Андрей Карпаты и его nanoGPT
Пока многие считают, что ничего не надо пробовать реализовать с нуля и хватает готовых библиотек, один из крашей всея индустрии, Андрей Карпаты, показал мастер-класс. Всего за 4 часа, 100 $ и ~8000 строк кода он собрал работающий клон ChatGPT — с нуля.

Github проекта nanoGPT
Это мощная поддержка «сборки на коленках», которая, кажется, постепенно уходит из Data Science.

🧑‍💻 Карпаты — «сын маминой подруги»
Андрей — редкий пример человека, который преуспел сразу во всех амплуа:
— IC (Individual Contributor): PhD, один из первых в OpenAI, энтузиаст open source с насыщенным github.
— Топ-менеджер: был директором по AI в Tesla.
— Просветитель: видео с миллионами просмотрами на Youtube, курсы в университетах.

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

🧭 А в Авито можно быть «Карпаты»?
Можно! И для этого есть все возможности:
— Как IC — задачи от фундаментальных R&D до внедрения в продакшен, где твоя работа напрямую влияет на бизнес-метрики.
— Как менеджер — курсы для будущих тимлидов, менторство в Академии Аналитиков Авито и на стажёрских программах.
— Как просветитель — ведение курсов в Академии, участие в магистратурах или, как вариант, посты в этом канале 🙂

💬 Вопросы к вам
Как вы считаете, что эффективнее в долгой карьере:
— Сфокусироваться на одной роли и становиться в ней лучшим?
— Или пробовать себя в разных амплуа, как Карпаты?

А хотели бы услышать реальные истории коллег, которые, как и он, переходили из менеджеров обратно в индивидуальные разработчики?
Ждём ваши мысли в комментариях! 👇
🔥10👍7
Привет! С вами Антон Семенистый. В сентябре я выступал на конференции Practical ML.

👉 Рассказал про первые исследования Авито в области нейросетевых моделей для предсказания CTR объявлений в поисковой выдаче.

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

👉 Поделился одним из подходов к внедрению DL-моделей, благодаря которому запустили первые технические тесты малыми силами без серьёзной перестройки инфраструктуры.

Краткие тезисы доклада читайте в карточках ↑
🔥135👍3👎1
Расширения для Visual Studio Code. Часть 1

Привет! С вами Артём, и я запускаю новую серию тематических постов. В этот раз про расширения для Visual Studio Code.
Сегодня рассмотрим, возможно, не самые популярные, но полезные расширения, которые упрощают мою работу каждый день.

Не будем обсуждать стандартные штуки, которые ставятся автоматически при работе с определёнными языками программирования и фреймворками (например, Jupyter, Python, Pylance и другие).

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

Существует два подхода:
— Сделать запрос в поисковике, перейти на сайт marketplace.visualstudio.com и нажать кнопку Install.
— Установить напрямую в Visual Studio Code через панель расширений (Ctrl+Shift+X или Cmd+Shift+X).

Прямые ссылки на расширения для вашего удобства:
Black Formatter
isort
Code Spell Checker + Русский языковой пакет — Russian - Code Spell Checker.
SQL Formatter
vscode-pdf

В следующий раз рассмотрим ещё 4 полезных расширения для VS Code.

Если вам интересно получать такие практические советы, поставьте ✍️ под постом, чтобы мы продолжили развивать это направление! (А ещё нам просто приятно) 🙂
31❤‍🔥7🔥7🥱1
Всем привет! Мы регулярно пишем на Хабр статьи про LLM и не только. Решили показать, что мы успели написать за эту осень:

✍️
Статья от Серёжи Кляхандлера о том, как DS-инженеры совершенствуют автогенерацию описаний и пополняют индекс объявлений Авито.
Читать →

✍️ Показали 10 докладов про ML и LLM с Data Fest Day 2025.
Читать →

✍️ Илья Петряшин написал статью, как мы в Авито обучили ML-модель находить «договорённости» без данных о сделках.
Читать →

✍️ Анастасия Рысьмятова рассказала в статье, как в Авито сделали свою LLM — A-vibe.
Читать →

Если вы что-то пропустили, — советуем наверстать. Напишите в комментариях, какая тема понравилась больше других и почему.

❤️ — если уже видели все статьи.
11🔥4
Привет! Я Денис Кайшев — Старший Backend-инженер. В следующий четверг в прямом эфире я проведу ML reading club. Мы прочитаем и разберём статью Demystifying NCCL: An In-depth Analysis of GPU Communication Protocols and Algorithms, чтобы изучить внутреннюю архитектуру библиотеки NCCL.

Вот о чём поговорим:

— как работают внутренние механизмы, для которых почти нет документации,
— как описываются способы обмена при intra/inter node взаимодействии,
— как строятся алгоритмы коллективных операций.

📌 Трансляцию проведём 20 ноября в 18:00 в Контур Толке.
📌 За час до эфира пришлём напоминание и ссылку на встречу.

Приходите — будет интересно!
🔥1662
Всем привет! Я — Света Широковских, DS-инженер в Авито, и сегодня расскажу, как мы с коллегами участвовали в соревновании e-cup от Ozon. Заняли третье место в треке «Логистика» 🎉

В чём задача

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

Такую постановку можно точно выразить в терминах ЦЛП (целочисленного линейного программирования). Подобные задачи в общем случае NP-трудны, и наша — не исключение.

Часто их решают с помощью солверов, например, на основе метода branch and bound (перебор с отсечениями).

Задачи ЦЛП встречаются во множестве областей — даже в ранжировании на Авито. У меня был доклад про это на конференции e-code.

Как решали
Мы быстро написали бейзлайн, приближённо решив задачу с помощью солвера. А дальше стало ясно, что для улучшения нужно использовать эвристики. Мы реализовали несколько ruin-recreate операторов (они сначала частично разрушают, а потом более оптимально восстанавливают маршруты) на Python, увидели улучшения, а затем ради скорости переписали всё на C++.

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

Вот как выглядело финальное решение
1️⃣ сначала применяли солвер,
2️⃣ затем снова солвер, но с уменьшенным множеством курьеров,
3️⃣ потом применяли балансировку,
4️⃣ и в конце улучшали результат с помощью эвристик.

Итоги и впечатления
Благодаря такой комбинации точных и эвристических методов мы заняли третье место 🏆

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

Обязательно поучаствую ещё в каком-нибудь соревновании. Ждите новых постов 🚀
🔥269👍5