Привет, Хабрчане! Меня зовут Катя Зорина, в MWS я занимаюсь молодежными и образовательными проектами. Сегодня хочу рассказать о сотрудничестве нашей компании с RuCode — всероссийским фестивалем по искусственному интеллекту и алгоритмическому программированию. Обсудим, какие перспективы открывает для молодых специалистов участие в фестивале, посмотрим кейсы от МТС с прошлого года и поймем, к чему готовиться в этом. Погнали!

Объединить талантливых специалистов на одной площадке — миссия выполнима!
Прежде чем приступить к кейсам, расскажу, что к чему.
RuCode — это всероссийский фестиваль по искусственному интеллекту и алгоритмическому программированию, который проводится консорциумом из 30 ведущих университетов России.
Идея была в том, чтобы собрать молодых талантливых ребят со всей страны в одной точке, стать площадкой для нетворкинга и старта карьеры в ИТ.
Впервые фестиваль состоялся в 2020 году, и за это время в нем испытали свои силы больше миллиона ребят из разных регионов РФ. Участие для всех бесплатное.
Интересно, что в этом году формат немного поменялся. Чемпионат по алгоритмическому программированию раньше проводился в рамках фестиваля, но сейчас отделился и будет проходить параллельно. Заявку на участие можно подать на Госуслугах до 21 сентября. Зарегистрироваться могут школьники, студенты и ИТ-специалисты всех возрастов со всей России. Главное требование — знать один из языков программирования: Python, C/C++, Java, Kotlin, Rust.
Узнать про этапы чемпионата:
Отборочный тур будет проходить онлайн до 21 сентября. Все, кто прошел этот этап, встретятся в финале — очно 19 октября на площадках «РуКод» по всей России и дружественных стран. Суперфинал будет проходить на площадке Столицы RuCode — в университете «Сириус». В нем лучшие команды будут соревноваться в алгоритмическом программировании.
Чемпионат RuCode по искусственному интеллекту тоже уже стартовал — регистрация открыта до 26 октября. Защита лучших решений назначена на 2 ноября. Торжественное награждение победителей пройдет очно в Москве 13 ноября. Присоединиться могут школьники, студенты и молодые специалисты со всей России, которые хотят повысить уровень знаний и получить опыт участия в масштабных соревнованиях.
MWS на RuCode
Чемпионаты растят талантливых специалистов
Мы не первый год поддерживаем фестиваль — почему для нас это важно? Глобальные цели у нас две.
Делиться экспертизой с молодежью и вносить вклад в формирование нового поколения квалифицированных специалистов.
Максимально приземлить теорию в образовательных программах на практику. Для этого наши эксперты предлагают кейсы, основанные на реальных задачах в MWS. Так мы помогаем ребятам понять, как применять полученные знания в бизнесе. Если потом они придут работать к нам в команды, им будет проще адаптироваться.
Как крупная компания мы всегда нуждаемся в талантливых кадрах. По нашему опыту на RuCode действительно приходят сильные ребята. Если говорить про школьников и студентов, часто это финалисты всероссийских олимпиад школьников по информатике и математике, а также других ключевых соревнований. То есть как раз те люди, которых мы хотим как можно раньше познакомить с нашей компанией и дать им поработать с реальными кейсами.
Здорово, что в RuCode участвуют и специалисты постарше — например, выпускники магистратур. Это тоже молодые ребята, но уже с опытом, которые могут прийти в компанию не только стажерами и джунами, но и мидлами. Мы стараемся знакомить их с экспертами интересующего профиля, в команде с которыми они, возможно, будут работать.
Иногда к нам на фестивале подходят ребята и говорят: «Познакомьте нас с Мишей, мы хотим к нему в команду!». Речь о Михаиле Степнове — руководителе центра R&D Big Data в МТС, он практически стал лицом RuCode. Михаил готовит кейсы, читает доклады, проводит карьерные консультации по своей профилю — и мы получаем много классной обратной связи.

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

