Понг Эксомбатчай | Главный инженер; Картик Ананта Падманабхан | Менеджер II, Инженерное дело

Миссия Pinterest — дать каждому вдохновение для создания жизни, которую он любит. Мы полагаемся на обширный набор продуктов на базе искусственного интеллекта, позволяющих подключить более 460 миллионов пользователей к сотням миллиардов пинов, что приводит к сотням миллионов выводов ML в секунду, сотням тысяч заданий по обучению ML в месяц всего за пару сотен ML. инженеры.

В 2021 году машинное обучение было изолировано в Pinterest с более чем 10 различными платформами машинного обучения, основанными на различных платформах глубокого обучения, версиях платформ и стандартной логике для связи с нашей платформой машинного обучения. Это было серьезным препятствием для инноваций в области машинного обучения в Pinterest, поскольку объем инженерных ресурсов, затрачиваемых каждой командой машинного обучения на поддержание собственного стека машинного обучения, был огромен, а обмен знаниями между командами был ограничен.

Чтобы решить эти проблемы, мы внедрили MLEnv — стандартизированный механизм машинного обучения в Pinterest, который сейчас используется в 95 % заданий ML в Pinterest (начиная с ‹5 % в 2021 году). С момента запуска нашей платформы мы имеем:

  • Наблюдается увеличение количества обучающих рабочих мест на 300 %, показатель Net Promoter Score (NPS) мирового класса (88) для MLEnv и рост NPS платформы ML на 43 %.
  • Сменили парадигму инноваций в области машинного обучения и обеспечили совокупный прирост вовлеченности Pinner на уровне среднего двузначного процента.

Разрозненное состояние разработки машинного обучения

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

Для инженеров ML это будет означать:

  • Необходимость поддерживать собственную среду, включая работу по обеспечению качества и удобства сопровождения кода, среду выполнения и конвейер CI/CD. Вопросы, на которые команда должна отвечать и постоянно поддерживать, включают в себя, как включить модульное/интеграционное тестирование, как обеспечить согласованность между средой обучения и обслуживания, какие лучшие практики кодирования следует применять и т. д.
  • Осуществление интеграции для использования инструментов и платформ, которые имеют решающее значение для скорости разработки. Тяжелые инженерные работы необходимы для обеспечения основных функций качества жизни. Например, проект необходимо интегрировать с MLFlow для отслеживания прогонов обучения, с внутренней платформой обучения и обслуживания машинного обучения Pinterest для обучения и обслуживания моделей в большом масштабе и т. д.
  • Включение расширенных возможностей машинного обучения для правильной разработки современного машинного обучения в большом масштабе. В последние годы в машинном обучении произошел взрыв инноваций, особенно с учетом популярности больших языковых моделей и генеративного искусственного интеллекта, и они намного сложнее, чем просто обучение модели на одном графическом процессоре и обслуживание на центральном процессоре. Командам приходится тратить непомерное количество времени и ресурсов на изобретение велосипедов для разных платформ, чтобы обеспечить распределенное обучение, повторно реализовать современные алгоритмы на TensorFlow, оптимизировать обслуживание и т. д.
  • Хуже всего то, что все делается изолированно. Каждая команда выполняет много повторяющейся работы по поддержанию своей собственной среды и реализации различных интеграций. Все усилия, затраченные на реализацию расширенных возможностей машинного обучения, могут быть применены только к отдельному проекту, поскольку каждый проект имеет уникальный стек машинного обучения.

Для инженеров платформ это будет означать:

  • Основные проблемы при создании и внедрении инструментов платформы, которые серьезно ограничивают ценность, которую команды платформы могут добавить инженерам ML. Разработчикам платформ очень сложно создавать хорошие стандартизированные инструменты, подходящие для различных стеков машинного обучения. Команде платформы также необходимо тесно сотрудничать со стеками ML один за другим, чтобы интегрировать предложения платформы ML — такие инструменты, как распределенная платформа обучения, автоматическая настройка гиперпараметров и т. д., занимали гораздо больше времени, чем необходимо, поскольку работу приходилось повторять для каждой команды. .
  • Необходимость накопить опыт как в TensorFlow, так и в PyTorch истощила ресурсы разработки платформы ML до предела. Для создания высокопроизводительной системы машинного обучения необходимо учитывать нюансы базовой структуры глубокого обучения. Команда платформы потратила в несколько раз больше усилий, чем необходимо, из-за необходимости поддерживать несколько фреймворков и версий глубокого обучения (PyTorch, TensorFlow и TensorFlow2).
  • Невозможность обновления программного и аппаратного обеспечения. Отдельные команды очень сильно отставали в обновлении программного обеспечения, связанного с машинным обучением, хотя каждое обновление приносит много новых функций. Вместо того, чтобы процесс обновления выполнялся инженерами платформы, большинство команд в конечном итоге использовали очень старую версию TensorFlow, CUDA и т. д. из-за того, насколько громоздким обычно является процесс обновления. Точно так же очень сложно проводить модернизацию оборудования, что ограничивает возможности Pinterest использовать преимущества новейших ускорителей NVIDIA. Для обновления оборудования обычно требуются месяцы сотрудничества с различными клиентскими командами, чтобы получить версии программного обеспечения, которые отстают от современных.

