{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Стартап с оценкой в $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.

Визуализация настроения в команде: смогли восстановиться после 24 февраля, но дедлайн и поток задач давили на работоспособность и мотивацию

Продакшн: неоднозначные результаты с хэппи эндом

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

Фан факт: на мейджоре мы стали ставить по прогнозам своей модели, но очень быстро поняли, что это тормозит процесс — поставленные деньги вынуждают смотреть матч и не отвлекаться от него. В ситуации, когда игровой день может идти по 10-12 часов, времени на работу просто не оставалось.

По ходу мейджора все было не так круто, как нам хотелось бы: время от времени модель выдавала странные (и неправильные) прогнозы, которые сильно били по мотивации.

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

В итоге мейджор, состоящий из двух этапов, мы завершили с такой статистикой:

Но самым главным из 73 матчей стал самый последний — гранд-финал мейджора.

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

В гранд-финал мейджора вышли европейцы из FaZe Clan и состав NAVI с россиянами и украинцами.

Перед началом серии болельщики и букмекеры (особенно русскоязычные) достаточно уверенно прогнозировали победу NAVI. Команда уверенно громила всех соперников на предыдущем этапе и за 5 серий уступила только 2 карты, не проиграв при этом ни одного матча.

Наша модель дала совсем другой прогноз — вероятность победы NAVI только 27%. Представили наши лица?

Но именно FaZe в итоге и победили — на первой карте команды боролись вплоть до овертайма, но в итоге серия завершилась поражением NAVI со счетом 0:2.

И это предсказание дало нам новый заряд мотивации, тильт от потери инвестора и событий 24 февраля ушли — впереди много работы.

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

* * *

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

Но можете подписаться на меня на VC, чтобы не пропустить следующие посты, где я продолжу историю DataLouna и более предметно раскрою некоторые нюансы работы над проектом.

Связаться со мной можно через личные сообщения на VC или [email protected]

0
36 комментариев
Написать комментарий...
Дмитрий Войнов

Зверя нет сильней на свете, виртуспро вперед к победе!

Ответить
Развернуть ветку
Сергей Плахин

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

Ответить
Развернуть ветку
Sergey Ilyin

Вы немного (ну прям сильно немного) неправы. Другое дело - что они берут в модель для обучения. Как я понимаю про спорт - обычно это Марковские цепи и расчёт вероятности выигрыша на маленьких отрезках времени при заданных параметрах. Какие параметры - было бы круто узнать, потому как количество гранат или патрон (или чего там ещё) - важная фигня, но не менее важно расположение на карте и, например, насколько конкретный человек «в настроении». Короч, не самая простая фигня. Ну и да, интересно: модель «смотрит» видео (вряд ли) или логи (скорее всего)? Если видео - интересно как авторы умудрились сделать потоковую обработку и передачу новых данных в модель. Это реально круто.

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

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

Если в двух словах, то есть экономика которая считают все (она в открытом доступе), а есть экономика, которую считают проф тренера в ручную и это диаметрально противоположные вещи.

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

Ответить
Развернуть ветку
Sergey Ilyin

Про “компьютерное зрение» - это, конечно, спасибо, что рассказали, но, как выше было мн скромно замечено, есть некоторая проблема «рассматривания» кадра моделью. А если там живой поток данных (а потоковое видео - именно такое), то выходит, что «смотреть» надо кадр за кадром. Если мое крайне скромное понимание моделей cv верно, то рендеринг занимает примерно 1 к 3: на 1 секунду видео требуется 3 секунды разбора., т.о. «живой просмотр моделью» драматически отстаёт от потока и в этом проблема.
По поводу тренеров - спасибо, ок.
Фактически, мы имеем дело с обучением с учителем, выходит. Я почему-то изначально решил, что это обучение с подкреплением, когда модель предиктит результат не напрямую, а как производную от предполагаемых действий игроков.
В общем, ждём разрабов и дээсеров, интересно, что вы там навертели.

Ответить
Развернуть ветку
Vasily Morzhakov

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

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

Так выше же писал, эта модель только для выхода на самоокупаемость и чтобы выиграть время для разработки продуктов b2b.
Про буков, так у них все деньги и возможности мира, что то не подкрутили до сих пор.
На самом деле этому есть определённые объяснения, коэффициенты строятся из 3х параметров
1) оценка предматчевая аналитиков (это огромный штат)
2) ожидание пользователей
3) маржа бк (7-15%)
Буки зарабатывают при уравновешивании стаканов с обоих сторон и если заметили не бывает кэфов 2 на 2 например

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