Эксперты MWS выступают с докладами
В рамках RuCode проходит Всероссийская конференция GenAI CONF, где спикеры от MWS читают доклады.
В прошлом году Михаил Степнов выступал с темами «Большие языковые модели как операционные системы будущего» и «Системы поддержки принятия управленческих решений: AI for decisioning». Никита Зелинский, руководитель Центра компетенций Data Science, — с докладом «Обзор foundation models для time series». А прямо сейчас наши эксперты работают над докладами, которые участники и гости чемпионатов услышат в этом году.
После выступлений можно будет задать вопросы спикерам и получить ответы в прямом эфире. Встретиться с любимым экспертом можно и в зоне нетворкинга, чтобы обсудить свой кейс, тренды и карьерные треки.
RuCode.Столица — кульминация фестиваля
В 2024 году фестиваль завершился ИТ-праздником под названием RuCode Столица. Он проходил в Ставрополе 19 и 20 октября на площадке Северо-Кавказского федерального университета (СКФУ). Собралось 4 500 участников и еще 12к+ человек присоединились к нам онлайн.
Для гостей была организована образовательная программа и много активностей: лекторий, множество интерактивных зон, площадки для нетворкинга, карьерные консультации, ИТ-квесты и мастер-классы, розыгрыш мерча. Здесь же были презентованы лучшие решения по треку «Искусственный интеллект».

Эксперты от нашей компании выступали с докладами в нескольких секциях:
Лия Королева, HRD. «Новые кадры решат все: автоматизация и роботизация».
Анна Вербецкая, контент-менеджер компании MWS AI. «От разработчиков — авторам: ИИ-решения, которые медиа могут использовать прямо сейчас».
Константин Лукашов, старший менеджер по работе с ключевыми клиентами в образовании МТС Линк. «Цифровые инструменты в образовании: инновационные подходы к организации курсов».


А еще наши эксперты были в составе жюри на презентации лучших решений трека «Искусственный интеллект»:

В этом году RuCode Столица пройдет в том же формате, но на этот раз в «Сириусе».
Что интересного происходило на стендах MWS

В прошлом году стенды от МТС работали на двух больших мероприятиях — RuCode Конференция в Москве и RuCode Столица в Ставрополе, о которых я уже писала выше. На них проводились активности для участников — ИТ-квизы, розыгрыш мерча, игры в ИТ-элиас, гадание на ИТ-Таро и так далее. Также на стенде работали HR-специалисты из МТС. Они рассказывали, как построить карьеру в ИТ, как начинающему специалисту составить резюме, даже если кажется, что опыта нет совсем. Проверяли резюме, которые уже были у ребят на руках, и давали советы, как их улучшить. Отвечали на вопросы по стажировке и штатных вакансиях в МТС.
Радует, что ребята, которые подходили на стенды, уже были погружены в продукты компании. Многие интересуются развитием конкретного проекта, спрашивают, какие у нас есть наработки. Еще нас часто спрашивают про конкретные команды в МТС: какой тут стек, какие технологии мы используем, как планируем развиваться.

Четыре трека