Представляем MLEnv: движок Pinterest ML

В середине 2021 года мы добились согласия различных заинтересованных сторон в области машинного обучения в Pinterest и создали среду машинного обучения (MLEnv), которая представляет собой полнофункциональную среду разработки машинного обучения, призванную повысить продуктивность инженеров машинного обучения за счет абстрагирования технических сложностей, не имеющих отношения к моделированию машинного обучения. . MLEnv напрямую решает различные проблемы, упомянутые в предыдущем разделе, и предоставляет разработчикам машинного обучения четыре основных компонента.

Среда выполнения кода и среда сборки

MLEnv предоставляет своим пользователям стандартизированную среду выполнения кода и среду сборки. MLEnv поддерживает монорепо (единый репозиторий кода) для всех проектов машинного обучения, единую общую среду для всех проектов машинного обучения, в которых выполняется обучение и обслуживание, с использованием Docker и конвейера CI/CD, где клиенты могут использовать мощные компоненты, которые труднодоступны, такие как как модульные тесты графического процессора и интеграционные тесты тренера ML. Инженеры платформ берут на себя тяжелую работу по настройке их один раз для каждого проекта машинного обучения в Pinterest, чтобы их можно было легко использовать повторно.

Набор инструментов для разработчиков машинного обучения

MLEnv предоставляет разработчикам машинного обучения набор часто используемых инструментов ML Dev, который помогает им повысить продуктивность обучения и развертывания моделей. Многие из них являются обычными сторонними инструментами, такими как MLFlow, Tensorboard и профилировщики, тогда как другие являются внутренними инструментами и платформами, созданными нашей командой платформы ML, такими как наш конвейер развертывания моделей, платформа обслуживания ML и платформа обучения ML.

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

Расширенные функции

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

Собственная библиотека глубокого обучения

Объединив предыдущие три компонента, разработчики машинного обучения могут сосредоточиться на интересной части — логике обучения своей модели. Мы позаботились о том, чтобы не добавлять в логику моделирования какую-либо абстракцию, которая может испортить опыт работы с хорошо функционирующими библиотеками глубокого обучения, такими как TensorFlow2 и PyTorch. В нашей структуре инженеры ML имеют полный контроль над загрузкой набора данных, архитектурой модели и циклом обучения, реализованными с использованием собственных библиотек глубокого обучения, имея при этом доступ к дополнительным компонентам, описанным выше.

Золотой век машинного обучения на Pinterest

После того, как MLEnv стала общедоступной в конце 2021 года, мы вступили в очень интересный период времени, когда произошел быстрый прогресс в моделировании машинного обучения и платформе машинного обучения в Pinterest, что привело к огромному улучшению качества рекомендаций и нашей способности предоставлять нашим пиннерам более вдохновляющий контент.

Скорость развития машинного обучения

Непосредственным результатом MLEnv является значительное повышение скорости разработки ML в Pinterest инженеров ML. Возможность разгрузить большую часть шаблонной инженерной работы по машинному обучению, доступ к полному набору полезных инструментов машинного обучения через простой в использовании интерфейс и легкий доступ к расширенным возможностям машинного обучения меняют правила игры в разработке и развертывании современных моделей машинного обучения.

Разработчики ML очень довольны новым инструментом. MLEnv поддерживает NPS 88, что соответствует мировому уровню, и является ключевым фактором в улучшении NPS платформы ML на 43%. В одной из организаций, с которыми мы сотрудничаем, NPS улучшился на 93 пункта после полного развертывания MLEnv.

В результате команды также становятся намного более продуктивными. Мы видим кратный рост количества заданий ML (то есть офлайн-экспериментов), которые выполняет каждая команда, хотя количество инженеров ML примерно одинаковое. Теперь они также могут отправлять модели на онлайн-эксперименты за дни, а не месяцы, что приводит к многократному увеличению количества онлайн-экспериментов по МО.

