Как Spotify масштабирует машинное обучение: архитектура и подходы 2:12
Масштабирование технологий машинного обучения (ML) в компании с 300 миллионами пользователей требует не только мощных алгоритмов, но и создания надежной внутренней инфраструктуры. Инженеры Spotify Джош и Муса Абдул-Хамид рассказали о том, как компания трансформировала свой подход к ML с 2017 года, превратив разрозненные инструменты в единую масштабируемую платформу, которая позволяет командам сосредоточиться на создании моделей, а не на поддержке инфраструктуры.
🛠 Проблема «технического долга» инженеров 2:25
До создания централизованной платформы ML-инженеры в Spotify тратили более 50% своего времени на борьбу с техническими проблемами: управлением индексами, обслуживанием баз данных и устранением «багов» в бэкенде. Около 25% времени уходило на оценку производительности моделей, и лишь менее 25% — непосредственно на улучшение продукта и разработку алгоритмов.
Такая ситуация приводила к потере ценных кадров, так как эксперты по математике и статистике фактически превращались в специалистов по обслуживанию данных. По словам спикеров, компании даже пришлось повысить требования к найму, требуя от ML-специалистов навыков бэкенд-разработки, что было неэффективно.
🚀 Основные компоненты ML-платформы Spotify 8:43
Для решения этих проблем компания выделила команду, сфокусированную на инфраструктуре ML. Платформа Spotify сегодня объединяет несколько ключевых инструментов:
- Jukebox: Экосистема библиотек для управления признаками (feature store), позволяющая повторно использовать компоненты при обучении и обслуживании моделей.
- Spotify Kubeflow (SKF): Платформа на базе Kubeflow для создания, итерации и развертывания ML-конвейеров (pipelines), которая автоматизирует масштабирование ресурсов.
- Salem: Платформа для обслуживания моделей в реальном времени. Она автоматизирует создание бэкенд-сервисов: достаточно передать путь к модели в Google Cloud Storage (GCS), и система сама развернет API.
- ML Home: Централизованный интерфейс, заменяющий разрозненные электронные таблицы. Здесь команды хранят информацию о проектах и выбирают лучшие модели.
- Clio: Набор библиотек для обработки медиа, например, для функции «sing-along» (динамическое разделение вокала в треке).
🧠 Jukebox: как работает управление признаками 14:48
Jukebox служит «единым источником истины» для всех признаков (features) в Spotify. Это значительно упрощает жизнь инженерам: они могут один раз зарегистрировать признаки, а затем использовать их как для обучения офлайн-моделей, так и для инференса (предсказаний) в реальном времени.
Процесс работы с признаками выглядит так:
- Создание и регистрация: Инженер создает признаки и регистрирует их в реестре.
- Сбор данных: Компонент-коллектор собирает признаки из источников (BigQuery, GCS) в формате TF Record.
- Хранение: Данные попадают в Bigtable, где каждая команда управляет своим кластером.
- Чтение: Библиотека на Java обеспечивает низкую задержку при чтении признаков из Bigtable в онлайн-сервисе.
💡 Уроки разработки платформы 18:30
Джош выделил три главных вывода из опыта построения ML-инфраструктуры в Spotify:
- Сотрудничество: Самые эффективные проекты рождались в связке с командами, которые реально используют ML в работе, что обеспечивало быструю обратную связь.
- Принцип «быть категоричными» (be opinionated): Попытка поддерживать все возможные инструменты ведет к хаосу. Spotify намеренно ограничивает выбор инструментов, чтобы сделать платформу более предсказуемой и уменьшить техдолг.
- Сложные компромиссы: Сначала платформа была создана исключительно для ML-инженеров и высоконагруженных задач, что ограничило доступ к ней для других ролей. Теперь приоритетом является расширение охвата, чтобы платформой могли пользоваться также дата-сайентисты.