Стартап с оценкой в $1 млн. Как не погибнуть в «долине смерти» и есть ли жизнь после 24 февраля?
В прошлой статье мы рассказали, как стартап по созданию искусственного интеллекта для предиктивной аналитики CS:GO-матчей прошел путь от идеи до MVP и оценки в миллион долларов. В этом посте вы узнаете, как рутина (и 24 февраля) чуть не похоронили нас.
Краткое саммари, если вы не читали прошлый пост:
- Мы — Слава и Дима, не первый год в предпринимательстве
- Один из знакомых инвесторов предложил стать “продюсерами” стартапа про CS:GO-аналитику, потому что в его развитии были проблемы
- Мы предложили не просто собирать аналитику, а делать это лучше других, и на основе этих данных обучить ИИ для прогнозирования результатов матчей CS:GO
- Осенью 2021 года мы получили MVP модели с точностью предсказаний 60% и оценку в $1 млн. Компанию по соглашению сторон покинул фаундер, забрав разработки своей оригинальной идеи (статистического сервиса), а мы стали фаундерами DataLouna
Рост по инерции на заряде после релиза MVP
Итак, осень 2021. У нас на руках первые деньги инвестора, MVP модели и понимание, что точность в 60% — хороший результат для начала, но нужно срочно начинать улучшать его. И это стало первым челленджем.
Разрабатывая MVP, мы форсировали некоторые события, потому что времени особо не было, а результат был нужен “уже вчера”. Мы не сравнивали алгоритмы и другие детали друг с другом, не думали об автоматизации, не покрывали код тестами и… В общем, классический стартаперский подход, для которого давно придуман и закреплен научный термин:
На дистанции в сотню матчей модель выдавала приемлемый средний результат, но дьявол кроется в деталях. Если рассматривать некоторые отдельные матчи, они могли обрабатываться очень странно, в них не было никакой логики.
Можно сравнить это с написанием статьи в текстовом редакторе, в который загрузили половину правил русского языка, из-за чего подчеркивается только половина ошибок. Да, в итоге текст получится читаемым, но проскакивают опечатки и ошибки, которые портят все впечатление.
Нам нужно было это исправить, работы предстояло много — и каждая, абсолютно каждая, деталь требовала кучу времени на тесты. Вот только некоторые вещи, которые мы фиксили всю осень и декабрь командой из двух программистов:
- Тестировали разные алгоритмы машинного обучения и выбирали, какой показывает лучший результат
- Разрабатывали, перерабатывали и дорабатывали саму структуру кода, который можно разбить на 4 блока: данные (записи матчей), ивенты (выделение из данных событий с самым большим импактом), машинное обучение, итоговый результат. Мы все время экспериментировали с процессами, чтобы понять, какой будет самым эффективным для каждого блока или подблока
- Например, на этом этапе мы начали валидировать данные. Если сначала мы закидывали в модель все данные, которые в теории могли работать, то теперь у нас было время разобрать цепочку разных событий от и до, чтобы понять, какие данные нужны, какие — нет, а какие считаются неправильно
- Пофиксили баги, в том числе те, из-за которых в модель уходили некорректные данные (при этом модель эти данные съедала и в некоторых ситуациях выдавала приемлемый результат). Приходилось тратить время на разборки с такими багами-фичами
- Поняли, что для каждого тира (уровня игры команд) требуется уникальная модель. То, что работает для топ-30 клубов мира, не будет также хорошо работать для команд рангом ниже
Параллельно этому мы приняли решение делать B2C-сервис (спойлер: посмотреть его в рабочем состоянии вы можете на DataLouna.ru). Хотя над созданием самого сайта работал отдельный программист, работы по бэкенду, связи модели с сервисом, автоматизации этих процессов и их тестирования все равно требовали внимания разработчиков модели.
Кроме фикса багов модели и разработки B2C-сервиса требовалось внедрять и новые фичи. Так, изначально мы использовали (фундаментально неправильный) подход “команда-матч” и перешли на “команда-карта”.
То есть программистам приходилось выполнять 2-3 функции вместо того, чтобы сфокусироваться на одной. Но несмотря на все эти сложности, в декабре выкатили новую версию модели с точностью 69% и все взяли новогодние каникулы (а мы улетели на Бали и решили зимовать и работать из Азии).
Первые проблемы и их решение
После возвращения разработчиков с отдыха, появились первые серьезные признаки раздолбайства.
На этапе разработки модели недостатка в мотивации не было — создание с нуля новой крутой штуки вдохновляло, и этого заряда хватило на пару месяцев рутины с фиксом багов и постепенным улучшением точности. Но после отдыха возвращение к работе проходило сложно.
Мы не знали, что делать и встали перед выбором: начать конфликтовать или посмотреть, что мы можем исправить. В итоге мы сделали всего понемножку.
До новогодних праздников мы решили премировать программистов за выполнение обычных рутинных задач, а не за создание чего-то прорывного — просто, чтобы сделать приятно. После отдыха стало понятно, что это было ошибкой — нельзя премировать людей за те задачи, которые они априори должны делать, и в итоге ребята подрасслабились (плюс надо понимать, что для программистов деньги не самый главный мотиватор).
Стартап — это работа с хаосом, наша задача как фаундеров — раскрыть потенциал людей. Для этого важно обсуждать их основные задачи и объяснять четко, что определенная задача (даже если это монотонная рутина верхом на обыденности) приведет к следующему конкретному результату.
Для того, чтобы выстроить систему и постоянно держать связь, не обойтись без Дискорда — в нем мы вели не только постоянные звонки с разработчиками, но и форсировали созвоны разработчиков друг с другом. Расписание созвонов и часть документации мы вели на том же Discord-сервере, но большая часть информации была распределена в Jira.
Также мы:
- Разделили свои роли: Дима стал другом, Слава — не стал. Классический кейс "хорошего и плохого полицейского". От друга нормально не воспринимается ни критика, ни похвала. При этом, если друга нет внутри, то делать работу становится эмоционально сложнее, не с кем откровенно поговорить. "Хороший и плохой полицейский" создают необходимый баланс
- Потратили много времени на создание системы: как правильно взаимодействовать с программистами так, чтобы наши задачи были понятны и выполнялись
- Поняли, что даже построенная система не гарантирует ее использование людьми. Нужно было приложить усилия для того, чтобы программисты и мы привыкли к ней
Чем ближе была весна, тем лучше становились процессы, наши результаты и атмосфера внутри команды. А потом наступило 24 февраля.
Жизнь после 24 февраля: потеряли инвестора, но не сдались
Первая проблема, с которой мы столкнулись после 24 февраля, это потеря инвестора. Человек, поверивший в нас на стадии MVP, перестал выходить на связь и мы потеряли финансирование. Как потом оказалось, инвестор взял весь свой капитал и просто покинул Россию.
Вторая проблема — психологическая напряженность и общая неопределенность (ведь в наших планах был выход на международные рынки, регистрация юрлица за границей, плюс мы начали процедуру регистрации патентов в США). Было сложно перестать следить за новостями и вернуться к работе.
Несколько дней все пробыли в трансе. Состояние полнейшей неопределенности и перегруз информационного поля не позволял даже думать о работе. Выходом стало осознание, что единственное, что от нас зависит и на что мы можем повлиять — это наш проект.
Поэтому мы стали доносить до команды, что как бы сложно не было, с помощью работы не только можно спасти эмоциональное состояние, но и обрести хотя бы иллюзию чувства стабильности. Это и стало светом в конце туннеля.
Весь март и апрель мы провели в новых тестах, новых задачах и разработке новых фичей.
Дедлайном по запуску B2C-сервиса мы поставили себе начало PGL Major Antwerp 2022 — турнира самой престижной серии в CS:GO. Он начинался 9 мая, и у нас было чуть больше двух месяцев на то, чтобы окончательно справиться с психологическим напряжением и внести последние изменения в модель.
Стоит ли говорить, что по классике самые важные изменения вносились в самый последний момент? За пару недель до релиза задачи не прекращались, их становилось все больше и больше, а разница во времени Европы с Бали только ухудшала наше самочувствие и мотивацию — программисты ложились в 4 утра по европейскому времени, а мы — в 9 утра по местному времени.
И после четырех часов сна день сурка начинался снова.
5 мая на тестировании мы понимаем, что винрейты сильно меняются на один и тот же матч — предварительно модель прогнозирует один результат, а после пика карт командами он сильно менялся — вплоть до диаметрально противоположного.
Было понятно, что это надо срочно фиксить, ведь обычные пользователи вполне могут ориентироваться и на предварительный прогноз.
В итоге, за 3 дня (и ночи) наши разработчики Виталик и Даня при помощи тренера-аналитика Эрика с нуля создали новую модель, предварительно прогнозирующую самый вероятный распик карт командами. Это бустануло наши предварительные прогнозы — количество сильных изменений винрейта уменьшилось с 70% до 20%. Амплитуда в оставшихся 20% случаев значительно уменьшилась, изменения стали не по 50 процентных пунктов, а около 5-10.
Продакшн: неоднозначные результаты с хэппи эндом
Во время мейджора мы зарелизились и стали отслеживать не только процент точности предсказаний, но и моделировать виртуальный банк: брать средний коэффициент букмекеров и считать, сколько в теории можно было бы заработать на каждом из матчей.
По ходу мейджора все было не так круто, как нам хотелось бы: время от времени модель выдавала странные (и неправильные) прогнозы, которые сильно били по мотивации.
А то, что при запуске мы не смогли подключить платежный шлюз и работали для пользователей бесплатно, с одной стороны давало некоторое облегчение, с другой — никак не приближало нас к самоокупаемости.
В итоге мейджор, состоящий из двух этапов, мы завершили с такой статистикой:
Но самым главным из 73 матчей стал самый последний — гранд-финал мейджора.
В гранд-финал мейджора вышли европейцы из FaZe Clan и состав NAVI с россиянами и украинцами.
Перед началом серии болельщики и букмекеры (особенно русскоязычные) достаточно уверенно прогнозировали победу NAVI. Команда уверенно громила всех соперников на предыдущем этапе и за 5 серий уступила только 2 карты, не проиграв при этом ни одного матча.
Наша модель дала совсем другой прогноз — вероятность победы NAVI только 27%. Представили наши лица?
Но именно FaZe в итоге и победили — на первой карте команды боролись вплоть до овертайма, но в итоге серия завершилась поражением NAVI со счетом 0:2.
И это предсказание дало нам новый заряд мотивации, тильт от потери инвестора и событий 24 февраля ушли — впереди много работы.
Мы поняли, что наша модель — действительно крутая разработка, в которую просто нужно влить много ресурсов и времени. График способности работать и мотивации нарисовал "ракету" вверх.
* * *
По традиции VC, если вы проскроллили текст поста в самый конец только для того, чтобы найти строчку "Подписывайтесь на мой телеграм-канал", могу вас только разочаровать.
Но можете подписаться на меня на VC, чтобы не пропустить следующие посты, где я продолжу историю DataLouna и более предметно раскрою некоторые нюансы работы над проектом.
Связаться со мной можно через личные сообщения на VC или [email protected]
Зверя нет сильней на свете, виртуспро вперед к победе!
В сервисе нет логики. Это все равно, что пытаться спрогнозировать как упадет монета или кто выиграет в карточном дураке. ИИ не может использовать "математическое ожидание" или прогнозировать события, которые не зависит от факторов в перспективе истории.
Ваш результат - совпадение. Конечно это можно подавать под соусом новой крутой технологии для лудоманов, но научной или математической основы нет.
Вы немного (ну прям сильно немного) неправы. Другое дело - что они берут в модель для обучения. Как я понимаю про спорт - обычно это Марковские цепи и расчёт вероятности выигрыша на маленьких отрезках времени при заданных параметрах. Какие параметры - было бы круто узнать, потому как количество гранат или патрон (или чего там ещё) - важная фигня, но не менее важно расположение на карте и, например, насколько конкретный человек «в настроении». Короч, не самая простая фигня. Ну и да, интересно: модель «смотрит» видео (вряд ли) или логи (скорее всего)? Если видео - интересно как авторы умудрились сделать потоковую обработку и передачу новых данных в модель. Это реально круто.
Вы абсолютно правы, я к сожалению не могу рассказать вам все подробности, но мы приоткроем тайну в следущий постах с аналитиками и разработчиками.
Если в двух словах, то есть экономика которая считают все (она в открытом доступе), а есть экономика, которую считают проф тренера в ручную и это диаметрально противоположные вещи.
По видео, скажу так, мы пока что этим не пользуемся, но это в планах. Называется «компьютерное зрение» и это будет одна из сотен фитчей в модели
Про “компьютерное зрение» - это, конечно, спасибо, что рассказали, но, как выше было мн скромно замечено, есть некоторая проблема «рассматривания» кадра моделью. А если там живой поток данных (а потоковое видео - именно такое), то выходит, что «смотреть» надо кадр за кадром. Если мое крайне скромное понимание моделей cv верно, то рендеринг занимает примерно 1 к 3: на 1 секунду видео требуется 3 секунды разбора., т.о. «живой просмотр моделью» драматически отстаёт от потока и в этом проблема.
По поводу тренеров - спасибо, ок.
Фактически, мы имеем дело с обучением с учителем, выходит. Я почему-то изначально решил, что это обучение с подкреплением, когда модель предиктит результат не напрямую, а как производную от предполагаемых действий игроков.
В общем, ждём разрабов и дээсеров, интересно, что вы там навертели.
да не, ничего невозможного в предсказании на основании прошлого, если правильные факторы учитываются. Предсказание спортивных или игровых - это совсем не угадывание как упадет монета. Тут другая проблема: выглядит как попытка играть против букмекера (ведь B2C). И если правда сеточки и модели работают, то тут начинается: через год букмекеры сделают то же самое, и все сведется снова к игре с отрицательной суммой и для пользователя datalouna. Плюс, если аудитория будет большая - можно пойти и поторговаться с букмекерами - где нам там сегодня руками подкрутить? Какая-то не очевидно бизнесмодель в несколько лет перспективы
Так выше же писал, эта модель только для выхода на самоокупаемость и чтобы выиграть время для разработки продуктов b2b.
Про буков, так у них все деньги и возможности мира, что то не подкрутили до сих пор.
На самом деле этому есть определённые объяснения, коэффициенты строятся из 3х параметров
1) оценка предматчевая аналитиков (это огромный штат)
2) ожидание пользователей
3) маржа бк (7-15%)
Буки зарабатывают при уравновешивании стаканов с обоих сторон и если заметили не бывает кэфов 2 на 2 например
Они физически не могут поставить кэф у нави например больше, чем у эндпоинт, потому что не позволит рискменеджмент. Но в целом выравнять кэфы могут. Тут ещё вопрос в live-ставках и live-данных их закупают у турнирных операторов за большие деньги. Как только мы до них доберёмся будет качественно новый скачок и в модели
"эта модель только для выхода на самоокупаемость и чтобы выиграть время для разработки продуктов b2b." - инвесторы бы сказали что это способ не "выиграть время", а проиграть время, осознанно выпуская не тот продукт, который планируешь.
А на чем будет основана лучшая аналитика в киберспорте если нет ничего, что это доказывает? Чем лучше работает b2c сервис, тем качественнее и интереснее будут b2b продукты.
И наоборот: а где доказательства что b2b продукты (B) на основе этой отличной технологии будут востребованы? Сделать другой продукт (A), чем нацелены, - это почти наверняка потом заново делать техническую сторону, и не иметь никаких новых доказательств того, что B будет продаваться. То есть я не стараюсь убедить, что это 100 пудов не сработает. И вообще команды в какой-то момент тоже покупают, а не продукт, который они делают. Но мне кажется все же это порочная история и потеря времени (и я сам как инженер грешу этим и полностью Вас понимаю и согласен, но и не согласен :)) ).
Я тоже вас понимаю, хотя иногда кажется, что вы просто язвите)
Ну попробуйте отследить логику и возможно мы где то сойдёмся
Стат сервисов миллион, придумать свою статистику можно, но кому и зачем она нужна? (Вопрос плюс-минус спорный).
Если же создать модель, которая предсказывает результаты матчей лучше бк (бк здесь взяты, как эталоны точности) в основе которой лежит собственная статистика.
Значит скорее всего
1) от неё действительно зависит исход матча (то есть она эффективнее)
2) она лучше описывает игру, а значит более применима для про сцены
Предсказываем лучше бк -> значит статистика уникальна -> данные эффективные -> эти данные нужны b2b
И опять же почему мы построили такую модель. Возьмите 10 аналитиков и 10 тренеров, каждый вам назовёт свои ивенты от которых зависит игра. Вы выделили те, которые больше всего повторялись или убедительнее всего звучали. Как их посчитать?)
Ивент может состоять из координаты, процента и числа. Что в итоге будет записано? Это к тому, почему нельзя просто создать стат сервис.
Модель позволяет тебе понять качественные у тебя данные или мусор. Здесь уже не я решаю или программист и аналитик, а модель говорит, что ок, а что нет.
Создание сервиса не заняло у нас космического количества времени, но позволило считать эффективность этих данных не только в точности, а в плюсе к каждой ставке. Отсюда уже вытекает эффективность не только в цифрах и словах, но и в деньгах.
😂😂😂
Если бы нам давали хотя бы рубль каждый раз когда мы это слышим. А вообще рекомендую глянуть фильм Moneyball или Человек, который изменил всё
зачем вам рубль, если вы можете увеличить банк за месяц? )
Дак большие суммы на разработчиков тратятся. Нужно обучать искусственный интеллект, собирать данные. А букмекеры любят резать лимиты, либо вводить баны на вывод по причине отсутствия верификации, которую сами не позволяют сделать
Ну фильм про то, как статистика помогает выбрать игроков, а не команды. В команде много переменных, от влажных ладошек до недосыпа каждого игрока. Но в целом проект не плохой. Надеюсь у вас все получится!
Все верно, ну так команда состоит из игроков, а переменных в киберспорте гораздо меньше, чем в офлайн спорте.
Спасибо больше!
Будет лучшая статистика по cs:gо на рынке
А какой был шанс, что НаВи проиграют Виталити и НиП в ЕСЛ на Мальте?
Тут уж лучше Ендпоинт вспомнить. Витьки еще куда ни шло…
Жаль, что мы все не можем написать, иначе вместо статьи уже будет том книги)
А зачем это прогнозирование нужно? Чтобы деньги зарабатывать на ставках?
ну да, представьте если вы примерно знаете чем закончится матч, можно поставить ставку и поднять денег)
Да, обычному юзеру можно в долгосроке с простой стратегией зарабатывать на ставках (как бы это пошло не звучало).
Но это только маленький шажок для нас, чтобы выйти на самоокупаемость и делать проекты для развития всей индустрии киберспорта.
Извините, пожалуйста, я не в теме, но из Вашего ответа понял, что киберспорт развивается на заработки от ставок на их же соревнования?
букмекеры самые жирные спонсоры в киберспорте
Киберспорт развивается на спонсорские контракты, в том числе и контракты с бк.
Мой ответ был про то, что предсказания победителя в матче это только маленькая часть того на что способна технология. Дальше планируется работа с б2б сегментом, а именно предоставление данных (статистики), поиск новых талантов и многое другое
Да, плюс трансляции, плюс реклама, мерч и т.д.
69% достаточно неплохо, но я так понимаю, что это далеко не конец? На какой стадии разработки он находится и что нужно, чтобы добиться той точности, которую вы хотите?
Все верно, это только начало.
Нужно разрабатывать больше уникальных статистических событий (это сложно с математической точки зрения, но скоро мы выкатим много интересного), а также переходить с подхода «команда - карта» на «игрок - раунд».
Подробней об этом расскажут уже в следущий статьях наши аналитики и программисты
про последний верно предсказанный матч - это конечно чистый пример когнитивного биаса. Модель легко могла ошибаться, все даже понимали, что лучше так не ставить, но вдруг фаворит проигрывает и, т.к. это самый важный матч, то "мы поняли, что наша модель — действительно крутая разработка". Ну то есть построить прямую по одной точке, а даже не по двум, но зато какой точке! :). Никак не хочу сказать хорошо или плохо работает Ваш продукт, но с нашими головами точно что-то не так
Команды NaVi и FaZe сыграли больше всего матчей на этом турнире из-за этого модель имела максимальное количество данных для обучения.
Поэтому такой результат говорит о правильном анализе сил оппонентов.
Что и дало нам эмоциональный буст
Есть еще такая штука, что все капперы/прогнозисты очень часто именно финал предсказывают неверно, так что финал - важная штука
Но вообще и 69% точности - результат
60% за 1 млн, ЛОЛ))))))))))
о чем вы?
А на хабре с более детальным погружением в модельки планируете запушить статью?
Очень постараемся, пока такой лютый загруз в отделе разработки, что вытаскивать их на интервью очень сложно.