Платформа машинного обучения 2.0

MLEnv сделал команду платформы ML намного более продуктивной, позволив ей сосредоточиться на одной среде ML. Команда платформы ML теперь может создавать стандартизированные инструменты и передовые возможности машинного обучения, а также стимулировать внедрение за счет единой интеграции с MLEnv.

Примером платформы обучения ML является Training Compute Platform (TCP), наша собственная распределенная платформа обучения. До появления MLEnv команда изо всех сил пыталась поддерживать платформу из-за необходимости поддерживать разнообразные среды машинного обучения с различными библиотеками и настройками платформы глубокого обучения. Команда также боролась с внедрением из-за необходимости поочередно подключать к платформе различные клиентские команды с разными потребностями. Однако с помощью MLEnv команде удалось значительно сократить расходы на обслуживание за счет сужения единой унифицированной среды и одновременно добиться взрывного роста количества рабочих мест на платформе. Благодаря значительному сокращению затрат на обслуживание команда смогла сосредоточиться на естественных расширениях TCP. Более продвинутые функции, такие как распределенное обучение, автоматическая настройка гиперпараметров и распределенная загрузка данных через Ray, стали простыми для реализации командой и выпускаются через MLEnv, чтобы клиентские команды могли их принять и использовать с минимальными усилиями.

Аналогичным образом, что касается платформы обслуживания машинного обучения, MLEnv позволил команде 100-кратно улучшить эффективность обслуживания машинного обучения в масштабах всей компании за счет обслуживания графических процессоров. В предыдущей парадигме этот проект был бы невозможен, поскольку он представлял собой сложную комбинацию улучшений моделирования машинного обучения, вычислений на графических процессорах и распределенных систем, требующую уникальных решений для каждого стека машинного обучения. Однако с помощью MLEnv нам удалось сформировать межфункциональную команду из Advanced Technology Group (ATG) и команды платформы ML Serving, чтобы сосредоточиться на единой унифицированной среде и осуществить первый запуск продукции на домашней ленте Pinterest в течение 6 месяцев. Как только эта возможность стала доступна на MLEnv и продемонстрировала значительно улучшенные бизнес-показатели, другие крупные проекты ML смогли быстро использовать эту технологию для масштабирования своих моделей в течение пары месяцев.

Смена парадигмы разработки машинного обучения

MLEnv создала в Pinterest новую парадигму, в которой инженеры ML и платформы ML работают над единой целью — улучшить возможности ML в Pinterest, одновременно стирая границы каждой команды ML.

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

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

Заключение

Стандартизация машинного обучения в Pinterest привела к огромному увеличению скорости разработки разработчиков машинного обучения и множеству инноваций машинного обучения для бизнеса. Инженеры машинного обучения могут сосредоточиться исключительно на улучшениях моделирования, поскольку большинство задач системы и инфраструктуры перекладываются на наш единый механизм машинного обучения. С другой стороны, инженеры платформ могут сосредоточиться на создании и итерациях единого передового стека машинного обучения мирового класса. Эта работа также изменила культуру разработки машинного обучения в Pinterest, поощряя сотрудничество между командами — успешные изменения в моделировании машинного обучения и инфраструктуре, разработанные отдельными командами, теперь быстро распространяются на все поверхности продуктов в Pinterest. Все это привело к огромному улучшению бизнес-показателей Pinterest в прошлом году, и мы с нетерпением ждем возможности увидеть, что будущие инновации ML могут принести нашим пиннерам!

Благодарности

  • ATG — Понг Эксомбатчай, Прабхат Агарвал, Пол Балтеску, По-Вэй Ван, И-Пин Сюй, Эндрю Чжай, Цзяцзин Сюй, Чак Розенберг
  • Core Infra — Кент Цзян
  • Команда обучения ML — Чиа-Вей Чен, Картик Ананта Падманабхан
  • Команда обслуживания ML — Назанин Фарахпур, Саураб Вишвас Джоши, Чжиюань Чжан
  • Команда ML Data — Се Вон Чан
  • Главная лента Рейтинг — Сюэ Ся, Друвил Девен Бадани

Чтобы узнать больше о разработке в Pinterest, прочтите остальную часть нашего Инженерного блога и посетите наш сайт Pinterest Labs. Чтобы изучить и подать заявку на открытые вакансии, посетите нашу страницу Карьера.