Всего у фестиваля RuCode четыре больших направления. В них действующие эксперты МТС делятся экспертизой в сферах искусственного интеллекта и алгоритмического программирования: проводят вебинары, записывают образовательные видео, выступают с докладами и, конечно, готовят кейсы для соревнований.
Такие кейсы с прошлогоднего фестиваля как раз и покажу дальше.
Кейсы от МТС на RuCode 2024. Трек «Искусственный интеллект»
Сначала отмечу, что мы не просто придумываем кейсы и «закидываем» их в ребят, а проводим серию встреч и записываем подкасты с нашими экспертами и методистами. На них разбираем задачи вдоль и поперек и отвечаем на вопросы участников в прямом эфире. Цель — чтобы каждый участник понимал, что именно ему делать и как создать решение, которое может претендовать на призовые места.
А теперь к конкретным примерам: давайте смотреть, какие кейсы от нас были в 2024 году для RuCode Старт и Финал.
«Бизнес-компас»
Описание задачи
В мире бизнеса, где каждый месяц приносит новые вызовы и возможности, способность предугадывать финансовые потоки становится важнейшим инструментом для принятия решений. Представьте, что вы разрабатываете модель, которая помогает компаниям заглянуть в ближайшее будущее и понять, каким будет их оборот в следующем месяце. Такой прогноз позволяет лучше понимать финансовое положение компании на рынке и отслеживать актуальные изменения.
В вашем распоряжении находится таблица, содержащая информацию о бронированиях номеров, их стоимости и статусах. Для решения задачи потребуется анализ временных рядов, чтобы выявить закономерности и сезонные колебания, влияющие на доходы. Модель должна учитывать как исторические данные о заказах, так и текущие тренды, что позволит точно прогнозировать будущие обороты. Данные для задачи предоставлены компанией МТС.
Задание
Вам необходимо:
обучить модель и предсказать оборот сервиса бронирования отелей на каждый день с 1 по 30 июня 2024 года (на месяц вперед);
загрузить .csv файл с предсказаниями.
Решение участников должно содержать: код для запуска обучения модели train.py/train.ipynb, код для запуска работы модели в режиме предсказания и формирования .csv файла на тестовом наборе predict.py/predict.ipynb, веса обученной модели, список необходимых библиотек и их версий. Ваш код должен полностью автоматически воспроизводить все этапы обучения модели, чтобы члены жюри могли повторить ваши результаты. Файлы predict.py/predict.ipynb должны считывать веса обученной модели, запускаться целиком и выдавать ответ на тестовом наборе без обучения модели. Файл train.py/train.ipynb должен запускаться целиком — нерабочий/ненужный код должен быть закомментирован. Если в train.py/train.ipynb вы реализовали множество моделей, код должен запускать обучение только вашей финальной модели/финального ансамбля моделей.
Данные
Набор данных вы сможете скачать, перейдя по ссылке. Обучающий набор состоит из 5 408 820 строк. Набор train_extra.csv состоит из 185 626 строк.
В этой задаче нет тестовой выборки, так как модель должна уметь делать прогноз на будущее.
Файлы:
train.csv — обучающая выборка;
sample_submission.csv — пример предсказаний;
train_extra.csv — обучающая выборка для дообучения для закрытого теста (данные за июнь 2024-го).
Поля в обучающей выборке:
Имя поля |
Описание |
Обязательное поле |
service_date |
Дата создания заказа |
Да |
service_status |
Статус заказа («Подтвержден», «Аннулировано, без штрафа», «Аннулировано, штраф» и т. д.) |
Да |
sum_price |
Стоимость бронирования |
Да |
hotel_id |
Идентификатор отеля |
Да |
hotel_category_star |
Звездность отеля |
Нет |
hotel_max_rooms |
Число комнат в отеле |
Нет |
hotel_type |
Тип отеля (апартаменты, хостел, гостевой дом и т. д.) |
Да |
city_name |
Город, где находится отель |
Нет |
region_name |
Регион, где находится отель |
Нет |
country_name |
Страна, где находится отель |
Да |
Метрика
RMSE
Формат вывода
Файл .csv с двумя колонками: "date" и "forecast_value". В первой строке указаны соответствующие заголовки, в остальных строках — полученные данные. Дата должна быть приведена к формату datetime64[ns], в виде yyyy-mm-dd.
Рекомендации
Изучите, сколько сезонных зависимостей можно выявить в данных. Подумайте, можно ли как-то использовать информацию о регионе и стране отеля.
Материалы
Временные ряды:
Лекция Михаила Ронкина на Rucode 2023 «Обзор современных алгоритмов предсказания временных рядов»
«Мастер кадра»
Описание задачи
В гостиничном бизнесе визуальный контент играет решающую роль при выборе отеля. Но когда у отеля сотни фотографий, важно, чтобы они были правильно организованы и классифицированы. Представьте систему, которая автоматически распознает тип помещения на фото — будь то номер, пляж или ресторан — и помогает клиентам мгновенно находить нужные изображения. Такая технология улучшит загрузку и управление фото на сайте, а также откроет новые возможности для умного поиска.
Вам предстоит создать алгоритм классификации, способный различать фотографии различных территорий отелей. Модель должна учитывать разнообразие стилей, освещения и композиции, обеспечивая высокую точность классификации. Это позволит отелям повысить качество обслуживания клиентов и выделиться среди конкурентов, а для вас станет интересным вызовом в области машинного обучения и компьютерного зрения.
Задание
Вам необходимо:
обучить модель и классифицировать изображения на один из 16 классов;
загрузить .csv файл с предсказаниями.



