Сделка с совестью на хакатоне или «Как победить с нерабочим кодом?» История одной команды…. data science.. data science. machine learning.. data science. machine learning. Веб-разработка.. data science. machine learning. Веб-разработка. госсектор.. data science. machine learning. Веб-разработка. госсектор. карьера в it.. data science. machine learning. Веб-разработка. госсектор. карьера в it. конкурсы.. data science. machine learning. Веб-разработка. госсектор. карьера в it. конкурсы. разработка по.. data science. machine learning. Веб-разработка. госсектор. карьера в it. конкурсы. разработка по. Управление проектами.. data science. machine learning. Веб-разработка. госсектор. карьера в it. конкурсы. разработка по. Управление проектами. хакатон.. data science. machine learning. Веб-разработка. госсектор. карьера в it. конкурсы. разработка по. Управление проектами. хакатон. цифровая трансформация.

ДИСКЛЕЙМЕР: Все изложенное является субъективным мнением автора, основанным на личном опыте участия. Все ссылки на код и сайты находятся в открытом доступе

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

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

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

Задача и подготовка

Мы выбрали трек от Департамента жилищно-коммунального хозяйства города Москвы.
Задача: Создать рекомендательный сервис прогнозирования возникновения технологических ситуаций.
Если коротко: Нужна карта с дашбордами, где диспетчер может оперативно выявлять неисправности на сетях водоснабжения.

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

Две недели жесточайших баталий с кодом, Docker-контейнерами, данными и кучей технических трудностей.

Цель хакатона в глазах участников выглядит так:

  1. Улучшить процессы/жизнь людей.

  2. Сэкономить деньги организации на разработку прототипа.

  3. Получить вознаграждение за проделанный труд (если решение действительно помогает компании).

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

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

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

Питч-сессия и первые тревожные звоночки

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

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

Представитель команды начала речь со слов: «У нас есть друзья из ДЖКХ».
Тут все напряглись. Ни одну команду мы так внимательно не слушали, как эту.
Во-первых: когда возникает такая ситуация, становится непонятно, в чем смысл соревнования, если у команды есть «знакомые» в компании-заказчике.
Во-вторых: докладчик рассказала, что они уже 9 раз выступали в роли подрядчика для реализации сервиса «Карта-офиса.рф» и различных сервисов для водоканала.

Вопрос… Оставим его на потом.

Слушаем дальше выступление в формате: «Дорогие дети, смотрите, каааакие красиииивые кнооопочки, смотрите, какие мы клааассные».
Визуально сервис действительно выглядел как сильный конкурент, во многих моментах обходя другие решения на два шага вперед. Но суть хакатона заключается в решении реальной проблемы, а не в составлении красивой картинки, ведь так? Так?)

Страница с картой москвы и случайными точками

Страница с картой москвы и случайными точками

Далее на презентации мы видим скрины со страницы с картой Москвы и точками, отмеченными как адреса с проблемами. И тут же впадаем в ступор: это абсолютно случайные точки, которых ВООБЩЕ не было в датасете. Думаем, ну может, показалось.
Затем на том же скрине обращаем внимание на блок с IPTV-видеонаблюдением. Интересное решение… А как оно работает? Почему на изображениях с этих видеокамер мы наблюдаем насосы для водоснабжения, стоящие на паллетах для транспортировки на складе? Неужели это можно было достать в рамках простого участия в хакатоне? Очень странно.

Труба сгниёт через 2,5 часа?

Труба сгниёт через 2,5 часа?

Затем видим странные скрины с прогнозом, исходя из которого труба водоснабжения должна сгнить через два часа… Забавно. Смотрим дальше.
Девушка, презентующая решение, вдруг заявляет, что их команда использовала LLM для предсказания утечек на системах водоснабжения. ЧТО?!

Удобная диаграмма=)

Удобная диаграмма =)

Затем нам демонстрируют прекрасную и абсолютно понятную каждому школьнику диаграмму видов сценариев аварийных ситуаций. Все это в крайне удобном и понятном виде (нет).

Следующим слайдом идет информация о технической реализации сервиса. Обратим внимание на заявленную архитектуру:

Архитектура и метрики

Архитектура и метрики
  1. Хранилище данных + ГИС-интеграция.

  2. Модуль прогнозирования ML-модели.

  3. Модуль анализа причин (RCA движок).

  4. Модуль рекомендаций (База знаний).

Запомним это. Далее нам это пригодится.

Технический разбор полетов: метрики и реальность

