Зачем хардверному стартапу софтовый хакатон

в 10:53, , рубрики: data mining, IoT, watts battery, Интернет вещей, хакатон, Хакатоны, экология, Энергия и элементы питания

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

Зачем хардверному стартапу софтовый хакатон - 1Интерфейс приложения, управляющего модулями Watts Battery от финалистов трека, «Мокрые волосы»

Компания

Наша компания Watts Battery создаёт модульные портативные электростанции. Продукт – портативная электростанция 46x36x11 см, способная давать от 1,5 до 15 киловатт в час. Четыре таких модуля могут обеспечивать энергопотребление небольшого загородного дома на протяжении двух суток.

Хотя в прошлом году мы начали отгрузку серийных образцов, по всем параметрам Watts Battery – стартап. Компания основана в 2016-м и с этого же года – резидент Кластера энергоэффективных технологий «Сколково», сегодня у нас 15 сотрудников и огромный бэклог того, что мы хотели бы на каком-то этапе сделать, но прямо сейчас не до этого.

Туда входят и чисто софтовые задачи. Почему?

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

Самый простой вариант – вы можете заряжать батарейку от солнца днём, расходовать вечером, но ровно до того уровня, который необходим, чтобы в случае блэкаута, вы не остались без электричества. Так, вы никогда не окажетесь в ситуации, когда весь вечер питали вы освещение от батарейки (потому что дешевле), а ночью отключили электричество, и у вас разморозился холодильник.

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

Подготовка, данные, инфраструктура

В итоге мы взяли два трека: аналитика данных и система управления. Помимо наших было ещё семь треков от коллег.

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

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

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

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

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

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

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

Помимо этого, мы давали участникам доступ в Amazon AWS (так активно, что Amazon нам заблокировал один регион, будем разбираться, что с этим делать). Там можно развернуть инфраструктуру для интернета вещей и на базе даже простых темплейтов Amazon-а сделать за сутки полноценное решение. Но абсолютно все в итоге пошли своим путём, сделав по-максимуму всё самостоятельно. При этом кому-то удалось уложиться во временной лимит, кому-то нет. Одна команда, Nubble использовала Яндекс.облако, кто-то на своём хостинге поднял. Мы были готовы давать даже домены (у нас есть зарегистрированные), но они не пригодились.

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

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

Аналитика

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

Специфика: более сложный из двух треков. Промышленные данные имеют некоторые отличия от данных в замкнутых системах (например, цифрового маркетинга). Здесь нужно понимать физическую природу параметров, которые вы пытаетесь анализировать, смотреть на всё как на абстрактные числовые ряды – не получится. Например – распределение потребления электроэнергии в течении дня. Это ведь как ритуалы: с утра в будни включается электробритва, а по выходным – миксер. Затем суть самих аномалий. И не забываем, что Watts Battery предназначен для личного использования, так что у каждого клиента будут свои ритуалы, и одной универсальной моделью обойтись не получится. Находить известные отклонения в данных – это не задача даже, другое дело – создать систему, которая автономно ищет неразмеченные аномалии. Ведь аномалией может быть всё, что угодно, включая и коварный человеческий фактор. Например, у нас в тестовых данных был случай, когда система была пользователем принудительно переведена в режим питания от батареи. Без каких-либо причин, пользователи, бывает, делают так (оговорюсь, что этот пользователь тестирует модуль для нас и именно по этой причине имеет доступ к ручному управлению режимами, для остальные пользователей управление полностью автоматическое). Как легко предсказать, в такой ситуации батарея разряжается достаточно активно, и если нагрузка большая, то заряд закончится раньше, чем встанет солнце или появится другой источник энергии. В таких случаях мы ожидаем увидеть какое-то уведомление, что поведение системы отклонилось от штатного. Или человек ушёл, забыл выключить духовку. Система видит, что обычно в это время суток потребление 500 ватт, а сегодня – 3,5 тысячи – аномалия! Как Денис Мацуев в самолёте: «Я ничего не понимаю в авиадвигателях, но по пути туда мотор звучал по-другому».

Зачем хардверному стартапу софтовый хакатон - 2График предиктивной модели на opensource нейросети Yandex CatBoost

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

Почему невыполнимо на этом этапе: основная проблема датамайнинговых задач – недостаточно данных. Сегодня в мире функционируют несколько десятков устройств Watts Battery, но многие из них не подключены к сети, поэтому наши данные пока не слишком разнообразные. Самих аномалий мы с трудом наскребли две – и те имели место на опытных образцах, промышленные Watts Battery работают довольно стабильно. Если б у нас был внутренний machine learning-инженер, и мы бы знали – да, из этих данных можно выжать вот это, а мы хотим получить более крутое качество предсказания – это была бы одна история. Но до этого момента мы ничего с этими данными не делали. Кроме того, это требовало бы глубокого погружения участников в специфику работы нашего изделия, сутки-полтора на это недостаточно.

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