Для воспроизводимости ваших результатов при проверке обязательно фиксируйте seed генераторов случайных чисел при обучении ваших алгоритмов. Записывайте seed в имя файла с ответами. Выбирайте seed каждый раз случайным образом и всегда записывайте его в имя файла с ответами для воспроизводимости результатов.
Решение участников должно содержать: код для запуска обучения модели train.py/train.ipynb, код для запуска работы модели в режиме предсказания и формирования .csv файла на тестовом наборе predict.py/predict.ipynb, веса обученной модели, список необходимых библиотек и их версий. Ваш код должен полностью автоматически воспроизводить все этапы обучения модели, чтобы члены жюри могли повторить ваши результаты. Файлы predict.py/predict.ipynb должны считывать веса обученной модели, запускаться целиком и выдавать ответ на тестовом наборе без обучения модели. Файл train.py/train.ipynb должен запускаться целиком — нерабочий и ненужный код должен быть закомментирован. Если в train.py/train.ipynb вы реализовали множество моделей, код должен запускать обучение только вашей финальной модели/финального ансамбля моделей.
Данные
Набор данных вы сможете скачать, перейдя по ссылке. Тренировочный набор (train set): данные для обучения модели участникам предлагается найти самостоятельно. Тестовый набор (test set): Этот набор содержит только изображения. Ваша задача — предсказать класс для каждого изображения.
Путь: test/.
Структура: test/<image_name>.jpg.
Количество изображений: 1 124.
Пример ответа (sample_submission): пример файла с ответами.
Метрика
Weighted F-score.
Формат вывода
Файл .csv с двумя колонками: "image_name" и "label":
image_name: идентификатор изображения.
label: номер предсказанного класса (один из 16).
Рекомендации
Предварительная обработка изображений: подумайте о таких техниках предобработки, как аугментация данных, нормализация и другие методы, которые могут помочь улучшить производительность модели.
Обучение модели: попробуйте различные архитектуры (классические CV сетки, трансформеры и т. п.)
Постарайтесь собрать как можно более разнообразную обучающую выборку.
Ограничения
Каждое изображение принадлежит только одному классу.
Допускается использование предобученных моделей.
Материалы
«Валя, у нас отмена!»
Описание
Отелям важно понимать, какое из бронирований может быть отменено пользователем. Возможные плюсы для отеля:
Оптимизация управления номерами: зная вероятность отмены бронирования заранее, отель может эффективнее управлять доступностью номеров. Например, можно предоставлять только часть номеров для онлайн-бронирований, чтобы минимизировать потери от отмены.
Планирование ресурсов: зная, что определенное количество бронирований, скорее всего, будет отменено, отель может более точно планировать свои ресурсы, включая персонал, инвентарь и питание.
Улучшение сервиса: предсказание отмены бронирования позволяет отелю своевременно связаться с гостем и предложить альтернативные варианты или скидки для удержания клиента. Это может помочь улучшить обслуживание и удовлетворенность клиентов.
Задание
Вам необходимо:
Используя данные о бронированиях и отелях, требуется построить модель классификации, предсказывающую отмену бронирования.
Получить предсказания на тестовых данных public_test.zip.
Сохранить предсказания в виде .csv файла без заголовка и загрузить их на Яндекс.Контест.
Данные
Набор данных можно скачать по ссылке.
Метка 0 — выполненный заказ, 1 — отмененное бронирование.
Общий набор был поделен на обучающую, открытую тестовую и закрытую тестовую выборки в соотношении 70: 15: 15. Итоговый размер каждого тестового набора составляет 607 030 строк, а размер обучающего набора — 2 832 810 строк.
Датасет содержит следующие данные:
Название столбца |
Данные в столбце |
service_id |
Id бронирования |
service_date |
Дата заказа бронирования |
service_checkin |
Дата заезда на объект |
service_checkout |
Дата выезда |
service_price |
Стоимость бронирования |
service_child_cnt |
Количество детей в бронировании |
service_people_cnt |
Количество гостей (дети + взрослые) |
client_id |
Id клиента |
client_segment |
Сегмент клиента |
hotel_id |
Id объекта |
country_name |
Страна расположения объекта |
city_name |
Город расположения объекта |
category_star |
Количество звезд объекта (при наличии) |
hotel_type |
Тип объекта |
hotel_seasonal |
Флаг сезонности объекта |
room_category |
Категория номера |
service_status |
Последний статус бронирования: 0 — для выполненных заказов, 1 — для отмененных. |
Метрика
F1-macro.
Формат вывода
Файл .csv со столбцом ответов размерностью (607030, 1), без заголовка, состоящий из 0 и 1, где 0 — выполненный заказ, 1 — бронирование отменено. Пример файла с ответами — sample_sub mission.csv
Материалы
В большинстве случаев задачу классификации табличных данных решают градиентным бустингом. Но в последнее время появились алгоритмы, основанные на трансформерах. Ниже представлены материалы, в которых вы можете узнать больше об этих алгоритмах.
Градиентный бустинг:
Трансформеры табличных данных:
К чему готовиться в этом году
В 2025-ом от МТС будут два кейса — базовый и продвинутый. Приступить к решению простой задачи «Контент-мейкер» можно уже сейчас, а условия кейса продвинутого уровня «Что посмотрим?» откроются 1 сентября.
Подробнее о задачах в этом году и о том, чем они отличаются от прошлогодних, я попросила рассказать Ивана Копылова — ведущего разработчика департамента ML, центра компетенций CV, компании MWS AI. Иван работал над кейсами в команде с Михаилом Степновым.