Теперь плавно переходим к метрикам ML-модели, которые были представлены на слайде:

  • Linear Regression: 4 folds, 384 точки.

  • LGBM: 4 folds, 384 точки.

  • Transformer: 6 folds, 576 точек.

Что мы видим? Мы наблюдаем странный подлог результатов (если они вообще реальны).

  1. Сравнение моделей невалидно. Для корректного сравнения все модели должны оцениваться на одних и тех же фолдах. Разное количество eval_points означает, что Transformer тестировался на другом наборе данных.

  2. Ошибка SMAPE (Symmetric Mean Absolute Percentage Error) у линейной регрессии равна 79.61%, что говорит о полном провале данной модели. С трансформерами подобная же ситуация: 33% — плохой показатель. Зачем такое заявлять — неясно.

    Справка: Метрика SMAPE варьируется обычно от 0 до 200%, где 0% — идеал, а значения выше 20% считаются низкоточными.

  3. Противоречия в метриках. MAE/RMSE очень низкие, тогда как SMAPE слишком высокие. Это указывает на одну из проблем:

    – Данные не масштабированы для SMAPE.

    – MAE/RMSE считаются на нормализованных данных.

    – ЛИБО в данных есть околонулевые значения, что вызывает «взрыв» SMAPE.

Если посмотреть на задачу, то видим, что нам надо построить временной ряд и сделать прогноз. ЗАЧЕМ использовать линейную регрессию для этой задачи — вопрос открытый.

Исходя из полученных знаний об их моделях, родились вопросы:

  • Почему разное число folds? Это red flag качества разработки.

  • Почему Transformer показал хуже LGBM в 1.6 раза по SMAPE? Был ли он вообще правильно настроен?

  • Какой масштаб данных? Если потребление в м³ (типично 10–1000), то MAE=0.03 подозрительно мал.

  • Почему в финальном решении нет трансформера? Вероятно, команда поняла, что он неэффективен.

Эти вопросы мы оставили на встречу после награждения. Но мы тогда даже не подозревали, как это все пройдет.

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

Расследование: что под капотом?

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

  1. Модуль «Интерактивная карта структуры компании» для системы «Карта Офиса».

  2. Удостоверение о повышении квалификации коммерческого директора.

  3. Диплом победителя AI Product Hackathon на треке от НЛМК.

  4. Диплом победителя премии «Административный директор 2023».

  5. «Карта Офиса» — победитель акселератора в Сколково.

На данный момент список пополнился и дипломом с прошедшего хакатона:

  • Команда «Карта Офиса» удостоена премии Мэра Москвы за цифровое решение в рамках премии «Лидеры цифровой трансформации».

Так как на презентации мы увидели красивую картинку, сразу стало интересно протестировать решение команды. Оно и по сей день находится в открытом доступе по адресу: карта-водоканала.рф либо watermap.ofmaps.ru.

По результатам тестирования появилось очень много вопросов к продукту:

  1. Половина функционала не работает. Кнопки добавлены, но они буквально ничего не делают. Нет никаких REST-запросов к бэкенду, действий на фронте тоже нет.

  2. Функционал с видеокамерами является вставленными статичными фотографиями без какого-либо функционала.

  3. Блок рекомендаций фактически нерабочий. Все данные статические и жестко прописаны на фронте. Нет никакого реального взаимодействия с бэком.

  4. План действий по предотвращению аварий. После нажатия на кнопку «Утвердить план» мы видим однотипную анимацию, имитирующую важнейшие действия на сервере: «используется алгоритм AES», «Генерация подписи», «Соответствие сертификатам ГОСТ» и т.д. После чего мы можем подписать документ. Снова видим красивую анимацию, за которой ничего не стоит. Никакого общения с бэкендом.

  5. Страница с мониторингом вообще не функционирует.

  6. Страница с «бригадами» не функционирует, это жестко зашитый фронт. Кнопки изменения данных, добавления сотрудников, удаления бригад не работают.

  7. Страница с настройками (видимо, для симуляции аварийных ситуаций) имеет множество параметров, ползунков… Но их изменение ни к чему не приводит. При нажатии на кнопку «Сохранить изменения» мы видим всплывающее сообщение, что настройки сохранены, но на бэк ничего не отправлено.

В текущей реализации это имитация функционала, работающая только на стороне фронтенда. Вот реальный код, который мы нашли:

const p = () => {
    console.log("Сохранение настроек:", e),
    alert("Настройки сохранены!")
}
Сделка с совестью на хакатоне или «Как победить с нерабочим кодом?» История одной команды… - 5

Интересное решение, а главное — как безотказно работает.

