Запускаем серию статей, посвященных IT-специалистам в онлайн-кинотеатре Иви! Мы будем рассказывать о разных командах, их задачах, вызовах и внутренней кухне. Решено было начать с команды машинного обучения связи с предстоящим митапом, где разработчики поделятся своим опытом. В этом материале знакомим поближе с Дмитрием Русановым, руководителем группы разработки машинного обучения, и его командой

Чем занимается твоя команда и с каким технологическим стеком вы работаете?

Наша команда — это сердце персонализации на сервисе. Если говорить просто — мы делаем так, чтобы каждому пользователю показывался именно тот контент, который будет ему интересен. Это касается всего: от рекомендаций фильмов и сериалов до персонализированного набора кнопок с различными фильтрациями контента на странице. Также у нас периодически появляются новые разделы и продукты, в которых нужна персонализация. Например, был довольно крупный проект рекомендаций коротких видео. А ещё недавно запустился раздел мини-драм т.е. вертикальных сериалов с очень короткими сериями. Основная работа ML-инженеров в нашей команде заключается в поиске гипотез для улучшения сервисов рекомендаций, сборе данных, построении признаков, исследовании и внедрении новых архитектур. Для приоритизации гипотез мы активно используем как продуктовые подходы вроде ICE и RICE, так и более технические, например, с помощью Causal Inference оцениваем эффект при заданном воздействии. А если говорить непосредственно о технологическом стеке, то на текущий момент это Python, ClickHouse, HDFS + Apache Spark, Airflow, Nvidia Triton Inference Server.

С какими подразделениями внутри компании тесно взаимодействуете?

Во-первых, мы очень плотно работаем с командами нашего ML-отдела. С backend-разработчиками, которые помогают нам внедрять модели. С аналитиками, которые помогают нам искать гипотезы по улучшению продукта, а также забирают на себя всю работу по проведению A/B-тестирования. С MLOps командой — благодаря им работа в нашей инфраструктуре становится всё удобнее, появляются и развиваются новые возможности вроде инференса на GPU. А благодаря нашим QA-инженерам мы более спокойны за качество релизов. Также в последнее время растет количество взаимодействий с парой команд вне нашего отдела. Первая — это команда технической аналитики, которая стала помогать нам собирать данные и формировать признаки — то есть характеристики пользователей и контента. Вторая — это команда Groot. Да, у нас многие команды носят названия из вселенной Marvel, это такая традиция внутри компании Иви. Groot занимается развитием Feature-store — хранилища признаков (по-другому — фичей). По сути, это сервис с быстрым и медленным хранилищами, в которых лежат все те признаки, которые критически важны для построения наших рекомендательных моделей. Это взаимодействие позволяет нам оперативно работать с данными и постоянно улучшать качество выдачи.

Каким достижением или каким самым крутым проектом за последнее время вы особенно гордитесь?

Однозначно это наш внутренний проект под названием «Шаблонизация». Мы пришли к нему, осознав, что некоторые рутинные задачи — например, добавление нового признака или запуск рекомендательной системы для нового продукта — отнимают непропорционально много времени. Мы детально исследовали весь процесс разработки и провели огромную работу по оптимизации и автоматизации. Результат превзошёл ожидания: сейчас один специалист буквально за пару дней может добавить десятки новых признаков. А самый яркий пример — это когда мы запустили новый A/B-эксперимент всего за час, изменив, по сути, одну строчку кода и сделав несколько кликов в админке. Этот проект кардинально ускорил нашу разработку и дал нам огромную гибкость. Кстати, именно про этот проект я и буду рассказывать на предстоящем ML-митапе.

Как в команде принято отмечать успехи?

У нас в отделе сложились свои традиции, хотя они и не всегда привязаны к закрытию проектов. Мы периодически собираемся в офисе, чтобы поиграть в настольные игры, ходим на встречи книжного клуба, устраиваем выездные тимбилдинги — не так давно, например, ездили в гости к коллеге в Самару. А ещё этим летом был тимбилдинг на «бухлоходе» — небольшом корабле, где можно было прямо на палубе жарить шашлыки, петь караоке и наслаждаться природой. Мне кажется важным, что у нас есть такое неформальное пространство для общения, где можно просто пообщаться и отдохнуть вместе. Так что успехи вот так плавно отмечаются за очередной встречей.

Можешь вспомнить самый эпичный факап и то, как вы из него выкручивались?

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

Как ты относишься к экспериментам и инициативам, которые исходят от самих сотрудников? 

Очень положительно, и это не просто слова! У нас это является частью культуры. Например, на ретроспективах или встречах один-на-один регулярно звучат предложения по улучшению процессов. Так у нас возродились и стали еженедельными «ML-синки», где мы либо обсуждаем внутренние проекты, либо разбираем свежие статьи из мира ML. Что касается конкретных технических инициатив, то у нас есть отличный пример: коллеги заметили, что рекомендации похожего контента работают недостаточно хорошо, и сделали прототип на основе алгоритма EASE. Он быстро показал хорошие результаты, затем мы внедрили его и получили положительный результат на A/B-тесте. Более того, в процессе внедрения вышла еще одна статья с улучшениями этой модели (EASE-DAN), которую мы довольно быстро заметили и реализовали. Мы стараемся создавать среду, где есть и время, и ресурсы для проверки таких гипотез.

Как ты поддерживаешь профессиональный рост сотрудников?

Мы стараемся подходить к этому системно. Яркий пример — когда мы всей командой решили прокачаться в теме глубокого обучения. Мы договорились выделять время в рабочем графике на прохождение специализированных курсов. В календаре у каждого есть зарезервированные часы для обучения. При этом мы не сидим в общем зуме, каждый движется в своем темпе, но всегда может обратиться к коллегам для обсуждения сложных моментов. Компания, конечно, поддерживает это финансово. Такой подход позволяет нам расти вместе и сразу применять новые знания в работе.

Как стать частью твоей команды?

Откликнуться на нашу вакансию и пройти три этапа собеседования: с HR, техническое и с руководителем отдела. Не буду расписывать много требований. Основное, что мы ожидаем с технической стороны — это уверенное понимание ML, рекомендательных систем, а ещё желателен опыт в DL и RL. И, что ключевое, важно умение решать проблемы. Но не менее важны и софт-скиллы. Мы очень ценим людей, которые не боятся проявлять инициативу и брать на себя ответственность. Мы ищем тех, кто хочет не просто делать задачи, а влиять на продукт и расти вместе с командой.

5 советов, как стать самой крутой командой от Димы Русанова и больше о жизни сотрудников Иви — в телеграм-канале!

Комментарии (1)


  1. ChePeter
    02.10.2025 09:57

    Математика в команде есть? Точнее прикладные математики, которые могут правильно прикладывать математику к реальности.