Ответить
Развернуть ветку
Vasily Morzhakov

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

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

А на чем будет основана лучшая аналитика в киберспорте если нет ничего, что это доказывает? Чем лучше работает b2c сервис, тем качественнее и интереснее будут b2b продукты.

Ответить
Развернуть ветку
Vasily Morzhakov

И наоборот: а где доказательства что b2b продукты (B) на основе этой отличной технологии будут востребованы? Сделать другой продукт (A), чем нацелены, - это почти наверняка потом заново делать техническую сторону, и не иметь никаких новых доказательств того, что B будет продаваться. То есть я не стараюсь убедить, что это 100 пудов не сработает. И вообще команды в какой-то момент тоже покупают, а не продукт, который они делают. Но мне кажется все же это порочная история и потеря времени (и я сам как инженер грешу этим и полностью Вас понимаю и согласен, но и не согласен :)) ).

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

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

Стат сервисов миллион, придумать свою статистику можно, но кому и зачем она нужна? (Вопрос плюс-минус спорный).

Если же создать модель, которая предсказывает результаты матчей лучше бк (бк здесь взяты, как эталоны точности) в основе которой лежит собственная статистика.
Значит скорее всего
1) от неё действительно зависит исход матча (то есть она эффективнее)
2) она лучше описывает игру, а значит более применима для про сцены

Предсказываем лучше бк -> значит статистика уникальна -> данные эффективные -> эти данные нужны b2b

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

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

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

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

😂😂😂
Если бы нам давали хотя бы рубль каждый раз когда мы это слышим. А вообще рекомендую глянуть фильм Moneyball или Человек, который изменил всё

Ответить
Развернуть ветку
Michael Rakutko

зачем вам рубль, если вы можете увеличить банк за месяц? )

Ответить
Развернуть ветку
Дара Шабаева

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

Ответить
Развернуть ветку
mr.biscuit.eater

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

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

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

Спасибо больше!

Ответить
Развернуть ветку
Эрик Акимов

Будет лучшая статистика по cs:gо на рынке

Ответить
Развернуть ветку
Oleg Peres

А какой был шанс, что НаВи проиграют Виталити и НиП в ЕСЛ на Мальте?

Ответить
Развернуть ветку
Oleg Chernykh

Тут уж лучше Ендпоинт вспомнить. Витьки еще куда ни шло…

Ответить
Развернуть ветку
Dmitry Veprentsev

Жаль, что мы все не можем написать, иначе вместо статьи уже будет том книги)

Ответить
Развернуть ветку
Nathan Zachary

А зачем это прогнозирование нужно? Чтобы деньги зарабатывать на ставках?

Ответить
Развернуть ветку
KermitFrog

ну да, представьте если вы примерно знаете чем закончится матч, можно поставить ставку и поднять денег)

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

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

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

Ответить
Развернуть ветку
Nathan Zachary

Извините, пожалуйста, я не в теме, но из Вашего ответа понял, что киберспорт развивается на заработки от ставок на их же соревнования?

Ответить
Развернуть ветку
Blez Paskal

букмекеры самые жирные спонсоры в киберспорте

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

Киберспорт развивается на спонсорские контракты, в том числе и контракты с бк.

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

Ответить
Развернуть ветку
Константин Приветов

Да, плюс трансляции, плюс реклама, мерч и т.д.

Ответить
Развернуть ветку
Svyatoslav Dovbakh

69% достаточно неплохо, но я так понимаю, что это далеко не конец? На какой стадии разработки он находится и что нужно, чтобы добиться той точности, которую вы хотите?

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

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

Подробней об этом расскажут уже в следущий статьях наши аналитики и программисты

Ответить
Развернуть ветку
Vasily Morzhakov

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

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

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

Что и дало нам эмоциональный буст

Ответить
Развернуть ветку
Дара Шабаева

Есть еще такая штука, что все капперы/прогнозисты очень часто именно финал предсказывают неверно, так что финал - важная штука
Но вообще и 69% точности - результат

Ответить
Развернуть ветку
Константин Приветов

60% за 1 млн, ЛОЛ))))))))))

Ответить
Развернуть ветку
Aleksandr Starcev

о чем вы?

Ответить
Развернуть ветку
Sergey Ilyin

А на хабре с более детальным погружением в модельки планируете запушить статью?

Ответить
Развернуть ветку
Ростислав Бондаренко
Автор

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

Ответить
Развернуть ветку
33 комментария
Раскрывать всегда