# Spotify: как внутренняя ML-платформа масштабирует алгоритмы рекомендаций

Источник: https://www.youtube.com/watch?v=yodpri4R6QY
Канал: The TWIML AI Podcast
Опубликовано: 07.09.2022

---

## Как Spotify масштабирует машинное обучение: архитектура и подходы
[[JUMP:2:12]]

Масштабирование технологий машинного обучения (ML) в компании с 300 миллионами пользователей требует не только мощных алгоритмов, но и создания надежной внутренней инфраструктуры. Инженеры Spotify Джош и Муса Абдул-Хамид рассказали о том, как компания трансформировала свой подход к ML с 2017 года, превратив разрозненные инструменты в единую масштабируемую платформу, которая позволяет командам сосредоточиться на создании моделей, а не на поддержке инфраструктуры.

## 🛠 Проблема «технического долга» инженеров
[[JUMP:2:25]]

До создания централизованной платформы ML-инженеры в Spotify тратили более 50% своего времени на борьбу с техническими проблемами: управлением индексами, обслуживанием баз данных и устранением «багов» в бэкенде. Около 25% времени уходило на оценку производительности моделей, и лишь менее 25% — непосредственно на улучшение продукта и разработку алгоритмов.

Такая ситуация приводила к потере ценных кадров, так как эксперты по математике и статистике фактически превращались в специалистов по обслуживанию данных. По словам спикеров, компании даже пришлось повысить требования к найму, требуя от ML-специалистов навыков бэкенд-разработки, что было неэффективно.

## 🚀 Основные компоненты ML-платформы Spotify
[[JUMP: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: как работает управление признаками
[[JUMP:14:48]]

Jukebox служит «единым источником истины» для всех признаков (features) в Spotify. Это значительно упрощает жизнь инженерам: они могут один раз зарегистрировать признаки, а затем использовать их как для обучения офлайн-моделей, так и для инференса (предсказаний) в реальном времени.

Процесс работы с признаками выглядит так:

1.  **Создание и регистрация**: Инженер создает признаки и регистрирует их в реестре.
2.  **Сбор данных**: Компонент-коллектор собирает признаки из источников (BigQuery, GCS) в формате TF Record.
3.  **Хранение**: Данные попадают в Bigtable, где каждая команда управляет своим кластером.
4.  **Чтение**: Библиотека на Java обеспечивает низкую задержку при чтении признаков из Bigtable в онлайн-сервисе.

## 💡 Уроки разработки платформы
[[JUMP:18:30]]

Джош выделил три главных вывода из опыта построения ML-инфраструктуры в Spotify:

* **Сотрудничество**: Самые эффективные проекты рождались в связке с командами, которые реально используют ML в работе, что обеспечивало быструю обратную связь.
* **Принцип «быть категоричными» (be opinionated)**: Попытка поддерживать все возможные инструменты ведет к хаосу. Spotify намеренно ограничивает выбор инструментов, чтобы сделать платформу более предсказуемой и уменьшить техдолг.
* **Сложные компромиссы**: Сначала платформа была создана исключительно для ML-инженеров и высоконагруженных задач, что ограничило доступ к ней для других ролей. Теперь приоритетом является расширение охвата, чтобы платформой могли пользоваться также дата-сайентисты.