Эволюция MLOps в Meta: Как устроена экосистема машинного обучения Facebook

The TWIML AI Podcast 1,7 тыс. 56 мин 8 мин 03.08.2022
Главное

Эволюция платформ машинного обучения в крупных технологических компаниях диктуется необходимостью масштабирования процессов и глубокой интеграции AI в ключевые продукты. В рамках специализированного веб-каста хост подкаста Сэм Шарп и руководитель направления AI-инфраструктуры в Meta Адитья Калро обсудили, как изменилась платформа FB Learner Flow за последние четыре года. Пройдя путь от монолитного инструмента для обучения моделей до комплексной экосистемы, инфраструктура компании превратилась в модульный комплекс, охватывающий весь жизненный цикл MLOps — от разметки данных до оптимизации под специализированное железо.

🕒 Откуда все начиналось: Эра FB Learner Flow 0:00

В 2018 году Сэм Шарп впервые связался с Адитьей Калро. На тот момент Адитья работал старшим менеджером по инженерии программного обеспечения в Meta, отвечая за AI-инфраструктуру. Сэм изучал опыт передовых ИТ-гигантов для своей книги «The Definitive Guide to Machine Learning Platforms». В то время платформа FB Learner Flow существовала уже пару лет, ею управляла небольшая команда инженеров. Она обеспечивала базовые сценарии: персонализацию новостной ленты Facebook и фильтрацию нежелательного контента.

Философия FB Learner Flow строилась на базовых принципах переиспользуемости и компонуемости. Платформа представляла собой движок для исполнения рабочих процессов (workflows), задаваемых через API. Процессы состояли из операторов, которыми могли выступать как кастомные бинарные файлы, так и другие вложенные процессы. Это позволяло, например, создавать обобщенный поиск гиперпараметров поверх любого тренировочного процесса.

Второй важной вехой было удобство инструментов управления экспериментами, что, по мнению Адитьи, являлось самой сложной частью работы. Команда сфокусировалась на консистентности экспериментов, чтобы исключить влияние случайных системных факторов на результаты. Были созданы UI и CLI для поиска, сравнения и тегирования тестов. Метрики (такие как AUC-кривые) стали объектами первого класса, что позволило даже инженерам интерфейсов, не искушенным в ML, запускать процессы и использовать результаты.

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

⚙️ Эволюция экосистемы: От обучения к полному циклу MLOps 10:13

За четыре года платформа претерпела масштабные изменения. Изначально инженеры были сфокусированы преимущественно на обучении моделей, однако вскоре возникла необходимость в развитии распределенного обучения из-за взрывного роста парка GPU в Facebook. Как утверждает Адитья, если раньше компания полагалась в основном на сторонние графические процессоры, то сегодня Meta разрабатывает специализированное железо собственной архитектуры под задачи искусственного интеллекта.

Важнейшим вектором развития стала работа с данными и признаками (features). Ранее инженерия фичей полностью лежала на продуктовых командах, у платформы не было для этого инструментов. В ответ на этот вызов команда инфраструктуры разработала два раздельных решения:

Кроме того, в экосистему были интегрированы платформа разметки данных AI Data, платформа быстрых данных для распределенного обучения, а также сервисы инференса. Новая платформа инференса позволила динамически подтягивать фичи из Feature Store, избавляя от необходимости передавать абсолютно все признаки внутри присылаемого примера. Для связывания всех этих разрозненных компонентов инженеры создали сквозной высокоуровневый слой абстракции для MLOps.

🏷️ Автоматизация разметки данных и контроль качества 20:00

Эффективная разметка огромных массивов данных стала критически важной задачей для Meta. Платформа поддерживает два направления разметки: полностью автоматическое и ручное. Автоматическая разметка применяется в основном в сценариях персонализации. По словам Адитьи, это работает через фиксацию пользовательских взаимодействий: система сопоставляет факт показа истории пользователю с последующим событием (например, кликом или его отсутствием) внутри заданного временного окна.

Для ручной разметки, где задействован распределенный по всему миру штат асессоров, была выстроена сложная система контроля качества:

Сами интерфейсы разметки сделаны плагиноемкими. Например, команда честности и безопасности (Integrity team), которая является ключевым потребителем этих инструментов для модерации хейтспича, создала свои модули. Для задач компьютерного зрения были разработаны плагины, позволяющие асессорам рисовать ограничивающие рамки (bounding boxes) прямо поверх изображений.

📊 Стандартизация форматов и борьба с монолитами 17:33

Одной из главных ошибок при проектировании первой версии FB Learner Flow Адитья называет ее монолитную архитектуру. Впоследствии систему пришлось разделить на независимые компоненты, изолировав даже пользовательский интерфейс (UI). Калро убежден, что система обязана быть модульной, а интерфейсы взаимодействия (API) и протоколы передачи данных между компонентами должны быть строго специфицированы.

Вторым серьезным вызовом стала стандартизация форматов данных внутри компании. Адитья упоминает, что его коллеги из других IT-гигантов внедряли стандарты с самого начала, что значительно облегчало им жизнь. В Meta этот процесс шел сложнее из-за масштабов организации. Для задач персонализации за основу был взят формат DWRF — табличный формат, который инженеры Meta слегка модифицировали под свои нужды. Основная сложность заключалась в адаптации формата под разреженные данные (sparse data), которых в избытке в рекламе и новостной ленте.

