Привет! Я Олег Бугримов, руковожу командой разработки ML-платформы в Авито. В статье расскажу, почему мы решили делать ML-платформу и какие инструменты у нас уже есть. Материал будет полезен ML-инженерам и техлидам, которые хотят сократить время на рутину, обеспечить команду единым набором инструментов, а также повысить качество и скорость разработки ML‑решений.

Содержание:
Цели создания ML-платформы
Мы применяем ML-решения в разных целях, например, для качественного ранжирования объявлений, подготовки автоописаний и многих других. Разработкой занимаются разные команды внутри себя, поэтому такие инструменты большинство сотрудников не видит. Мы решили это исправить и создать отдельную платформу.
ML-платформа — это место, в котором находятся все инструменты для обработки данных, а также обучения и тестрования моделей. Такое решение помогает достичь сразу нескольких целей.
Сэкономить ресурсы. В разработке ML-решений на создание и обучение моделей в среднем уходит от 5 до 20% времени. Остальное время команды занимаются сопутствующими задачами, например, работают с инфраструктурой, CI/CD, мониторят и разворачивают модели. Нам захотелось сократить время на эту работу.

Обеспечить команды готовыми инструментами, чтобы сотрудники фокусировались на своих задачах. Многие команды разрабатывали инструменты самостоятельно, поэтому иногда решения дублировались. Чтобы избежать повторений, мы создали единую платформу и так сэкономили сотрудникам время и силы. Теперь не надо выдумывать инструмент, а можно взять готовое решение.
Сделать ML-инструменты доступными для всех независимо от области работы и уровня квалификации. ML-инструментами пользуются дата-сайентисты, ML-инженеры и аналитики. При этом у каждой категории свои запросы к модели.
в DS работают с данными, поэтому важно, чтобы они были консистентными: информация, на которой модель обучается, должна совпадать с реальными данными в работе;
ML-инженерам нужны инструменты для интеграции модели в прод, мониторинги, алерты;
аналитикам периодически нужны инструменты, притом такие, чтобы работать с LLM без глубокого погружения в инфраструктуру.
Инструментами на нашей платформе могут пользоваться сотрудники любого отдела, поэтому порог входа довольно низкий. Бонусом мы сокращаем рутинные операции для более продвинутых пользователей и так экономим время на разработке.
Мы разделили инструменты на три категории, дальше расскажу про каждую.
Инструменты для работы с данными
Feature store — это хранилище, которое позволяет создавать, хранить, находить и использовать фичи. С его помощью мы культивируем переиспользование фичей, что значительно экономит время на разработке. Хранилище обеспечивает консистентность данных и поддерживает онлайн- и офлайн-сёрвинг.

Фичастор состоит из двух компонентов — горячего и холодного. Под капотом горячей части стоит Redis, который обеспечивает быстрое время ответов, поэтому его применяют для срочных задач, где важна скорость. Но есть проблема — Redis тяжело расширять по месту.
Холодный компонент построен на Trino — место практически не ограничено, но время ответа довольно долгое. Поэтому холодный фичастор используем для обработки больших данных в офлайне, когда можно и подождать.
Датасет-коллектор — это инструмент для разметки данных. На рынке есть подобные решения, но так как мы не всегда можем использовать сторонние сервисы для разметки реальных данных — разработали собственное решение.
Разметку датасетов выполняют люди и LLM. При этом возможна перекрёстная проверка: люди проверяют машину, а LLM — людей. Так мы минимизируем и человеческий фактор, и погрешности искусственного интеллекта. В результате получаем достаточно качественную разметку датасетов.