Мы не верили своим глазам и пошли искать GitHub этой команды. И нашли, спасибо поисковику Яндекса!

Каждый желающий может удостовериться в моих словах и проверить работоспособность данного сервиса.

Изучив репозиторий от и до, выяснилось, что фронтенд практически никак не взаимодействует с бэкендом. ML-модуль закомментирован и опять никак не связан с сервисом. Решение представляет из себя только красивые кнопочки и текстовую набивку на страницах.

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

Пройдемся по чек-листу их архитектуры, которая была указана на слайде:

  1. Хранилище данных + ГИС-интеграция — отсутствует.

  2. Модуль прогнозирования ML-модели — существует, но практически весь код закомментирован и не имплементирован.

  3. Модуль анализа причин (RCA движок) — отсутствует.

  4. Модуль рекомендаций (База знаний) — отсутствует.

Попытка добиться справедливости

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

Наша заявка звучала так:

«Добрый день!
Мы команда GigaWin, хотим спросить, оцениваются ли решения с технической стороны, будет ли доп. защита.
На питч-сессии послушали выступление команды “Карта Водоканала” и обратили внимание на то, что их решение не функционально, практически не работает с данными, а является шаблоном интерфейса. Посмотрели их репозиторий и обнаружили, что в сервисе не производится обработка данных, а берется заранее заготовленный шаблон. Взволновала положительная оценка решения со стороны членов жюри. Так как целью конкурса является разработка функционального прототипа, хотелось бы уточнить, будет ли проведена дополнительная питч-сессия или дана другая возможность участникам продемонстрировать степень проработки решения».

Получен ответ:

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

Остается ждать… В дальнейшем мы не получили никаких разъяснений и ответов.

Встреча с заказчиком и финал

За час до церемонии награждения командам доступна встреча с кейсодержателями. Мы с радостью пришли на встречу, чтобы задать вопрос касаемо нашего решения и пообщаться с другими участниками. На встречу пришел всего один представитель от ДЖКХ, хотя заявлено было много человек. Пообщались, отличный человек оказался, нашли общий язык, уточнили некоторые моменты.

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

После чего мы начали задавать уточняющие вопросы капитану команды, так как он заявлял, что он главный техспециалист и знает все от и до. После первых же уточняющих вопросов по ИХ ЖЕ сервису «главный техспециалист» посыпался. Ни на один поставленный вопрос не был получен ответ. Либо были получены ответы формата: «вы не понимаете, вы не умеете, а мы можем».
«Продать» продукт карта-офиса.рф мы так и не позволили, чем вызвали достаточно сильное недовольство этой команды.

На награждении первое место получила команда… Думаю, все догадались какая. Карта-водоканала.

После церемонии я не выдержал и пошел задавать вопросы главному технарю их команды. После первого же вопроса я был послан в грубой форме вместе со своей командой, с рекомендацией не мешать им. Легко парировав данный выпад, я задал дальнейшие вопросы, на которые команда отказалась отвечать, что подтвердило отсутствие компетенций в данном вопросе. Капитан команды стал козырять своими достижениями на Kaggle. Но почему-то данный «грандмастер» (по его же утверждению) не смог ответить на базовые вопросы по их ML-части и в принципе на стандартные вопросы про ML, что в очередной раз заставило усомниться в компетенциях данного человека.

Выводы и бойкот

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

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

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

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

Такой вот пост выдался у меня одним из первых. Но молчать об этом не получается. Очень неприятна вся эта ситуация. И неприятна не из-за денег, а из-за несправедливости и нечестности. Наша команда заняла третье место. И грустно за ребят из команды DS Crafters, которые заняли второе место, хотя имели все шансы вместе с нами сражаться за первое и второе место. Все-таки куда лучше сражаться с рабочими сервисами, которые действительно решают существующую проблему, а не являются заглушками ради красивой картинки.

Важно: В данном посте не используются ни ФИО, ни контакты участников команды «Карта-водоканала». Данные люди сами предоставляют свои контакты на своем оф. сайте в разделе «О Компании» карта-офиса.рф/about. Данные люди не стесняются продавать свои решения под брендом ООО «Сфера Битуби».

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

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

Всем удачи на соревнованиях, достойных достижений и смелости говорить правду такой, какая она на самом деле!

Сталкивались ли вы с подобной несправедливостью на коммерческих или государственных конкурсах? Как считаете, есть ли смысл участвовать в госхакатонах ради портфолио, или это всегда лотерея?

Автор: xEnotWhyNotx

Источник

Rambler's Top100