Процесс согласования стандартов требовал огромных усилий. Для координации использовались дизайн-документы, масштабные встречи и внутренняя корпоративная сеть Workplace (аналог Facebook для сотрудников). Полностью единого формата «правящего всеми» в компании нет и сейчас. Однако инженерам удалось сократить хаос до 4–5 популярных фреймворков, которые жестко задают форматы данных для своих сценариев и покрывают основную массу задач компании.

🛡️ Безопасность, DevSecOps и отслеживание связей (Lineage) 13:18

Развитие платформы привело команду к осознанию важного тезиса: разработку систем машинного обучения необходимо приравнивать к классической разработке программного обеспечения. Процессы сборки, релиза и переобучения моделей требуют жесткого контроля. В Meta внедрили методологию DevSecOps, активно сотрудничая со внутренней командой безопасности. Это помогло устранить уязвимости в инфраструктуре, настроить изоляцию данных и разграничить доступ: например, гарантировать, что данные, предназначенные строго для одной модели, не будут доступны другим.

Однако самым сложным элементом, который изначально не закладывался в архитектуру, оказалось отслеживание происхождения данных и моделей — lineage. Необходимость в нем возникла, когда интерпретация данных в компании начала меняться. По словам Адитьи, если в продакшене обнаруживалась ошибка в фиче, инженерам требовалось мгновенно отследить всю цепочку зависимостей, найти каждую модель, использовавшую эту фичу, и отправить ее на переобучение.

Для решения этой проблемы Meta задействовала свою проверенную инфраструктуру:

🔬 Исследования против Продакшна: Разница в философиях 32:00

Платформа машинного обучения Meta вынуждена одновременно поддерживать два принципиально разных лагеря: исследовательское подразделение (Facebook AI Research) и продуктовые команды (например, реклама или лента новостей). Адитья объясняет, что ключевое различие между ними кроется в скорости итераций и требованиях к стабильности.

Исследователи работают значительно быстрее, их процессы носят хаотичный и поисковый характер. Специально для них поверх FB Learner Flow был развернут интерфейс, имитирующий привычную для ученых среду Slurm. При этом требования к аптайму у исследователей существенно ниже. По словам гостя, если в процессе распределенного обучения исследовательской модели падает одна из машин, ученые могут безболезненно перезапустить процесс с контрольной точки (чекпоинта).

В продакшн-системах логика совершенно иная:

🚀 Развертывание, версионирование и аппаратная оптимизация 34:11

Для предотвращения выкатки некачественных моделей в продакшн на платформе реализована строгая система валидации и версионирования. Платформа инференса поддерживает одновременную работу нескольких версий одной модели, а запросы направляются с помощью динамического ключевого слова latest. Перед полным релизом применяется режим теневого трафика (shadow mode), когда новая модель параллельно обрабатывает реальные запросы, но ее ответы не отдаются пользователю, а лишь сравниваются с результатами текущей модели. Полный перевод трафика на новую модель происходит плавно и контролируется фреймворком Quick Experimentation (QE), который глубоко укоренен в культуре Meta.

Исторически инфраструктура Meta развивалась без использования контейнеров. Платформа до сих пор во многом полагается на хост-ОС, однако сейчас компания активно мигрирует на собственное внутреннее решение для контейнеризации, которое духовно очень близко к Kubernetes. Адитья советует любым компаниям, создающим ML-платформы с нуля, сразу начинать с контейнеров, поскольку это значительно упрощает дистрибуцию софта, безопасность и масштабирование.

В вопросах выбора между собственной разработкой и open-source Адитья рекомендует всегда отдавать приоритет открытому ПО, если оно позволяет решить задачу. Именно так в экосистему Meta вошел PyTorch: компания интегрировала его в виде отдельного оператора, помогая проекту расти. В данный момент Meta даже пытается заменить свои внутренние высокооптимизированные реализации случайных лесов (random forests) и деревьев решений на открытые альтернативы, поскольку перформанс open-source решений наконец догнал внутренние разработки.

Финальным этапом жизненного цикла модели является ее аппаратная оптимизация. Совместно со специализированной командой AI Software Hardware Co-design инженеры создают компиляторы под конкретные устройства — смартфоны, гарнитуры Oculus или внутренние GPU. Оптимизация встроена прямо в рабочие процессы: команда Oculus может добавить в свой воркфлоу кастомный оператор оптимизации. Это позволяет проводить не только поиск гиперпараметров, но и автоматический поиск оптимальной архитектуры нейросети (architecture sweep) под конкретный чип.

💬 Цитаты

«Мы закешировали результаты работы каждого из операторов... Это заложило основу для оптимизации всех экспериментов.»

Адитья Калро 09:21

«Разрушайте свои платформы как можно раньше. Самый простой способ сделать это для нас — объединить инженеров инфраструктуры с ML-инженерами продуктовых команд.»

Адитья Калро 18:28
👥 Спикеры
📚 Упомянутые книги
🔗 Упомянутые сайты и проекты
📖 Термины
MLOps
Набор практик, направленных на надежное и эффективное развертывание и поддержку моделей машинного обучения в продакшене.
Feature Store
Централизованный репозиторий для хранения, документирования и переиспользования признаков (фичей) в машинном обучении.
Lineage
Процесс отслеживания жизненного цикла данных и моделей, позволяющий понять, на каких именно данных обучалась конкретная модель.
Shadow mode
Режим тестирования, при котором новая модель получает реальный продакшн-трафик, но ее ответы не возвращаются пользователям, а используются для анализа.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Meta FB Learner Flow MLOps Feature Store PyTorch