TGViewer
partially unsupervised partially unsupervised @partially_unsupervised · 10.4K subscribers
Post #144 6.05K
Наткнулся на отличную статью в блоге Uber о том, как они переносили оценку времени поездки на DL пайплайн, и меня захлестнуло ностальгией.

Примерно пять лет назад я работал в компании Juno - израильском райдшеринге, который оперировался в Нью-Йорке, а разрабатывался в Минске 🤯 (сейчас остатками компании владеет Lyft). И там мы, неопытные машинлернеры, делали в т.ч. робкие попытки затащить ML для той же задачи получения ETA.

Вообще, самый простой способ получить ответ на вопрос "сколько машина будет ехать из точки А в точку B" - спросить API какого-нибудь провайдера карт, например, Google, Яндекс или TomTom. Но это решение 1) быстро становится дорогим, 2) не учитывает паттерны именно в твоих поездках (например, опытные таксисты в среднем могут добираться до точки назначения быстрее среднего водителя). Следующий шаг эволюции - взять какой-нибудь open source движок типа Valhalla или OSRM и допилить его под свои нужды, например, прикрутив туда свой движок пробок. Это уменьшает счета от гугла, но все еще не делает предсказание очень точным.

Соответственно, ML решение должно уточнять предсказание вышеописанного сервиса. Мы придумали много handcrafted фичей, обучили какой-то градиентный бустинг, оффлайн метрики были хорошими - примерно на уровне данных из Google. Но вот катить в прод это было сложно по ряду причин, как технических, так и не очень. Из технических упомяну только сложность реализации всех этих фичей (включая всякие исторические агрегаты) в рантайме - в те времена простые пацаны еще не знали таких слов, как feature store.

И тогда у нас родилась безумная идея - предсказывать ETA end2end довольно простой сетью, без всяких сложных фичей и маршрутов из Valhalla. География Нью-Йорка очень простая, и, как оказалось, с датасетом в миллионы поездкок можно получить хорошую модель, используя только геокоординаты и фичи времени для учета сезонности. Впрочем, в прод это так и не доехало - приоритеты сменились. Так я впервые своими глазами увидел, как очень прямолинейный deep learning go brrr бьет куда более сложные решения.

Кстати, самый первый бейзлайн - довольно рабочий! - в этой задаче выглядел примерно так:

def get_eta(coords_from, coords_to):
if is_manhattan(coords_from) and is_manhattan(coords_to):
return 4 # minutes
...
  • 🔥 54
  • 👍 16
  • 😁 10
  • 🤔 3
More from @partially_unsupervised
  1. Sep 21, 2026Jev, про который говорят на каждом углу - это может и не революция технически, но чертовск…
  2. Sep 17, 2026Минутка рекламы. Если вы ненавидите двигать квадратики в джире так же люто, как и я, но ещ…
  3. Sep 8, 2026Не люблю комментировать релизы, но Astra (и, внезапно, gemini 3.8) вернули забытое чувство…
  4. Aug 24, 2026Мой соавтор по первой книжке не удержался и недавно заспойлерил вторую. А если шило в мешк…
  5. Aug 9, 2026Когда я учился в школе, на каком-то этапе мои учителя математики и информатики объявили, ч…
  6. Jul 28, 2026Четыре недели плотно работал над нечетко поставленной задачей на грани агентов и informati…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →