Как оно работало раньше.
Как вы знаете, у нас было два основных движка персонализаций:
- Тяжелый ML движок - основная рабочая лошадка
- Статистический движок - поддерживающий, если что-то идет не так
В итоге был стандартный выбор между "дороже и лучше", и "дешевле и хуже". А учитывая, что обучение ML движка было более ресурсо-затратно, то и обучиться ему было тяжелее в ситуациях, когда данных много, но конверсий мало. Или если данных было совсем мало. В общем все те случаи, для которых и был создан поддерживающий простой стат движок.
Соответственно перед нами стояла задача. Сделать новый движок:
- Сильно дешевле в обучении и вызове
- Сильно лучше по качеству
- Куда более "неприхотливым"
Получить все и не пожертвовать ничем.
#Новый движок персонализаций
По итогу, мы смогли написать отдельный легковесный ML движок персонализации, построенных на совсем других принципах. Дошло до того, что мы отказались от любых базовых ML фреймворков - потому что дошли до момента, когда переписать половину стандартного ML фраемворка уже не поможет. Новый движок был написан полностью с нуля, включая весь процесс обучения и вызова модели (везде сильный нестандарт происходящего).
Получилось и сильно улучшить среднее качество работы и удешевить тренировку-вызов и при этом сделать "ML-УАЗик", куда менее зависимый от специфики данных того или иного проекта.
Так же новый движок дал нам новый фундамент для последующих улучшений и добавления возможностей, особенно учитывая насколько низкоуровневым стало все происходящее и что мало чем ограничены.
Первые тесты нового движка показали отличные результаты по метрикам относительно старых движков. На данный момент мы пустили на новый движок около 25% тренировок моделей в рамках продолжающегося внутреннего A/B теста и, вероятно, до конца июля почти все тренировки будут уже на новом движке.
Оригинал статьи опубликован на t.me