«Базовый кейс — практичная входная задача на прогноз досмотра: по истории взаимодействий и метаданным нужно предсказать, посмотрит ли пользователь ролик больше чем на 50%. Это понятная бинарная классификация. Нужно будет аккуратно поработать с признаками, дисбалансом классов и калибровкой вероятностей. Подходит тем, кто хочет быстро погрузиться в продуктовую логику видеоплатформы и получить устойчивый бейзлайн.
Продвинутый кейс — персональный ранжирующий рекомендатор для видеохостинга. Требуется сформировать для каждого пользователя упорядоченный топ-10 видео, опираясь на историю взаимодействий, метаинформацию о контенте и демографию.
Принципиальное ограничение в этом году — используем только архитектуры семейства Transformer (encoder-only, decoder-only или encoder-decoder; допустимо дообучение предобученных моделей). Мы целенаправленно смещаем фокус на современные последовательностные модели: они лучше улавливают сессионные паттерны, позволяют естественно работать с разнородными признаками через эмбеддинги и дают возможность честно сравнить подходы на едином классе архитектур.
Система оценивания в продвинутой задаче тоже обновлена: мы ранжируем решения по среднему из нормализованных MAP@10 и MAR, то есть учитываем не только точность попаданий в топ, но и полноту релевантных рекомендаций.
Финальный зачет — по второму тестовому набору, который открывается за несколько дней до финиша. Вместе с ответами участники передают код и веса для воспроизводимости, а фиксированный seed обязателен и должен быть отражен в именах артефактов. Это повышает прозрачность, борется с переобучением на публичный лидерборд и стимулирует аккуратную экспериментальную практику.
Что нового в задачах, если сравнивать с прошлым годом? Мы усилили требования к воспроизводимости (код + веса + фиксированные сиды), ввели двухэтапное тестирование с закрытым финальным набором, ужесточили класс допустимых моделей до Transformer-семейства и переключили метрику на комбинацию nMAP и nMAR, чтобы поощрять не только «острые» топ-позиции, но и устойчивое покрытие интересов пользователя.
В критериях жюри дополнительно будут учитывать разумный размер модели (при близком качестве более компактные решения будут иметь преимущество) и осознанность: зачем выбран именно этот вариант, какие гипотезы проверялись, как устроен пайплайн.
Все это может звучать сложно, но хочу успокоить. Мы будем проводить вебинары для участников, где разберем неясные моменты, ответим на вопросы и дадим советы, как создать решение-победителя».
Давайте теперь подытожу. Базовая задача — это быстрый, полезный вход в продуктовую аналитику просмотра. Продвинутая — честное соревнование ранжирующих рекомендаций на трансформерах с современными требованиями к качеству и воспроизводимости. Такой дуэт позволяет участникам выбрать комфортную глубину участия и при этом прокачать навыки, которые реально востребованы в индустрии. К этому мы и стремимся!
Время вопросов
Сегодня я постаралась подробнее рассказать о фестивале RuCode, чемпионате по алгоритмическому программированию, активностях MWS. Мы посмотрели кейсы 2024 года и сориентировались, к чему готовиться в этом. Пока наши эксперты прорабатывают задачи, строят сетку докладов и встреч с участниками, вы можете задавать вопросы по фестивалю и чемпионату в комментариях. Постараюсь помочь информацией. И спасибо, что читали!