Студенческий практикум в центре «Сириус»: ожидания и реальность

Как команды со всей России за две недели справились с созданием полноценных проектов?

С 1 по 14 февраля в образовательном центре «Сириус» прошел интенсивный проектно-ориентированный практикум Яндекса и Факультета компьютерных наук ВШЭ. Две недели студенты со всей России, разбившись на команды, создавали пайплайны для участия в соревнованиях на Kaggle, нейросети, генерирующие отзывы на рестораны и оценивающие уровень оптимизма российских новостей, и таск-менеджер, совмещенный с голосовым вводом и картой желаний. 14 февраля команды презентовали свои проекты. Мы дважды пообщались со студентами и менторами четырех команд. В самом начале практикума, когда они только приступили к работе, и во второй раз – после презентации итоговых проектов, чтобы сравнить ожидания и реальность от двухнедельного марафона и пребывания в кампусе.

«Побед и поражений хватало»

Проект: Создание пайплайна для соревнований по анализу данных

Рассказывает студент Никита Конодюк

Ожидания:

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

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

Реальность:

Задач оказалось так много, что мы не успели реализовать всё, что хотели. Стоит ли говорить, что мы так и не смогли приступить к соревнованиям по-серьезному? В последние два-три дня мы перестали разрабатывать и больше сосредоточились на создании и отработке презентации, а также всякого сопроводительного материала для проекта.

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

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

Для меня победой было каждое ключевое архитектурное решение 

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

«Мы надеялись, что не придется всё исправлять в последнюю ночь»

Проект: Карта оптимизма новостей

Рассказывает ментор Мария Тихонова

Ожидания:

Мы строим карту, с помощью которой можно будет узнать, в каком регионе больше всего позитивных новостей, а в каком меньше, а также мы строим чат-бота, объясняющего, куда лучше отправиться в путешествие. Казалось бы, «анализ текста новостей» звучит скучно, но читать региональные новости оказалось очень интересно: «Человек выпал из окна с собакой» — и как он только умудрился?

В первые дни мы скачали новости из MediaMetrics и региональных пабликов ВКонтакте – всего 800 тысяч новостей. Затем с помощью машинного обучения провели автоматическую оценку позитивности каждой новости, подсчитали общий оптимизм в регионе и построили интерактивную карту. Те области, где доминируют позитивные новости, окрашиваются в зеленый, а где негативные — в красный.

Чтобы уточнить, из какого города новость, мы используем библиотеку «Наташа», которая локализует текст по упоминаемым в нём топонимам. На позитивные и негативные слова делит алгоритм, который мы взяли из статьи 2016 года. Сейчас нужно сделать геомэппинг, написать чат-бота и всё вычистить, чтобы не исправлять баги в последнюю ночь.

Реальность:

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

Так что мне кажется, что студенты не чувствовали себя в тупике. У них получилось создать готовый законченный продукт и отлично презентовать его. И мы успели создать чат-бота для навигации по карте и уточнения информации по определенным регионам.

Во время презентации многие отмечали структурированность и законченность проекта, а также интересную задумку. Более того, 15 февраля в рамках встречи по развитию науки, образования и культуры «Сириус» посетили Владимир Путин и Александр Лукашенко. Им показали некоторые проекты, и российский президент даже изучал нашу карту.

«Хотели обучить модель на комментариях к Википедии, но они оказались по-настоящему токсичными»

Проект: Классификация и генерация текста в определенном стиле

Рассказывают студенты Василий Алексеев и Александр Илларионов

Ожидания:

Нам выпал проект про классификацию и генерацию текстов. Пользователь заливает свой текст, указывает нужную тональность, положительную или отрицательную, и алгоритм генерирует другой текст в таком же стиле. Подобный сервис может создавать примеры для обучающей выборки для алгоритма маркетингового анализа. Сначала мы хотели обучить модель на комментариях к Википедии, но они оказались по-настоящему токсичными. То, что машина сгенерирует на их основе, показывать приличным людям нельзя. В итоге мы решили взять отзывы на рестораны на английском языке с портала Yell.com.

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

Реальность:

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

Трудности были как технические, так и менеджерские

Так как каждый модуль разрабатывался индивидуально, связывать их вместе в единую инфраструктуру требовало значительных усилий, что отвлекало от решения более содержательных задач. Случались истории и с железом: только на одном из двух серверов Сириуса, оснащенных Tesla GPU, участнику команды Артуру Лиссу удалось установить требуемые для работы драйвера. Другой сервис уже был занят интенсивными и долгими вычислениями на CPU другой команды. Тем не менее, нам удалось оптимизировать процесс обучения достаточно для того, чтобы сваять демо, за которые не стыдно. Спасибо Александру Сахнову за советы по отлаживанию пайплайнов. 

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

Работали мы целый день, с девяти до шести, свободное время тратили на чтение. В коворкинге было много книг, Вася Аксенов, например, читал в перерывах «Космический госпиталь» Джеймса Уайта.

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

«Наш сервис поможет людям исполнять их желания»

Проект: Сервис постановки и достижения целей

Рассказывает студент Вадим Чернышев

Ожидания:

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

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

Реальность:

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

В итоге мы решили сделать голосовой ввод, NLP, который переводит фразы вроде «завтра», «к концу недели», «через десять дней» в конкретную дату, синхронизацию сервиса с календарем и коллаж мечты из фотографий, которые пользователь прикрепляет к целям. 

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

Наша команда получилась дружной и конфликтов не возникало 

При подготовке к итоговой презентации у нас возник довольно неприятный казус. Чтобы выступление получилось интересным, мы собирались показать вебсайт и мобильное приложение онлайн. Для этого нам подходил только один компьютер в нашей команде. У остальных размер экрана не вмещал одновременно сайт и симулятор телефона. Мы два дня напряженно готовились к показу, но когда несли нужный компьютер на репетицию презентации, он сломался. Перезарядка не помогала, и нам пришлось в ускоренном темпе создавать видео для презентации. Это был один из самых отчаянных моментов смены, но мы собрались с силами и прошли через это. В итоге всё получилось довольно хорошо: мы выступили и каждый смог рассказать о чем-нибудь интересном и полезном, что он приобрёл на этой смене.

Отдыхать особо времени не было, но мы иногда командой ходили в местные кафешки и шашлычные после работы. Слышал, что кто-то ходил на спа-процедуры, но точно не мы.