Что получили по итогам: победители трека смогли почистить данные (попутно нашли «особенности» вычисления некоторых параметров, которые мы раньше сами не замечали, так как не использовали часть данных для решения наших задач), выделить отклонения от ожидаемого поведения модулей Watts Battery, и настроить предиктивную модель которая в состоянии предсказывать потребление электроэнергии с большой степенью точности. Да, это лишь feasibility этап разработки промышленного решения, дальше понадобятся недели кропотливой технической работы, но даже этот прототип, созданный прямо в процессе хакатона, может лечь в основу реального промышленного решения, что редкость.

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

Зачем хардверному стартапу софтовый хакатон - 3График предиктивной модели на opensource нейросети Facebook Prophet

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

Управление

Задача: (приложение) управляющее сетью модулей Watts Battery, с личным кабинетом, хранением данных в облаке, мониторингом состояния.

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

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

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

Как решили: провели в рамках хакатона некое физибилити стади, можно ли вокруг нашего весьма специфичного продукта придумывать не просто фичи, но полноценные бизнес-модели. Причём, чтобы делали это люди, способные реализовать прототип, всё-таки тут – не хочу никого обидеть – не уровень программирования мигающего светодиода на Arduino (хотя и это можно делать с инновациями), здесь требуются довольно специфичные навыки: разработки бекэнд и фронтэнд систем, понимание принципов построения масштабируемых систем интернета вещей.

*Выступление победителей второго трека*

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

Главный вывод: существуют команды, готовые взять Watts Battery в качестве основы своей бизнес-модели, развивать её, стать партнёрами/компаньонами компании. Некоторые из них даже умеют выделять MVP бизнес-идеи и работать над ним в первую очередь, чего сегодня не хватает в индустрии повсеместно. Люди не понимают когда остановиться, когда нужно выдать на рынок решение, пусть раннее, но работающее. По факту же этап полировки решения часто не заканчивается, технически решение переходит грань разумной сложности, выходит на рынок перегруженное, уже непонятно какая там была изначально идея, какой таргетинг клиентов, какие заложены бизнес-модели. Как в анекдоте про Акунина, который написал ещё одну книгу, когда подписывал кому-то предыдущую. А здесь было сделано в чистом виде: вот график, вот счётчик, вот индикаторы, вот предсказание – всё, больше ничего не надо для запуска. С этим можно идти к инвестору и получать деньги на запуск бизнеса. Те, кто нашли этот баланс, и вышли из трека победителями.

Совет на будущее: на следующем хакатоне (мы планируем его в марте этого года), возможно, имеет смысл поэкспериментировать и с «железом». У нас своя аппаратная разработка (одно из преимуществ Watts), мы полностью контролируем производство и тестирование всего что делаем, но на проверку некоторых «железных» гипотез не хватает ресурсов. Очень может быть, что в сообществе системных и низкоуровневых программистов и аппаратных разработчиков есть те, кто нам с этим поможет и в будущем станет нашим партнёром по этому направлению.

Люди

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

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

В основном участники были молодыми, это не значит, что среди них не было сильных machine learning-инженеров и разработчиков. Большинство приходили командами, одиночек практически не было. Все мечтали победить, кто-то хотел найти работу в перспективе, примерно 20% её уже нашли, думаю, эта цифра будет расти.

Нам не хватило хардварных гиков, но надеемся компенсировать это на втором хакатоне.

Ход хакатона

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

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

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

Команда «21 (Эффект мокрых волос)» до последнего участвовала в обоих наших треках. Они хотели охватить разом всё: и машинное обучение, и разработку, и приложение, и сайт. Пока мы в последний момент не пригрозили им снятием, они верили, что всё успевают, хотя уже на втором чекпойнте было очевидно, что с главным – machine learning – существенного прогресса добиться не смогли: они в целом справились со вторым блоком, но предсказывать потребление электроэнергии были не готовы. В итоге когда мы определили минимальное задание для квалификации на первый, они всё же сделали выбор в пользу второго трека.

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

Во втором треке (управление) мы ожидали, что все за полдня всё сделают и придут просить усложнить задание. На практике едва успели доделать базовое задание. Работали на JS, Python-е, что отражает текущее состояние индустрии.

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

У третьей команды – FSociety, казалось, было решение, но в итоге они решили не показывать свою разработку, сказали, что они не считают его рабочим. Мы уважаем это и спорить не стали.

Победила команда «Стриптизёры из Баку», которая смогла себя остановить, не гнаться за «рюшечками», а сделать MVP, которое не стыдно показать и которое понятно, что можно дальше развивать и масштабировать. Мы им сразу сказали: что дополнительные возможности нас не слишком интересуют. Если они хотят регистрацию через QR-код, распознавание лиц, пусть сначала сделают графики в приложении, а потом берутся за факультативное.

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

Надеюсь, что всё получится, и ждём всех на второй хакатон в марте!

Автор: Михаил Дубинин

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js