Инструменты для создания и эксплуатации ML
Сейчас у нас в Авито есть пять инструментов для создания и эксплуатации ML. Расскажу про каждый из них.
ML-джобы позволяют запускать модели в проде и использовать их. Включают три типа джобов:
ML Job — это Python-код, который можно настроить на выполнение по расписанию, подключить к событию или настроить на работу в real-time режиме. Например, если случилось событие: «Обновление объявления» и нам нужно, чтобы модель сразу его отработала.
SQL Job — возможность добавлять данные в фичастор без погружения в инфраструктуру и логику. Специалист пишет SQL-запрос в Data Lake, а результаты работы этого запроса помещаются в фичастор. Писать обвязку на Python не нужно, всё происходит внутри платформы автоматически.
NoCode Job — это возможность запустить готовую модель и настроить её выполнение по расписанию. Человеку также не нужно писать код — достаточно указать название модели через интерфейс.
Aviflow используется для проведения экспериментов. Это возможность проверить гипотезу в облаке. Обычно эксперименты запускают локально через Jupyter notebook. Но для некоторых задач нужно много ресурсов или времени, и тогда их удобнее запустить в облаке с помощью интерфейса Aviflow.
Также на базе aviflow можно строить сложные пайплайны для работы с данными. Для этого нужно сделать или выбрать готовые «кубики», объединить их и получить конструкцию любой степени сложности
«Кубики» — это элементы логики или части кода, которые могут жить независимо. При этом каждый из них полностью раскрывает потенциал в совместной работе с другими кубиками. Это элементы «конструктора», из которых инженер составляет своё приложение.
Кубики могут быть написаны разными инженерами, и главная задача — выбрать подходящие, выстроить из них нужную конструкцию и получить работающую логику, которая будет выполнять сложную задачу для бизнеса.

Реестр для хранения моделей — это хранилище моделей. Пока на начальном этапе разработки. В нём уже лежат рабочие модели и неоконченные разработки. Если пользователю нужна LLM или MLM, он может использовать готовую модель или взять за основу чужой начатый продукт и доработать его для себя. Результат можно сохранить в реестре для себя и коллег.
Auto ML — это SDK для подбора бейзлайна.
SDK (Software Development Kit) — набор инструментов и библиотек, которые помогают создавать, настраивать и использовать базовые модели (бейзлайны) для машинного обучения.
Вы загружаете в библиотеку свой датасет, дальше она подбирает необходимый бейзлайн и предоставляет отчёт, из которого можно выбрать, что больше всего подходит для дальнейшей работы.

Aqueduct — универсальное решение для оптимизации использования железа, которое мы применяем во всех ML-проектах. С его помощью экономим около 30% ресурсов.
Aqueduct очень похож на ML-пайплайны, но работает по-другому: пайплайн строят снаружи модели, а Aqueduct вклинивается в процесс и разбивает вычисления на этапы, выделяет для каждого из них оптимальные ресурсы.
Решение получилось настолько универсальным, что мы выложили его на Github.
Внутренняя DS-платформа: item2param
Это сложная модель, которая предсказывает параметры объявления по его описанию. Мы сделали её в виде платформы, потому что её используют во многих сферах. Например, модель помогает бороться с возможным фродом или подсказывает подходящую категорию, когда пользователь Авито создаёт объявление и вводит заголовок. Так снижается количество отклонённых объявлений из-за ошибки выбора.

В основе — языковая модель BERT с дополнительными модулями для решения разных задач.

Пользователям item2param необязательно обладать квалификацией, чтобы добавлять новые модели для категорий. Они могут делать это самостоятельно по инструкции. Чтобы добавить новую категорию, контент-менеджер размечает новые данные, а система фиксирует изменения и сама обучает модель через Airflow. Дата-сайентист проверяет качество модели перед запуском, чтобы не допустить ошибок. Так мы добавили уже сотни моделей. Мы уже рассказывали об этой платформе в другой статье.
Вместо выводов
Создали ML-платформу, чтобы сэкономить ресурсы и сделать ML-инструменты доступными для сотрудников разных сфер и квалификации.
Разработали и добавили инструменты для работы с данными: Фичасторадж для хранения фичей и Датасет-коллектор для разметки данных.
Также добавили инструменты для создания и эксплуатации моделей: ML-джобы, Aviflow, реестр моделей, Auto ML и Aqueduct.
Создали сложную модель item2param, которая по описанию предсказывает параметры объявления.
Если хотите узнать больше про DS и ML — приходите в наш телеграм-канал «Доска AI-объявлений». Пишем про ИИ, постим вакансии и анонсируем классные мероприятия.
А если хотите вместе с нами адаптироваться в мире стремительно развивающихся технологий — присоединяйтесь к командам. Свежие вакансии есть на нашем карьерном сайте.