Як ми створили власний сервіс заторів з використанням ШІ та без Google Maps — досвiд Uklon
У лютому, ще до початку повномасштабної війни, ми розмовляли з Володимиром Андрієнком, Head of Data & Research в Uklon. Тоді йшлося про те, як влаштовані послуги маркетплейсу поїздок, що у нього «під капотом». Сьогодні ми продовжуємо тему, до того ж є чудова нагода: нещодавно Uklon запропонував нові сервіси — Traffic Jam та ETA, створені на базі OSRM, що відкривають додаткові можливості не тільки для повсякденних перевезень, але й більш загально — для допомоги у захисті країни та майбутнього розвитку українських міст.
Коли твоя компанія конкурує з провідними світовими гравцями, завжди є певний набір технологій та послуг, які мають бути за замовчуванням для того, щоб зберегти технологічний паритет. У сегменті райдхейлінг, де працює Uklon, одним із найважливіших чинників бізнесу є можливість визначення з максимальною точністю часу прибуття авто. Не менш важливим виявляється і побудова оптимальних маршрутів поїздок — найвигідніших щодо витраченого часу, зручності, ціни, причому для обох учасників процесу — водія та пасажира. Для забезпечення таких можливостей Uklon потрібно було розробити цілий набір власних продуктів, які з одного боку не поступалися б зразкам міжнародних гравців, а з іншого — вкладалися у певний бюджет та дуже стислі терміни виконання. Ті, хто користується нашим сервісом, мабуть, вже відчули, що з цим завданням ми впоралися. Як? Зараз розповім.
Час — гроші, або Ані хвилини задарма
Що таке Uklon? Це IT-компанія, найвідомішим продуктом якої є онлайн-майданчик для організації мільйонів поїздок щомісяця. Фактично Uklon створив місце, де зустрічаються «продавець» (тобто водій чи драйвер у нашій внутрішній термінології) та «покупець» (він же пасажир чи райдер). Між ними на певних умовах укладаються «контракти» (так формально можна назвати звичайну поїздку) — тисячі щохвилини по всій країні. Одна з наших цілей у тому, щоб за одиницю часу здійснювалося якнайбільше успішних угод, а відсоток відмови та порушень, навпаки, був би мінімальним. До того ж ми не можемо ставати на чийсь бік, нам важливо враховувати інтереси як водіїв, так і пасажирів. А ці інтереси різні, бо драйвер хоче більше заробити на поїздці, а райдер — витратити на той самий маршрут якнайменше.
Проте для нас критично важливим показником є те, як швидко зустрінуться райдер та драйвер. Наші конкуренти добре вміють вираховувати час прибуття, тому кожна зайва хвилина очікування потенційно знижує кількість та лояльність клієнтів. Якщо водій вкаже, надто «оптимістичну» оцінку часу, то може запізнитися і замовлення зірветься. Це теж не є добре. Тобто час прибуття треба розраховувати з точністю до 1-2 хвилин з урахуванням багатьох чинників: довжини маршруту, заторів, аварії тощо.
Як було до впровадження ETA? Водій сам визначав часу прибуття: вказував, через приблизно скільки хвилин розраховує бути на місці. Тобто покладався на власну інтуїцію. Але, проаналізувавши великий масив даних про поїздки, ми з'ясували, що майже у половині випадків час брали з відчутним запасом. Водії таким чином хотіли підстрахуватися, щоб не зірвалося замовлення. Хтось приймав новий виклик, щойно закінчувався попередній маршрут, чи може хотів перекусити, допити каву… Очевидно, що середній час прибуття можна було помітно скоротити. Так народилася ідея створення модуля Estimated Time Arrival (ETA), який працює всередині нашого сервісу поїздок. Тепер система сама пропонує водієві час, за який він може доїхати до місця призначення, а також прокладає оптимальний маршрут.
Але ETA працює не сама по собі, а використовує дані інших наших розробок — Traffic Jam та Optimal Route.
Підписуйтеся на наші соцмережі
Open source та Big Data для оптимальних поїздок
Фактично основний сервіс тут це Traffic Jam, який дозволяє в режимі реального часу та з високою точністю відстежувати дорожню обстановку у місті. Для цього ми в режимі реального часу збираємо та аналізуємо дані з різних джерел, наприклад, від GPS-блоків водіїв, які використовують застосунок Uklon. Це все накладається на віртуальну мапу. Дані агрегуються, обробляються, уточнюються, а в результаті ми маємо змогу будувати оптимальні маршрути руху з урахуванням всіх перешкод.
Це давно уміють робити і великі світові гравці, що працюють в одній з нами ніші, але вони для побудови маршрутів використовують зазвичай Google Maps Platform. Це коштує шалених грошей. Нам як суто українській компанії просто не було сенсу так вкладатися. Тим паче є відкриті продукти. Тому Traffic Jam вирішили будувати на Open Source Routing Machine (OSRM).
OSRM існує вже понад 10 років то поширюється безкоштовною за ліцензією BSD. Як картографічний сервіс там використовують дані OpenStreetMap (OSM), також відкритого проєкту. За функціональністю та зовнішнім виглядом все це схоже на знайомий нам Google Maps — така сама динамічна маршрутизація, принцип click-to-drag, побудова альтернативних шляхів. Але, як і у будь-якому проєкті на базі open source, це призвело до доопрацювання, адаптації під час інтеграції модуля у нашу екосистему.
Також дані треба постійно оновлювати, бо дорожня обстановка у містах постійно змінюється (десь ремонт, об'їзд, аварія тощо). Ще один момент — точність визначення координат. «Публічний» GPS видає значну, аж до декількох десятків метрів, похибку. Тому отримані дані треба оперативно обробляти, для чого ми використовуємо технології Map matching. Приклад можна побачити на цьому малюнку:
Обробляти потрібно онлайн, тобто сервіс завжди залишається високонавантаженим. Скажімо, щосекунди, тільки у Києві, враховуючи кількість водіїв, обробляють приблизно 2 тис. координат. На добу це 88 млн, адже Traffic Jam працює по всій країні за винятком тимчасово непідконтрольних територій, тут не обійтися без технологій Big Data. При цьому вся обробка відбувається у хмарах, переважно AWS, за межами України.
Ще одне джерело інформації для Traffic Jam — ретроспективні дані, які постійно агрегуються та аналізуються. Це дозволяє, наприклад, оптимізувати відомі маршрути та виявляти «аномалії». Буває, що водій проїжджає певну ділянку помітно швидше за інших. Треба розібратись чому: чи він порушує правила (повертає в недозволеному місці, перевищує швидкість) або знає коротший маршрут, який ми чомусь пропустили. У вивченні даних допомагають технології Data Science, це алгоритми та моделі машинного навчання. Крім того, за дорожньою обстановкою постійно стежать дванадцять (станом на кінець липня) штатних картографів, які відстежують усі значні події на дорогах загального користування та оперативно вносять їх до бази даних. Приклад таких ручних коригувань — заява Кличко про перекриття Південного мосту чи відкриття Дарницького.
Тому завдяки Traffic Jam драйвер знає, як найшвидше дістатися місця замовлення. А райдер отримує оптимальну пропозицію щодо часу очікування та ціни. Наша пропозиція не повинна бути надто дорожчою, ніж у конкурентів, при цьому зовсім дешеві замовлення не заохочують водіїв, тож у кожному випадку необхідно дотримуватися балансу. За його знаходження відповідають розроблені нами моделі, які працюють на основі масивів великих даних, що постійно поповнюються.
З нуля у продуктив — за пів року
Проєкт ETA/Traffic Jam вийшов міжкомандним. У його реалізації брали участь наші фахівці з різних напрямів та відділів: розробники Core-функціоналу, бізнес-аналітики, експерти з Data Science та ML, команда R&D, DevOps, MapService та інші. Загалом залучили кілька десятків людей. Основний технологічний стек розробки включає .NET (routing), Python (core), Apache Kafka (Big Data), Kubernetes і Docker для роботи з контейнерами (Uklon використовує мікросервісну архітектуру під час розроблення продуктів). До речі, під час створення саме ETA-функціоналу вдалося обійтися без важких моделей. Просто умови проєкту цього не вимагали, вистачило лінійного регресійного аналізу. ЕТА вийшла простою, тому що основну роботу за неї зробив складний TrafficJam.
Загальний час реалізації проєкту становив менше пів року. Стартувавши у вересні 2021-го, вже у листопаді Traffic Jam запрацював у перших містах — Вінниці та Чернігові. На лютий 2022 року запланували повноцінний запуск і в інших частинах України, але війна завадила початковим планам. В результаті терміни трохи змінилися, і, скажімо, у Києві Traffic Jam запрацював 7 квітня, а далі почав швидко поширюватися в інших містах. Щодо ETA, то станом на середину літа він доступний в одинадцяти містах, а незабаром їхня кількість зросте до п'ятнадцяти.
На цьому етапі кожні кілька тижнів ми видаємо нові релізи. У планах розвитку продукту — контроль дотримання водієм ПДР (зараз система вже видає попередження про перевищення швидкості). Далі буде контроль і попередження заборонених поворотів (перетин подвійної суцільної тощо). Також незабаром з'являться нові переваги для пасажира, скажімо, можливість визначення оптимальної точки подання машини.
Майбутнє для розумних міст
Уже є перші результати впровадження Traffic Jam та ETA. Очікувано скоротився середній час подання авто, підвищилася лояльність користувачів, знизилася кількість відмов.
Ми дивимося і далі, бо проблема міського трафіку лише посилюватиметься. Водночас наші сервіси цілком можуть допомогти у справі динамічної оптимізації дорожнього руху та контролю автомобільних потоків, наприклад, у межах проєктів Smart City. Усі можливості та вигоди Traffic Jam та ETA ще належить виявити, у цих рішень надзвичайно великий потенціал для розвитку.