RSS Stories by Pinterest Engin... Заметка

RSS Stories by Pinterest Engineering on Medium

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

Трэд заметок

Фундаментальные модели Pinterest имеют решающее значение для их рекомендательных систем, ежедневно влияя на миллионы пользователей. Изначально многоузловое обучение этих больших моделей работало плохо, при этом добавление большего количества машин резко замедляло процесс. Даже с AWS Elastic Fabric Adapter (EFA) для улучшения сетевых возможностей масштабирование оставалось неэффективным. Профилирование выявило, что распределенные операции поиска в эмбеддингах вызывали значительные коммуникационные узкие места, при этом GPU ожидали данные. Команда внедрила несколько оптимизаций для устранения этих коммуникационных накладных расходов. Квантованные коммуникации (QComms) уменьшили полезную нагрузку данных, сжимая тензоры эмбеддингов. Сбалансированное разделение улучшило распределение рабочей нагрузки между GPU. Оптимизация эмбеддингов с учетом пропускной способности уменьшила размерность эмбеддингов вдвое, чтобы сократить перемещение данных. Ключевым прорывом стало внедрение 2D-параллелизма, изначально оптимизированного для AllReduce, что улучшило локальную связь. Наконец, они изменили топологию 2D-параллелизма для оптимизации All-to-All, сохраняя дорогостоящие операции внутри узлов и используя более дешевый AllReduce для межузловой синхронизации. Это привело к почти линейному масштабированию, достигнув 2,0-кратного увеличения при 2 узлах и 3,9-кратного при 4 узлах, и впечатляющего 7,5-кратного масштабирования при 8 узлах. Эти достижения позволили обучать более крупные модели, что привело к значительному росту вовлеченности пользователей на рекомендательных поверхностях Pinterest и ускорению циклов экспериментов.
CdXz5zHNQW_MsiwuAmomZ.png
Pinterest разработал надежную автоматизированную систему эволюции схем для своей платформы приема данных CDC на базе Kafka. Изменения схем являются критически важным межсистемным контрактом, и неконтролируемая эволюция может привести к сбоям конвейера и несогласованности данных. Их решение направлено на обеспечение безопасной, повторяемой и масштабируемой эволюции схем, рассматривая ее как многоэтапный процесс сходимости. Архитектура включает источники CDC, Kafka, Flink для преобразования и Spark для upsert-операций в таблицы Iceberg.Ключевым компонентом является надежная модель онбординга, которая использует файлы определения схем со стабильными числовыми идентификаторами в качестве источника истины. Обновления автоматически распространяются через Kafka, Flink, Spark и Iceberg посредством развертывания на основе PR с версионированием и аудитом. Система поддерживает в основном аддитивные изменения схем для обеспечения обратной совместимости и минимизации сложности. Изменения типов строго ограничены теми, которые сохраняют семантическое значение, например, расширение числовой точности.Эволюция схем управляется трехфазной моделью сходимости для поддержания доступности конвейера. Первая фаза обновляет схемы Iceberg, вторая фаза развертывает обновленный код Flink и Spark, а третья фаза обеспечивает сходимость данных. Этот поэтапный подход отделяет распространение схем от корректности данных, допуская временные расхождения в рамках определенного SLA. Pinterest использует модель, основанную на SLA, для эволюции схем, отдавая приоритет предсказуемости и операционной безопасности.Стратегии развертывания тщательно управляются, особенно для Flink, чтобы предотвратить потерю данных. Неподдерживаемые или неоднозначные случаи, такие как значения по умолчанию или изменения первичных ключей, имеют специальные пути ручного восстановления. Неоднозначные различия CREATE TABLE разрешаются путем сравнения с фактической историей DDL базы данных, а не путем вывода намерений из текстовых изменений. Параллельные изменения схем обрабатываются последовательно для предотвращения состояний гонки, обеспечивая сериализованную сходимость. Преобразования столбцов управляются путем аннотирования схем необходимыми преобразованиями, которые затем встраиваются в конвейер приема данных. Механизмы обработки ошибок и восстановления, особенно для сбоев Spark, гарантируют, что обработка возобновляется с последнего успешного водяного знака.
CdXz5zHNQW_srAU1TSiiq.png
Текст описывает редизайн платформы пользовательских последовательностей в Pinterest, направленный на создание надежной и эффективной системы для извлечения данных о поведении пользователей для моделей машинного обучения. Основная цель - предоставление согласованных, актуальных, полных и экономически эффективных последовательностей для обучения, анализа и обслуживания. Платформа определяет пользовательские последовательности как упорядоченные списки недавних, обогащенных событий. Ключевые проблемы, которые необходимо решить, включают обеспечение актуальности, полноты, согласованности и масштабируемости данных для различных вариантов использования и команд. Решение использует подход "одно определение, много сред выполнения", используя конфигурацию как код и общий механизм выполнения для обработки событий в реальном времени и пакетном режиме. Платформа реализует лямбда-архитектуру для управления как текущими, так и историческими данными. Этот дизайн упрощает внедрение новых типов событий и обогащений, улучшает процесс проверки кода и уменьшает расхождение между обработкой в реальном времени и пакетной обработкой. Три важных проектных решения - это конфигурация как код для последовательностей и обогащений, общий механизм выполнения и лямбда-архитектура для последовательностей. Результатом является платформа, которая упрощает процесс создания, обслуживания и использования пользовательских последовательностей для различных задач машинного обучения в компании.
CdXz5zHNQW_ofSjTVKPmX.png
Инженеры сталкиваются с ненадежностью при использовании AI-агентов, особенно когда им необходимо вызывать пользовательские навыки. Для решения этой проблемы были проведены тесты агентов с использованием конкретного навыка iOS-архитектуры. Целью было количественно оценить надежность вызова навыков и определить методы оптимизации. Основной инструмент тестирования был создан на основе сценария Bash; он организовывал автоматизированное тестирование с использованием подсказок, захватом журналов и проверкой результатов. Были определены и использованы положительные и отрицательные тестовые примеры для оценки способности навыка к вызову. Были реализованы методы разбора журналов для обнаружения вызова навыка на основе шаблонов вывода JSON. Для оценки производительности агентов были рассчитаны ключевые показатели эффективности, такие как коэффициент успешности и точность. Первоначальное тестирование показало, что оба агента имели несовершенные показатели вызова навыков, особенно с неоднозначными подсказками. Было обнаружено несколько оптимизаций, включая улучшение описания навыка, использование агрессивного языка и добавление таблицы навыков. Комбинирование нескольких методов обеспечило улучшенные результаты, особенно для агента Codex. В заключении подчеркивается важность тестирования и улучшения процессов вызова навыков. Разработчики должны использовать высококачественные, тщательные подсказки, чтобы максимизировать эффективность AI-агентов.
CdXz5zHNQW_AFL9DXaCyE.png
Авторы разработали контекстную последовательную двухбашенную модель для улучшения рекомендаций рекламы в Pinterest, особенно для контекстно-зависимых поверхностей, таких как "Похожие пины". Изначальной модели не хватало контекста в реальном времени, что снижало ее эффективность, поскольку она полагалась исключительно на историю поведения пользователей. Чтобы решить эту проблему, они интегрировали контекстный слой в архитектуру модели, что позволило модели включать информацию из текущей активности пользователя. Они использовали синтетические данные во время обучения, внедряя псевдо-контекст, полученный из событий конверсии, чтобы обучить модель. Был принят гибридный поток обслуживания, при котором большая часть обработки башни пользователя выполняется в автономном режиме, но контекстный слой обрабатывается в режиме онлайн. Это позволяет получать динамические пользовательские эмбеддинги, на которые влияет контекст в реальном времени, повышая релевантность. Оффлайн-оценки показали значительное улучшение Recall@K по сравнению с предыдущей производственной моделью. Новая модель увеличила показатели выживаемости кандидатов и улучшила релевантность рекламы, особенно на поверхности "Похожие пины". Это привело к измеримому увеличению бизнес-показателей, связанных с конверсией, в частности, окупаемости расходов на рекламу (ROAS). Будущая работа включает в себя расширение модели на другие поверхности, такие как "Поиск", и эксперименты с передовыми методами слияния, такими как кросс-внимание. Эта работа демонстрирует важность включения контекста в реальном времени для повышения релевантности рекламы и пользовательского опыта.
CdXz5zHNQW_rmxcXIRNOK.png
Онлайн-система машинного обучения Pinterest использует архитектуру "корень-лист", где клиентские сервисы запрашивают оценки для пинов. Корневой компонент отвечает за извлечение и предварительную обработку признаков, а листья выполняют инференс моделей, часто на GPU. Такая конструкция упрощает внедрение новых моделей и оптимизирует использование ресурсов, разделяя рабочие нагрузки CPU и GPU. Однако это привело к сетевому узкому месту между корневой и листовой частями из-за передачи большого количества признаков.Изначально для снижения сетевой нагрузки была реализована компрессия lz4, что привело к значительной экономии пропускной способности, но с небольшим увеличением использования CPU и задержки. Это было хорошее начало, но основная проблема отправки ненужных признаков сохранялась. Затем был разработан подход "Отправляй только то, что используется", чтобы решить эту проблему, отправляя только те признаки, которые требуются конкретной модели.Сигнатура модели, определяющая входы и выходы модели, служит источником истины для требований к признакам. По мере обучения и экспорта моделей их сигнатуры сохраняются вместе с ними. Leaften загружает эти сигнатуры для создания конвертеров признаков, которые обрабатывают только необходимые признаки.Для синхронизации требований к признакам между корнем и листьями сигнатуры моделей публикуются в виде легковесных артефактов. Эти сигнатуры агрегируются в отображения на уровне пакетов, которые затем развертываются в корне вместе с существующими конфигурациями. Это развертывание следует тому же процессу поэтапной доставки, что и развертывание моделей, обеспечивая согласованность и возможность плавного отката.Эта интеграция позволяет "Обрезчику признаков" динамически обновлять списки разрешенных признаков в корне, гарантируя передачу только необходимых признаков. Система спроектирована для обработки частых обновлений моделей и постепенного развертывания с использованием версионированных поисков и механизмов резервного копирования. Это гарантирует, что представление корня о требуемых признаках остается синхронизированным с фактическими моделями, развернутыми на листьях. Обрезая ненужные признаки, Pinterest значительно сократил сетевой трафик и повысил эффективность инфраструктуры.
CdXz5zHNQW_Pr67hugpQp.png
Pinterest разработал специализированную модель генерации кандидатов для рекламы конверсий, чтобы решить проблемы с разреженностью и шумом данных о конверсиях вне сайта. Эта модель отличается от предыдущих систем, основанных на взаимодействии, тем, что ориентирована на конверсии в нижней части воронки. Первоначальный запуск в 2023 году привел к значительным улучшениям как в показателях конверсии, так и вовлеченности, включая более высокий коэффициент кликабельности. Дальнейшие итерации в 2025 году обеспечили еще большую ценность конверсии и улучшили окупаемость расходов рекламодателей. Для борьбы с разреженностью данных модель обучается на всех торговых площадках с использованием многоповерхностного подхода. Она дополняет основные сигналы конверсии данными о взаимодействии на сайте, перевзвешивая данные о кликах на основе продолжительности для уменьшения шума. Более жесткие негативы, такие как показы рекламы без взаимодействия, используются для более надежного контрастного обучения. Модель включает в себя пользовательские функции, фиксирующие намерения в реальном времени и долгосрочные предпочтения, наряду с функциями со стороны Pin для семантического понимания и отслеживания производительности. Двухбашенная архитектура с DCN v2 и MLP в параллельных перекрестных слоях улучшает моделирование взаимодействия признаков и качество извлечения. Модель эволюционировала от многоголовочного дизайна к унифицированной многозадачной архитектуре, позволяющей получать прямую выгоду от многозадачной оптимизации во время обслуживания. Была введена функция потерь на уровне рекламодателя, чтобы обеспечить более стабильную гранулярность для сигналов конверсии, что привело к существенному улучшению полноты охвата. Эта новая модель успешно увеличила объем покупок и улучшила производительность рекламодателей, одновременно улучшив пользовательский опыт покупок.
CdXz5zHNQW_iZkUUBsGZ2.png
Pinterest использует понимание контента для управления распространением и вовлечением, что требует понимания изображений и исходящих ссылок. Основная проблема заключается в нормализации URL-адресов, когда идентичные страницы продуктов отображаются под разными URL-адресами из-за параметров отслеживания. Эта избыточность приводит к растрате вычислительных ресурсов из-за повторного получения и обработки. Канонизация элементов направлена на унификацию идентичных элементов, представленных разными URL-адресами, что крайне важно для каталогов покупок. Когда идентификаторы элементов отсутствуют, продвинутая нормализация URL-адресов имеет решающее значение для дедупликации.Алгоритм Minimal Important Query Param Set (MIQPS) автоматически определяет, какие параметры URL влияют на идентичность контента. Он различает нейтральные параметры, которые не влияют на содержимое страницы, и ненейтральные параметры, которые влияют. В то время как статические правила работают для известных платформ, обширный набор доменов Pinterest требует динамического, основанного на данных подхода.Алгоритм MIQPS работает в три этапа. Во-первых, он собирает корпус наблюдаемых URL-адресов для каждого домена из конвейера приема Pinterest. Во-вторых, URL-адреса группируются по шаблону их параметров запроса, гарантируя, что параметры анализируются в их конкретном контексте. Это предотвращает неправильную классификацию параметра на основе другого типа URL.Наконец, для каждого параметра в шаблоне алгоритм эмпирически проверяет его важность. Он выбирает образцы URL-адресов с различными значениями параметров и вычисляет идентификаторы контента как для исходных, так и для измененных (с удаленным параметром) URL-адресов. Если удаление параметра изменяет идентификатор контента в значительном проценте образцов, он классифицируется как ненейтральный и сохраняется. В противном случае он считается нейтральным и может быть безопасно удален для нормализации. Каждый домен продавца получает свою собственную карту MIQPS, учитывающую значения параметров, специфичные для домена.
CdXz5zHNQW_WVip85jMBw.png
Команда платформы машинного обучения Pinterest столкнулась с сбоями обучающих заданий на базе Ray из-за периодических проблем с сетевым подключением, что побудило команду PinCompute провести расследование. Расследование, длившееся более трех месяцев, выявило, что сбои коррелировали с перезагрузками драйвера сети ENA на экземплярах AWS EC2. Эти перезагрузки, вызванные нехваткой ресурсов ЦП, были связаны с высоким использованием системного ЦП. Изначально команда пробовала различные решения, такие как использование больших страниц и распределителей памяти, но ни одно из них не помогло решить проблему. Странно, что проблемы возникали только в одной из зон доступности AWS Pinterest. Профилирование с использованием perf и mpstat выявило случаи насыщения одного ядра ЦП. Временное профилирование с использованием perf выявило виновника — процесс, который спорадически потреблял высокие ресурсы ЦП. Было установлено, что этим процессом является зомби-процесс. Обнаружение зомби-процессов и их влияние на использование ЦП и производительность сетевого драйвера привело к более глубокому пониманию узких мест системы.
CdXz5zHNQW_ETi1Y6sqJq.png
Pinterest использует дедупликацию на уровне запросов для оптимизации своих рекомендательных моделей и управления затратами на инфраструктуру. Этот метод позволяет избежать избыточной обработки данных на уровне запросов, которые включают в себя огромные последовательности действий пользователей. Дедупликация значительно снижает потребность в хранении, при этом сжатие данных достигает 10-50 раз для столбцов признаков с большим количеством пользователей с использованием Apache Iceberg. При внедрении данных, отсортированных по запросам, они решали проблемы и поддерживали качество моделей с помощью SyncBatchNorm и маскирования на уровне пользователей. Это привело к значительному ускорению обучения: улучшение в 4 раза для ретривал-моделей и в 2,8 раза для ранжирующих моделей. Это также повысило пропускную способность обслуживания, обеспечив 7-кратное увеличение мощности ранжирующего обслуживания с использованием архитектуры Deduplicated Cross-Attention Transformer (DCAT). Этот комплексный подход привел к значительным улучшениям в хранении, обучении и обслуживании. В конечном итоге, дедупликация на уровне запросов является сквозной техникой с простыми, но эффективными решениями.
CdXz5zHNQW_P4rt7zsLFA.png
Производительность имеет решающее значение для мобильных приложений, подобно такой базовой функции, как время на часах. Pinterest уделяет большое внимание измерению, защите и улучшению производительности ключевых пользовательских сценариев. Воспринимаемая пользователем задержка, отражающая время ожидания пользователем контента, является жизненно важным показателем производительности. Измерение этой задержки, особенно времени до визуального завершения, ранее было сложным и трудоемким. Поскольку время до визуального завершения сильно варьируется, требовалась индивидуальная логика измерения, что препятствовало работе над производительностью. Команда по производительности Pinterest искала простое решение для инженеров-разработчиков, чтобы получить доступ к данным о задержках. Это привело к интеграции логики визуального завершения в базовый класс пользовательского интерфейса, автоматически измеряя задержку для любой поверхности пользовательского интерфейса. Система работает путем обхода дерева представлений, идентификации и отслеживания ключевых медиа-представлений для отслеживания прогресса рендеринга. Эта унифицированная система предоставляет данные о задержках для более чем 60 поверхностей Android, помогая в мониторинге производительности. Она позволяет проводить справедливые сравнения производительности между различными функциями, в том числе с коротким сроком службы. Этот упрощенный подход делает производительность видимой для всех инженеров, способствуя оптимизации воспринимаемой пользователем задержки. Аналогичные реализации были также распространены на платформы iOS и веб.
CdXz5zHNQW_E0CjwHBss6.png
Рекомендации ленты Pinterest используют каскадную систему для выбора и представления элементов. Заключительный этап фокусируется на многоцелевой оптимизации, балансируя вовлеченность, внедрение новых вариантов использования и бизнес-цели. Со временем команда улучшила этот этап за счет алгоритмических и инфраструктурных обновлений. Изначально они использовали алгоритм детерминантного точечного процесса (DPP) для диверсификации ленты, что показало значительное улучшение вовлеченности пользователей. Позже они внедрили разложение скользящего спектра (SSD), обеспечивающее меньшую вычислительную сложность и гибкость. SSD позволило включить цели качества, что привело к "мягкому штрафу за интервалы" для контента, требующего особой осторожности. Эта структура позволяет избежать ограничительной фильтрации, создавая лучший пользовательский опыт. Инфраструктура системы развивалась, перемещая логику на сервер моделей для упрощения экспериментов. Сигналы разнообразия также улучшились, включив в себя визуальные, текстовые и графические вложения для лучшего вычисления сходства пинов. Они ввели сигналы качества контента и обновили визуальные вложения для улучшений в реальном времени. Затем были добавлены семантические идентификаторы для управления семантическим перекрытием для более эффективного контроля разнообразия.
CdXz5zHNQW_DU2kVthyel.png
Pinterest обновил свой стек машинного обучения с PyTorch 2.1 до 2.6, чтобы использовать новые функции и улучшить производительность. Это обновление включало решение таких проблем, как устаревшие зависимости, критические изменения API и совместимость с TorchScript. Они обновили Ubuntu DLAMI и версии CUDA в соответствии с требованиями PyTorch 2.6. Они столкнулись и решили проблемы с инициализацией TorchScript, отключив профилирование JIT и отключив fuser для TorchScript. Они смягчили критические изменения API, внедрив макрос времени компиляции для объединения версий. Для минимизации времени простоя и контроля влияния на производство было применено многоэтапное развертывание с временным окном. После обновления они исправили проблемы с потерей метрик DCGM, устранив конфликт ресурсов. Обновление также включало решение периодических сбоев развертывания моделей. Эти обновления включали переход на новый DLAMI, разрешение конфликтов и адаптацию к изменениям. Конечной целью было обеспечить плавный и надежный переход в производство.
CdXz5zHNQW_qKc4D1jJuD.png
Pinterest разработала экосистему Model Context Protocol (MCP) для поддержки агентов ИИ. MCP позволяет большим языковым моделям взаимодействовать с инструментами и данными, используя единый протокол. Архитектура состоит из нескольких облачных MCP-серверов, ориентированных на конкретные домены. Центральный реестр управляет этими серверами, обеспечивая обнаружение и авторизацию. Инженеры могут писать инструменты, а платформа обрабатывает развертывания. Платформа интегрировала MCP в существующие рабочие процессы, такие как внутренний чат ИИ. Безопасность имеет первостепенное значение, с выделенным стандартом и двухуровневой авторизацией с использованием JWT и mesh-идентификаторов. Ограничение доступа на основе бизнес-групп снижает риски для конфиденциальных действий. Для безопасных операций требуется одобрение человека. Система разработана для наблюдаемости, логирования входных и выходных данных для анализа воздействия. Экосистема MCP экономит инженерам значительное количество времени, с более чем 66 000 ежемесячных вызовов. Pinterest планирует расширить использование MCP, добавляя серверы и совершенствуя управление.
CdXz5zHNQW_HIoRCChfU2.png
Pinterest разработала аналитический агент для улучшения возможностей преобразования текста в SQL для своего обширного хранилища данных. Они столкнулись с трудностями из-за масштаба и сложности своих данных, с многочисленными таблицами и разнообразными аналитическими потребностями. Агент использует объединённые контекстно-интентивные эмбеддинги, чтобы передать смысл запросов, обеспечивая семантическое понимание. Одновременно он извлекает структурные, статистические закономерности и включает метаданные управления для ранжирования результатов. Хранилище данных изначально нуждалось в очистке и стандартизации, что привело к появлению программы управления таблицами с многоуровневыми классификациями. Аналитические знания кодируются из истории запросов, выходя за рамки простого сопоставления ключевых слов. SQL-запросы переводятся в описания на естественном языке, фиксируя исходный аналитический замысел через трёхэтапный процесс. Обобщаемые описания и аналитические вопросы создают повторно используемую базу знаний. Это описание на естественном языке затем встраивается в векторное представление для поиска на основе намерения. Также выделяются структурные и статистические паттерны, включая схемы соединения и агрегации. Эти закономерности сочетаются с метаданными управления, чтобы создать систему ранжирования, ориентированную на управление. Агент использует эти два аспекта для предоставления необходимой информации для генерации и проверки ответов на аналитические вопросы.
CdXz5zHNQW_RcLxSqw9JO.png
Pinterest объединил свои модели взаимодействия с рекламой из трех отдельных, специфичных для поверхности моделей в единую унифицированную архитектуру. Это изменение было направлено на устранение неэффективности, такой как медленная итерация, избыточные затраты на обучение и бремя обслуживания. Проект следовал стратегии, отдающей приоритет простоте и безопасной итерации, начиная со слияния самых сильных компонентов. Изначальная базовая унифицированная модель показала улучшения в автономном режиме, но увеличила затраты, что привело к дальнейшему совершенствованию. Усовершенствованная архитектура включила элементы с разных поверхностей, такие как MMoE и длинные последовательности пользователей, достигнув лучших результатов при более разумных затратах. Была реализована калибровка для конкретных поверхностей для эффективной обработки различий в распределении трафика по поверхностям. Многозадачное обучение и экспорт для конкретных поверхностей были введены для гибкости и итераций для конкретных поверхностей. Оптимизация эффективности, включая слои проекции и широковещательную рассылку на уровне запросов, снизила затраты на инфраструктуру и задержку. Унифицированная модель продемонстрировала значительные улучшения как в автономных, так и в онлайн-метриках. Эта консолидация позволяет быстрее и последовательнее улучшать показатели. Наконец, следующим шагом является объединение поверхности "Похожие пины" с акцентом на эффективность модели.
CdXz5zHNQW_Wze6BrkcVd.png
Этап L1 рейтинга Pinterest, критически важный для эффективности рекламы, столкнулся с устойчивым разницами в онлайн-офлайн (O/O) при внедрении новых моделей коэффициента конверсии (CVR). Несмотря на значительный офлайн-рост потерь и калибровки, онлайн-тесты A/B показали нейтральные или отрицательные результаты, что привело к задержкам запуска. Расследование включало полноценную диагностику, охватывающую модель и оценку, обслуживание и характеристики, а также влияние воронки. Первичные проверки исключили проблемы с офлайн-оценкой, предвзятость экспозиции и неудачи в обслуживании как основные причины. Ключевыми проблемами были выявлены расхождения между O/O, когда обслуживание не использовалось в обучении, а также смещение версии вложения, приводящее к несогласованности запросов и вышки выводов. Решение включало онбординг функций и сброс встраивания адресов, улучшение покрытия функций и выравнивание версий моделей. Дальнейший анализ выявил важность выравнивания воронок и метрического сопоставления, где улучшения показателей L1 могут не привести к росту CPA из-за существующих ограничений воронки. Это подчеркнуло необходимость учитывать разницу операционной и выходной операции как основное ограничение проектирования для развертывания моделей.
CdXz5zHNQW_4sChFakajo.png
Pinterest разработал Piqama, универсальную платформу управления квотами, для контроля использования ресурсов в различных системах. Piqama управляет всем жизненным циклом квот, включая управление схемами, проверку и авторизацию обновлений через централизованный портал. Платформа предоставляет стратегии принудительного исполнения и наказания по умолчанию, позволяя настраивать их с помощью логики, специфичной для приложений. Функции управления и оптимизации включают сбор статистики использования и включение автоматического изменения размеров для эффективного распределения ресурсов. Бюджеты и квоты взаимосвязаны, при этом системы возмещения затрат влияют на настройки квот и распределение ресурсов. Piqama реализована в двух областях: управление квотами на основе емкости для платформы обработки больших данных и квоты ограничения скорости для онлайн-хранилища. В платформе обработки больших данных Piqama управляет памятью, vcore и одновременными приложениями, с автоматической и ручной настройкой квот. Платформа обработки больших данных использует Yunikorn и базу данных ресурсов для точного расчета и применения квот. Внедрена новая структура ограничения скорости для онлайн-хранилища для улучшения распределения системных ресурсов и контроля затрат. Структура ограничения скорости направлена на оптимизацию управления жизненным циклом, связывание ограничения скорости с использованием ресурсов и использование Piqama в качестве плоскости управления. Этот подход предлагает надежное, гибкое и централизованное решение для управления ресурсами на различных платформах Pinterest, чтобы избежать каких-либо ручных настроек.
CdXz5zHNQW_acxjx5IRwX.png
Pinterest, используя Apache Spark, столкнулся с частыми ошибками нехватки памяти (OOM) в своей среде обработки больших данных. Они внедрили "Автоматические повторные попытки выделения памяти" для автоматического повтора задач, завершающихся с ошибкой OOM на исполнителях с увеличенной памятью. Основной целью было снижение нагрузки на дежурных и экономия затрат, связанных с неудачными приложениями. Основная идея заключалась в назначении задачам с более высокими потребностями в памяти определенного профиля ресурсов. Эта пользовательская версия Apache Spark модифицирует цикл планирования для повторной попытки задач с большими профилями памяти, используя гибридный подход. Этот подход может увеличить процессорное время на задачу или, при необходимости, запускать физически более крупные исполнители. Реализация включала расширение основных классов Spark, таких как Task и TaskSetManager, и обновление SparkUI. Они разработали комплексную панель мониторинга для отслеживания влияния, измеряя экономию затрат и скорость восстановления заданий. Развертывание было поэтапным, начиная с ad-hoc заданий, а затем постепенно включая запланированные задания по уровням. Результаты успешно уменьшили ошибки OOM и оптимизировали использование ресурсов в кластере Spark.
CdXz5zHNQW_Np2gePBjyR.png
Pinterest разработал новую двухбашенную модель с обслуживанием на GPU для облегченного ранжирования рекламы. Эта модель использует архитектуру MMOE-DCN для баланса между производительностью и задержкой обслуживания. Этап облегченного ранжирования эффективно сужает список кандидатов на рекламу для последующих моделей. Эта новая архитектура заменила предыдущую модель MTMD и включила обновления функций. Они добились снижения потерь в автономном режиме на 5-10% для прогнозирования CTR. Дальнейшая сегментация стандартной и торговой рекламы также улучшила снижение потерь и скорость итерации модели. Эффективность обучения была повышена за счет оптимизации загрузчика данных, корректировки кода модели и настройки конфигурации обучения. Оценка проводилась с использованием потерь KL-дивергенции, и модель оценивалась на победителях аукционов и кандидатах. Онлайн-эксперименты показали значительное снижение CPC и увеличение CTR. Проект принес существенные улучшения в автономных и онлайн-метриках. Этот прогресс означает развитие в масштабировании рекомендательных систем с более сложными и эффективными моделями. Проект был совместной работой нескольких команд в Pinterest.
CdXz5zHNQW_MAv1itJAPE.png
Pinterest создал новую платформу для приема данных, чтобы заменить свою медленную, пакетную устаревшую систему. Новая платформа использует Change Data Capture (CDC), Kafka, Flink и Spark для приема данных в режиме, близком к реальному времени. Эта конструкция обеспечивает меньшую задержку и лучшую эффективность, чем старые методы. Система принимает изменения из баз данных, таких как MySQL и TiDB, в таблицы CDC. Потоки Flink обрабатывают эти события CDC и сохраняют их в таблицах Iceberg. Затем задания Spark периодически объединяют изменения из таблиц CDC в базовые таблицы, используя операторы "Merge Into". Ключевые оптимизации включают секционирование базовых таблиц и использование соединений с бакетами для повышения эффективности. Эти методы снижают вычислительные затраты и повышают скорость операций upsert. Команда стандартизировала подход Merge-on-Read (MOR) из-за его преимуществ. Платформа поддерживает удаления на уровне строк и обеспечивает соответствие данным. Будущая работа будет сосредоточена на автоматической эволюции схемы в рамках платформы.
CdXz5zHNQW_EWVx9exAE2.png
Авторы стремились обновить свою систему показа рекламы, выйдя за рамки модели Two-Tower, чтобы использовать более сложные нейронные сети, требующие этапа вывода на основе GPU. Основной задачей была интеграция этого нового этапа без увеличения задержки в их высокооптимизированной воронке показа. Они решили проблему узкого места при извлечении признаков, объединив высокоценные признаки-кандидаты непосредственно в модель и используя высокопроизводительное хранилище "ключ-значение" для других. Бизнес-логика, такая как фильтрация и сортировка, была перенесена в модель для повышения эффективности, минимизируя передачу данных. Значительное снижение задержки было достигнуто за счет оптимизации GPU, включая многопоточный CUDA и слияние ядер. Авторы также переработали поток данных извлечения, сначала возвращая основные метаданные, а остальные извлекая позже. Дальнейшее улучшение задержки было достигнуто за счет введения параллельных путей для расширения признаков. Наконец, неожиданное изменение метрик возникло из-за перехода от локального к глобальному ранжированию, что потребовало тщательного анализа и настройки для поддержания производительности. Этот переход представляет собой значительные усилия по перепроектированию для повышения качества рекомендаций.
CdXz5zHNQW_6k9q6s1Pj5.png
Реклама Pinterest призвана вдохновлять пользователей и органично вписываться в их покупательский путь. Понимание быстро меняющегося поведения пользователей является ключом к показу релевантной рекламы. Традиционные методы таргетинга часто упускают нюансы намерений пользователя. Команда Pinterest Ads разработала передовое моделирование поведенческих последовательностей для улучшения генерации рекламных кандидатов. Изначально модель на основе трансформеров предсказывала, с какими рекламодателями пользователи будут взаимодействовать дальше. Эта модель на уровне рекламодателей позволила значительно увеличить объем конверсий и снизить стоимость привлечения клиента (CPA) в производственной среде. Основываясь на этом, команда разработала модель на уровне товаров, чтобы предсказывать конкретные продукты, с которыми пользователи будут взаимодействовать. Эта модель использует богатые вложения Pin и метаданные каталога для детальных представлений. Модель на уровне товаров также продемонстрировала существенные улучшения в показателях оформления заказа пользователями и снижение CPA. Полученные знания включали решение проблемы предвзятости популярности, обработку разреженных признаков и оптимизацию длины последовательности.
CdXz5zHNQW_Fq5cBW8OyX.png
Крупные онлайн-платформы сталкиваются с проблемой организации миллиардов товаров в удобные для навигации торговые коллекции. Исторически эти коллекции основывались на истории поиска пользователей и ручной кураторской работе. Однако мультимодальные большие языковые модели (LLM) теперь позволяют генерировать коллекции непосредственно из контента, учитывая при этом паттерны поиска пользователей. В данной статье представлена Pinlanding — производственный конвейер для генерации торговых коллекций. Pinlanding состоит из четырех компонентов: понимание намерений пользователя при поиске, создание словаря торговых коллекций с использованием LLM, построение лент на основе атрибутов и оценка/развитие системы. Данные о взаимодействии пользователей помогают охарактеризовать намерения при покупках, выявляя как поисковые запросы с большим объемом, так и новые длиннохвостые разговорные запросы. Визуально-языковая модель генерирует первоначальные атрибуты продукта, которые затем курируются в компактный словарь с использованием статистической фильтрации, кластеризации на основе вложений и обзора с помощью LLM. Двухэнкодерная модель в стиле CLIP обучается для масштабируемого назначения атрибутов, эффективно сопоставляя продукты с атрибутами. Ray используется для масштабируемого пакетного вывода при назначении атрибутов, а Spark строит ленты, оценивая релевантность продукта теме. Классификатор на основе CLIP демонстрирует превосходную производительность на эталонном тесте по прогнозированию атрибутов моды. Человеческая оценка показывает, что Pinlanding значительно повышает точность качества коллекций по сравнению с традиционными методами. Система привела к четырехкратному увеличению количества уникальных тем покупок и 35% улучшению производительности поиска. Дальнейшая работа включает интеграцию социальных тенденций и разработку слоя ИИ-агента для обработки возникающих составных концепций.
CdXz5zHNQW_plPICGLX7O.png
Pinterest Search разработал метод повышения оценки релевантности поиска с использованием больших языковых моделей (LLM). Традиционное измерение релевантности опиралось на дорогостоящие человеческие аннотации, что ограничивало масштаб и чувствительность A/B-тестов. Для решения этой проблемы они дообучили LLM с открытым исходным кодом на данных, размеченных людьми, для прогнозирования релевантности пинов запросам. Этот подход на основе LLM рассматривает прогнозирование релевантности как задачу многоклассовой классификации, используя такие признаки, как заголовки пинов, описания и подписи к изображениям.Они приняли стратифицированный дизайн выборки запросов, который значительно снижает минимальный обнаруживаемый эффект (MDE) на порядок. Эта новая методология позволяет измерять гетерогенные эффекты воздействия и повышает эффективность оценки. Процесс разметки LLM значительно снижает затраты и время, позволяя использовать большие и более репрезентативные размеры выборки.После дообучения модель релевантности на основе LLM генерирует оценки релевантности, которые затем используются для вычисления метрик, таких как sDCG@K. Строгая валидация показала высокое соответствие между метками, сгенерированными LLM, и человеческими аннотациями, с точностью совпадения 73,7% и сильными корреляциями на основе ранжирования. Это соответствие сохраняется даже для запросов из разных сегментов популярности.Оценка релевантности на основе LLM оказалась эффективной и для неанглоязычных запросов, сохраняя сильные корреляции и низкую предвзятость. Перейдя к оценке релевантности на основе LLM, Pinterest Search смог увеличить наборы оценочных запросов и улучшить качество метрик релевантности для оценки онлайн-экспериментов. Это привело к значительному сокращению ручных усилий по аннотированию и повышению общей эффективности их процесса A/B-тестирования. Выбранная LLM, XLM-RoBERTa-large, обеспечивает хороший баланс между качеством прогнозирования и эффективностью инференса.
CdXz5zHNQW_fbv8G1VHoa.png
Pinterest использует метрику под названием "распространенность" для измерения контента, нарушающего правила, которая определяется как процент всех просмотров, пришедшихся на вредоносный контент. Распространенность дополняет отчеты пользователей, выявляя недостаточно сообщаемые нарушения и отслеживая тенденции. Исторически сложилось так, что полагаться на человеческую проверку для измерения распространенности было медленно и дорого. Для решения этой проблемы Pinterest разработал рабочий процесс с использованием ИИ для ежедневного измерения распространенности. Это включает в себя выборку пользовательских показов и использование мультимодальной большой языковой модели (LLM) для крупномасштабной маркировки. LLM, управляемая подсказками экспертов и специалистов в предметной области, значительно сокращает задержку и затраты при сохранении точности. Распространенность рассчитывается ежедневно с доверительными интервалами и может быть разбита по областям политики, подполитикам и поверхностям контента. Система использует оценки риска от моделей принудительного исполнения для эффективной выборки, но эти оценки не служат метками. Взвешивание по обратной вероятности гарантирует, что статистика распространенности точно отражает пользовательские показы с течением времени, даже при изменении пороговых значений принудительного исполнения. Машинное обучение имеет решающее значение для беспристрастной выборки и эффективной маркировки, что позволяет быстрее выявлять риски и принимать упреждающие меры. Этот подход, основанный на данных, позволяет быстрее итерировать продукты, разрабатывать обоснованную политику и принимать стратегические решения, включая постановку целей и эффективное распределение ресурсов. Проблемы, такие как широкие доверительные интервалы для редких категорий или дрейф политики, решаются с помощью адаптивной выборки и непрерывного мониторинга. Будущие планы включают расширение возможностей поворота, оптимизацию использования LLM и совершенствование процессов с участием человека для повышения точности и снижения предвзятости.
В 2023 году Pinterest взяла на себя обязательство по программе Inspired Internet Pledge, уделяя особое внимание благополучию пользователей и обеспечению более безопасного онлайн-опыта. Pinterest использует опросы пользователей (Pinner surveys), чтобы понять восприятие пользователями качества контента и улучшить контент платформы. Эти опросы напрямую просят пользователей оценить изображения, предоставляя ценную обратную связь для улучшения рекомендаций. Цель состоит в том, чтобы продвигать высококачественный контент, который вдохновляет пользователей и стимулирует долгосрочное взаимодействие. Pinterest избегает продвижения низкокачественного "кликбейта", обучая системы рекомендаций с использованием данных опросов. Была разработана модель машинного обучения для прогнозирования визуального качества на основе оценок пользователей, используя встраивания изображений и подход парного ранжирования. Модель была обучена на наборе данных из 5000 пинов, с несколькими оценками на изображение для уменьшения шума. Оффлайн-оценки продемонстрировали способность модели различать контент более высокого и более низкого качества. Эта модель помогла Pinterest де-биасировать систему, гарантируя, что вознаграждаемое взаимодействие исходит от высококачественного контента, что соответствует их ценности "Pinners First". Модель успешно внедрена на основных платформах Pinterest, включая Homefeed, Related Pins и Search.
Pinterest перенаправляет свои инвестиции в ИИ на тонко настроенные модели с открытым исходным кодом, чтобы достичь аналогичной производительности при меньших затратах. Модели с открытым исходным кодом улучшаются, особенно в плане экономической эффективности по сравнению с их производительностью. Pinterest обнаруживает, что компактные, целевые модели превосходят универсальные большие языковые модели (LLM) в конкретных задачах. Этот подход позволяет им использовать данные, специфичные для предметной области, и интеграцию продуктов для дифференциации. Модели пользовательского моделирования, визуальные и текстовые базовые модели создаются, приобретаются или адаптируются в зависимости от модальностей. Переход на открытый исходный код обусловлен выравниванием возможностей моделей и акцентом на тонкую настройку. Помощник Pinterest использует собственные инструменты Pinterest и LLM для понимания запросов и вызова инструментов. Преимущества включают снижение затрат, лучшую персонализацию и возможность согласования моделей с ценностями бренда. Pinterest продолжит использовать сочетание разработанных внутри компании, тонко настроенных моделей с открытым исходным кодом и сторонних моделей ИИ. Долгосрочная стратегия предполагает использование данных для создания эффективных моделей и партнерство для устранения пробелов в возможностях.
Pinterest столкнулся с фрагментированной системой наблюдаемости, где журналы, трассировки и метрики были изолированы. Это препятствовало целостному пониманию проблем платформы, заставляя инженеров перемещаться по нескольким интерфейсам. Команда приняла подход "сдвиг влево" и "сдвиг вправо" для улучшения инструментария и мониторинга производства. Чтобы преодолеть фрагментацию данных, они обратились к искусственному интеллекту и контекстной инженерии, в частности, используя протокол Model Context Protocol (MCP). Был разработан MCP-сервер для объединения разрозненных сигналов наблюдаемости, таких как метрики, журналы, трассировки и события изменений. Это решение позволяет агентам ИИ получать доступ к данным и коррелировать их без полной перестройки инфраструктуры. MCP-сервер обеспечивает унифицированный доступ к различным столпам данных, предлагая детальный контроль контекста и подключаемую расширяемость. Он действует как центр для агентных опытов наблюдаемости, позволяя командам создавать инструменты, учитывающие контекст. Возникли проблемы из-за ограничений размера контекста модели, связанных с огромным объемом обрабатываемых данных. Решения включали создание прямых ссылок на соответствующие панели мониторинга или предоставление более конкретной документации по инструментам для агентов ИИ.
Тестирование Android end-to-end на Pinterest было медленным и ненадежным из-за несбалансированных тестовых шардов и ограничений платформы. Команда сначала оценила сторонние решения, но сочла их неадекватными своим потребностям. Они решили создать собственную платформу тестирования под названием PinTestLab, размещенную на эмуляторах EC2. Эта платформа обеспечила полный контроль над стеком тестирования и инфраструктурой.Основным нововведением является механизм шардинга, учитывающий время выполнения. Эта система использует данные об исторической продолжительности и стабильности тестов для группировки тестов в шарды. Цель состоит в том, чтобы обеспечить одинаковое общее время выполнения для каждого шарда. Этот подход отличается от простого балансирования количества тестов на шард.Ранее шардинг на основе пакетов приводил к дисбалансу, когда один медленный шард задерживал весь билд. Даже простая сортировка по времени не учитывала время простоя эмулятора. Новый алгоритм шардинга, учитывающий время выполнения, работает путем сортировки тестов по среднему времени выполнения, а затем жадно назначает каждый тест эмулятору, который, по прогнозам, завершится раньше всего. Это поддерживает занятость всех эмуляторов и минимизирует разницу во времени между самым быстрым и самым медленным шардами.Влияние этого решения было значительным. Время сборки end-to-end сократилось на девять минут, что составило 36% улучшения. Время выполнения самого медленного шарда сократилось на 55%. Разница во времени между самым быстрым и самым медленным шардами резко сократилась с 597 секунд до всего лишь 130 секунд. Это повышает скорость работы разработчиков, предоставляя более быструю и надежную обратную связь.
CdXz5zHNQW_7VB873V6rz.png
Путь Pinterest в области ИИ эволюционировал от фрагментированных стеков машинного обучения к единой платформе ИИ. Ранние усилия по машинному обучению включали создание индивидуальными командами собственных решений, что приводило к избыточности и несоответствию между обучением и обслуживанием. Язык DSL Linchpin и сервис вывода Scorpion были ранними попытками унификации, но столкнулись с ограничениями, связанными с развитием технологий. Небольшая команда платформы машинного обучения испытывала трудности с продвижением внедрения без организационного согласования и стимулов. EzFlow была направлена на улучшение оркестровки обучения, но внедрение было медленным из-за сосредоточения команд продукта на немедленных показателях. Ставки, такие как PySpark, Платформа вычислений для обучения и Galaxy, заложили основу для будущих достижений. СВН появились в системах рекомендаций, и команды, такие как Home Feed, создавали решения, такие как AutoML, которые обнажали хрупкие основы. Внедрение обусловливалось организационным согласованием, целями продукта и отраслевым импульсом. Эффективность стала ограничителем, требующим более глубокого сотрудничества между командами моделирования и платформы, поскольку модели трансформеров и ГПУ изменили инфраструктуру.
CdXz5zHNQW_zqSJ9iCsiL.png
Pinterest стремится стать платформой от вдохновения к реализации, понимая долгосрочные цели пользователей. Для этого они вводят пользовательские пути, определяемые интересами, намерениями и контекстом. Эти пути выводятся путем анализа взаимодействий пользователей, выходя за рамки простых рекомендаций контента. Система, построенная с использованием "бережливого" подхода, кластеризует ключевые слова из данных пользователей для выявления путей. Динамическое извлечение ключевых слов и иерархическая кластеризация используются для создания гибких и персонализированных путей. Затем применяются присвоение имен путям, расширение, ранжирование и диверсификация для улучшения пользовательского опыта. Модель предсказания этапов определяет жизненный цикл пути для соответствующих уведомлений. Результатом является список отдельных пользовательских путей с названиями, ключевыми словами, этапом и оценками уверенности. LLM используются для оценки релевантности пути и направления улучшений системы. Эксперименты с уведомлениями, учитывающими пути, показали значительное улучшение вовлеченности пользователей. Кроме того, Pinterest активно использует LLM для упрощения и улучшения вывода путей в целом. Компания активно дорабатывает LLM и внедряет масштабируемый пакетный вывод для эффективного выполнения.
CdXz5zHNQW_jljfgPqEKe.png
Платформа машинного обучения Pinterest, MLEnv, столкнулась со значительным падением производительности после обновления версии PyTorch. Эта проблема привела к снижению пропускной способности обучения более чем на 50%. Процесс отладки начался с изучения пропускной способности GPU roofline. Это измерение выявило снижение производительности на 20% даже при исключении загрузчика данных. Дальнейший анализ был сосредоточен на отдельных модулях модели, чтобы точно определить источник замедления. Конкретный модуль-трансформатор, модуль A, был идентифицирован как основной виновник. Профилировщик PyTorch показал, что CompiledFunctions, присутствовавшие ранее, теперь отсутствовали для этого модуля в обновленной версии.Расследование torch.compile выявило журнал, указывающий на наличие режима диспетчеризации PyTorch, не относящегося к инфраструктуре, который torch.compile не поддерживал. Минимальные воспроизводимые скрипты подтвердили, что эта проблема проявлялась конкретно в классе тренера. Проблемным компонентом оказался менеджер контекста, используемый для подсчета FLOPs, включенный по умолчанию. Отключение этого менеджера контекста решило проблему с torch.compile, восстановив CompiledFunctions. Однако это исправление не улучшило сквозную пропускную способность.Внимание переключилось обратно на аспекты загрузки данных и распределенного обучения, исключив Ray.data в качестве причины, наблюдая те же проблемы с пропускной способностью GPU roofline даже при запуске как нативное приложение PyTorch. Несколько наблюдений указывали на прерывистые медленные итерации, эффект отстающего во время синхронизации и своеобразное поведение, когда включение профилировщика Nsight Systems от Nvidia устраняло медлительность. Тестирование на одном GPU подтвердило, что распределенное обучение не было основной причиной. Полное отключение torch.compile в настройках Ray восстановило исходную пропускную способность, предполагая, что разрывы графа в torch.compile были связаны с замедлением.Создание минимальной воспроизводимой модели с обширными разрывами графа привело к наблюдению повторяющихся медленных итераций. Трассировки Nsight Systems показали, что основной поток обучения удерживал Global Interpreter Lock (GIL) во время этих медленных итераций, но это не объясняло всю паузу. Дальнейший анализ с использованием инструмента Linux perf и визуализация трассировок с помощью chrome://tracing выявили подозрительный процесс Python. Этот процесс выполнял дорогостоящие вычисления, в частности, вызов ядра Linux под названием smap_gather_stats, который собирает статистику виртуальной памяти.
CdXz5zHNQW_ahqFK2Jga1.png
Pinterest разрабатывает Moka, платформу обработки данных нового поколения, чтобы заменить свою устаревшую систему на основе Hadoop. Эта платформа развернута в AWS Elastic Kubernetes Service (EKS) в четырех средах: тестовой, dev, staging и production. Terraform, дополненный пользовательскими модулями AWS и диаграммами Helm, управляет развертываниями кластеров EKS. Критическим компонентом Moka является ее инфраструктура логирования, которая использует Fluent Bit для сбора и экспорта логов из плоскостей управления EKS, приложений Spark и системных подов в Amazon S3. Fluent Bit настроен для группировки логов приложений Spark по уникальному идентификатору задания и для разбора логов YuniKorn для сводок использования ресурсов. Для наблюдаемости Pinterest использует фреймворк, совместимый с Prometheus, для сбора метрик. Они разработали пользовательский sidecar, kubemetricsexporter, для соединения своей существующей системы Statsboard на основе TSDB с метриками Prometheus. OpenTelemetry Collector используется для получения, обработки и экспорта данных телеметрии, с конкретным конвейером, настроенным для метрик Prometheus. Эта надежная инфраструктура направлена на обеспечение эффективной и надежной обработки данных в огромном масштабе для Pinterest.
CdXz5zHNQW_slhDyOmW2y.png
Компания Pinterest столкнулась с проблемами инженерной производительности из-за растущей технологической сложности по мере роста пользовательской базы. Компания признала, что ее децентрализованная стратегия принятия инструментов создала узкие места и перегруженный ландшафт для новых инженеров. Чтобы решить эту проблему, Pinterest решила переосмыслить опыт разработчика, создав внутреннюю платформу разработчика под названием PinConsole. PinConsole - это унифицированный портал разработчика, построенный на основе открытой платформы Backstage. Этот подход платформы nhằm создать единый слой абстракции, позволяющий инженерам сосредоточиться на логике бизнеса, а не на инфраструктуре. После оценки различных решений Pinterest выбрала Backstage из-за сильной поддержки сообщества, архитектуры плагинов и активного развития. PinConsole интегрируется с внутренними системами аутентификации Pinterest и LDAP для унифицированной модели сущности. Архитектура использует базы данных PostgreSQL для хранения данных и применяет систему дизайна Gestalt Pinterest для обеспечения согласованности пользовательского интерфейса. Ключевым компонентом является плагин PinCompute, настраиваемая интеграция с Kubernetes, которая упрощает управление нагрузками с помощью абстракций, специфических для Pinterest. Личные виджеты домашней страницы, такие как интеграция с GitHub,urther улучшают опыт разработчика, уменьшая переключение контекста и предоставляя релевантную информацию.
CdXz5zHNQW_JMlsyqEFEB.png
Инфраструктура поиска Pinterest, Manas, была мигрирована на Kubernetes, но была обнаружена проблема с производительностью: один из миллиона поисковых запросов занимал в 100 раз больше времени, чем обычно. Проблема была исследована, и выяснилось, что причиной является процесс мониторинга cAdvisor. cAdvisor каждые 30 секунд сканировал всю таблицу страниц для расчета общего объема памяти, к которому обращался процесс, что вызывало конфликт с ресурсоемкой обработкой конечных узлов в Manas. Это приводило к скачкам задержки в поисковых запросах. Расследование включало профилирование поисковых систем, отладку проблем производительности, изучение функций ядра Linux и управления памятью. Первопричиной было определено оценивание размера рабочего набора (WSS) cAdvisor, которое было включено по умолчанию и вызывало конфликты памяти. Проблема была решена путем отключения оценивания WSS cAdvisor для всех узлов PinCompute. Это исправление стало важной вехой для платформы Kubernetes Pinterest, позволив перенести на нее другие онлайн-сервисы. Расследование подчеркнуло важность изоляции ресурсов, сужения области проблемы и использования стратегий отладки "черного ящика". Этот опыт также показал, что иногда достаточно "достаточно хорошего" решения, и нет необходимости находить идеальное решение, чтобы двигаться вперед.
CdXz5zHNQW_dc6w46JhEJ.png
Команда инженеров по обработке данных Pinterest создает новую масштабную платформу для обработки данных, которая заменит их нынешнюю платформу на базе Hadoop, Monarch. Команда исследовала системы на базе Kubernetes в качестве замены из-за их растущей популярности и увеличения использования в сообществе Big Data. Новая платформа должна была соответствовать определенным критериям, включая обширную поддержку контейнеров, выполнение пользовательского форка Spark от Pinterest и снижение операционных расходов и затрат на обслуживание. Команда провела комплексную оценку запуска Spark на различных платформах и склонялась к фреймворкам, ориентированным на Kubernetes, из-за их преимуществ, включая изоляцию и безопасность на основе контейнеров, простоту развертывания и встроенные фреймворки. Kubernetes предоставляет более детальную поддержку управления контейнерами и развертывания, чем другие системы, но не имеет встроенной поддержки управления данными, хранения и обработки. Текущая модель развертывания команды в Hadoop громоздка, и они движутся к более простому подходу с использованием Terraform, образов контейнеров и Helm. Новая платформа будет использовать Kubernetes и EKS для замены Monarch, что приведет к ряду проблем, включая интеграцию EKS в существующую среду Pinterest и поиск замены компонентов Hadoop. Команда создала новую платформу, Moka, которая способна обрабатывать пакетные рабочие нагрузки Spark, доступные только для нечувствительных данных, и в будущем добавит больше функциональности. Первоначальная высокоуровневая архитектура Moka включает систему, способную обрабатывать пакетные рабочие нагрузки Spark, с заданиями, которые отправляются и обрабатываются через ряд компонентов, включая Spinner, Archer и Spark Operator. Команда предоставит более подробную информацию о ключевых аспектах своей платформы, ориентированных на приложения, в следующей части своей серии статей в блоге.
CdXz5zHNQW_bbfzbQhJcm.png
В Pinterest инженеры машинного обучения (ML) сталкиваются с трудностями при оптимизации разработки функций, стратегий выборки и экспериментов с метками из-за медленных конвейеров данных, дорогих итераций функций и неэффективного использования вычислительных ресурсов. Чтобы решить эти проблемы, Pinterest расширил возможности Ray за пределы обучения до разработки функций, выборки и моделирования меток. Традиционная инфраструктура машинного обучения была ограничена медленными конвейерами данных, дорогими итерациями функций и неэффективным использованием вычислительных ресурсов. Pinterest представил стек инфраструктуры машинного обучения на основе Ray, сосредоточившись на четырех основных улучшениях: создании родного API конвейера данных Ray, эффективном объединении данных с помощью Iceberg Bucket Joins, сохранении данных для эффективной итерации и оптимизации Ray Data для больших рабочих нагрузок. Новый рабочий процесс ML, основанный на Ray, уменьшает время итераций ML в 10 раз, значительно сокращая затраты на инфраструктуру. Родный API конвейера данных Ray позволяет разрабатывать функции, выборку и преобразования меток непосредственно в Ray, устраняя необходимость в заполнении Spark. Iceberg Bucket Joins обеспечивают быстрое и эффективное объединение функций из различных источников без предварительного вычисления больших таблиц. Сохранение данных позволяет эффективно итерировать, кэшируя преобразованные функции и повторно используя их при необходимости. Оптимизации Ray Data обеспечили ускорение в 2-3 раза в различных конвейерах, а новый рабочий процесс разблокировал более масштабируемую, эффективную и экономически эффективную инфраструктуру машинного обучения в Pinterest.
CdXz5zHNQW_vBYaC4X7rO.png
Pinterest использует онлайн-ближайших соседей (ANN) для извлечения рекламы, но офлайн-ANN также ценен для крупномасштабной обработки данных и экономически эффективных операций. Офлайн-ANN предварительно вычисляет кандидатов офлайн, идеально для сценариев с высокой пропускной способностью и низкой задержкой ответов на запросы и относительно статичного запроса контекста. Pinterest успешно применил онлайн, но сталкивается с трудностями при расширении инвентаря рекламы. Миграция с иерархического навигируемого маленького мира (HNSW) на алгоритм инвертированного файла (IVF) позволяет создать более крупный индекс уровня, но увеличивает затраты. Офлайн-ANN выигрывает от обильных вычислительных ресурсов и терпимости к задержкам, эффективен для генераторов кандидатов статических запросов контекстов. Основное отличие между онлайн- и офлайн-подходами - это время поиска ANN. Офлайн-ANN имеет преимущества, включая экономическую эффективность и масштабируемость, но и недостатки, включая ограничения в реальном времени и фиксированных соседей. Pinterest оценил офлайн-ANN-основанную извлечение в нескольких случаях использования, включая рекламу похожих элементов и визуальное вложение. Офлайн-ANN показал лучшие показатели вовлеченности и конверсии, и Pinterest активно разрабатывает свою собственную офлайн-ANN-фреймворк и платформу для будущих достижений.
CdXz5zHNQW_OYKi1HZH8r.png
Домашняя лента Pinterest играет решающую роль в привлечении пользователей и открытии нового контента, и для ранжирования пинов она использует двухэтапный процесс, основанный на интересах пользователей и релевантности пинов. Модель Pinnability использует нейронную сеть для обработки различных сигналов о пинах, контексте и пользователях, но она имеет ограничения в моделировании поведения пользователей на протяжении всего жизненного цикла. Модель TransActV2 решает эти проблемы, используя длинные последовательности действий пользователей, интегрируя функцию потери Next Action Loss (NAL) и применяя масштабируемые решения для развертывания. TransActV2 может моделировать до 16 000 действий пользователей, интегрирует явные признаки действий и хранит действия без потерь, используя квантование int8. Модель использует многоголовую, точечную многозадачную сеть поверх широкого и глубокого стека и вводит функцию потери Next Action Loss для улучшения прогнозирования действий пользователей. Функция NAL ставит перед моделью задачу предсказания не только вероятности взаимодействия, но и того, что пользователь сделает дальше. Модель достигает значительных улучшений в автономных и онлайн-метриках, включая увеличение попаданий в топ-3 репинов на 13,31% и увеличение репинов на 6,35%. Инженерные решения модели в промышленных масштабах обеспечивают эффективное обслуживание и развертывание, достигая снижения задержки выполнения модели p99 на 75-81% и снижения сквозной задержки вывода на 103-338x. Реальное влияние TransActV2 огромно: миллионы дополнительных значимых взаимодействий и значительные улучшения пользовательского опыта.
CdXz5zHNQW_kxoAAaP5LS.jpeg
Инфраструктура больших данных использует Hadoop YARN на AWS с группами автомасштабирования (ASG) для обработки больших объемов данных. Компания использует Terraform для создания и управления кластерами, но масштабирование в (уменьшение) является сложным процессом, который требует ручных шагов. Для упрощения этого процесса Pinterest ввела Центр управления Hadoop (HCC), который позволяет автоматически масштабировать в и из кластеров. До HCC масштабирование в involved трудоемкий и ошибочно процесс выбора узлов для декомиссии, добавления их в файлы исключений и затем завершения их работы. HCC упрощает этот процесс, позволяя пользователям указать желаемый размер ASG, а инструмент обрабатывает остальное. HCC также интегрирует другие полезные инструменты для управления кластерами, включая отображение статуса узлов, отчетность о приложениях YARN и детали подсети и группы безопасности. Архитектура HCC состоит из узла-менеджера и рабочих узлов, где менеджер действует как посредник и кэш. Сервер операций Hadoop (HOS) является ядром HCC, который выполняет тяжелую работу по обновлению кэша JMX, поддержанию соединений тканей и обновлению файлов исключений. HCC периодически запрашивает и консолидирует JMX-данные, чтобы принимать решения о том, что делать, и управляет процессом декомиссии узлов.
CdXz5zHNQW_GmhHD5ubWA.png
Внутренние опросы разработчиков Pinterest показали, что техническая документация является одной из главных проблем, основные вопросы которой сводятся к качеству и доступности. Традиционные решения, такие как "документационные марафоны" и страстные призывы от старших руководителей, не принесли устойчивых улучшений. В 2021 году Pinterest решил попробовать новый подход, изучая различные стратегии для улучшения инструментов и процессов документирования, с акцентом на стратегию "документация как код". Эта инициатива, получившая название PDocs, была направлена на повышение качества технической документации и преобразование культуры документирования в Pinterest. Философия "документация как код" предполагает написание документации с использованием тех же процессов, что и для кода, включая использование языков разметки, системы контроля версий, инструментов для ревью кода и генераторов статических сайтов. Приняв эту стратегию, Pinterest стремился решить проблемы с документацией, поощряя правильную практику документирования, контроль качества и доступность. PDocs, созданный на заказ генератор статических сайтов, был разработан для автоматического объединения проектов документации из различных файловых путей и репозиториев, генерируя единый централизованный сайт документации. PDocs предоставляет разработчикам возможность просто добавить файл конфигурации и файл Markdown в любой репозиторий, и он появится на централизованном сайте документации после слияния. Интерфейс PDocs был разработан с учетом конкретных проектов, с такими функциями, как добавление в избранное, недавно просмотренные и настройка "опубликовано" или "черновик", чтобы поддерживать доверие читателей.
CdXz5zHNQW_I5dnAJn3pO.png
Pinterest — это уникальная платформа, где пользователи, известные как пиннеры, находят вдохновение и идеи для различных аспектов своей жизни. Цель платформы — предоставить персонализированный опыт, показывая пользователям контент, который соответствует их интересам и запросам. Подход Pinterest к персонализации отличается от других платформ, поскольку он ставит приоритет качественному времяпрепровождению над временем, проведенным на платформе. Компания считает, что необходим баланс между различными подходами к ранжированию контента, включая явные сигналы вовлеченности, правила сообщества и персонализацию на основе опросов. Pinterest использует опросы для сбора отзывов от пользователей и создания более здорового и вдохновляющего опыта. Опросы платформы разработаны так, чтобы быть строгими и эффективными, команда экспертов следит за тем, чтобы опросы были хорошо спроектированы и полезны. Опросы сыграли важную роль в том, чтобы помочь Pinterest создать позитивный и вдохновляющий опыт для пользователей, при этом недавние исследования показывают, что платформа лидирует в отрасли с точки зрения ее влияния на благополучие пользователей. Подход Pinterest к персонализации руководствуется принципами "Обязательства вдохновленного интернета", которое призывает компании уделять первостепенное внимание благополучию пользователей и создавать более здоровую интернет-среду. Используя опросы и уделяя первостепенное внимание благополучию пользователей, Pinterest доказывает, что можно создать более безопасный и здоровый онлайн-опыт. В целом, уникальный подход Pinterest к персонализации и его приверженность благополучию пользователей отличают его от других платформ социальных сетей.
CdXz5zHNQW_xMjUEWeEAQ.png
Система рекомендаций главной ленты Pinterest использует многоступенчатую архитектуру, и команда достигла значительного прогресса, разработав сложный уровень предварительного ранжирования, который улучшил бизнес-показатели. Изначальный дизайн имел ограничения, включая трудозатраты на развертывание, трудности с автоматической переподготовкой модели и двухбашенную архитектуру, которая не могла эффективно учитывать взаимодействие элементов. Команда внесла основополагающие улучшения для модернизации уровня предварительного ранжирования, включая новую системную архитектуру, конвейер логирования и архитектуру обслуживания. Новый дизайн включает в себя подкомпонент уровня запроса и подкомпонент уровня элемента, которые совместно обучаются и разделяются во время обслуживания. Команда также внедрила конвейер логирования на ранней стадии воронки, чтобы отличать предварительное ранжирование от ранжирования и передавать непредвзятые данные в процесс обучения. Архитектура обслуживания включает архитектуру "корень-лист" для снижения накладных расходов на ЦП и память. Команда также использует дистилляцию модели, чтобы лучше согласовать модель предварительного ранжирования с ранжировщиком L2. Онлайн-эксперименты показали значительные успехи в вовлеченности пользователей, и команда также работает над созданием фреймворка автоматической переподготовки, чтобы использовать свежие данные о вовлеченности. Команда продолжает работу над моделированием инноваций, выборкой данных, улучшением архитектуры модели, исследованием функций потерь и оптимизацией обслуживания.
CdXz5zHNQW_P7QrX8S0r6.png
Миссия Pinterest - вдохновлять пользователей на создание любимой жизни, для чего используются самые современные модели рекомендаций и рекламы, обученные на десятках петабайт данных. Эти модели создают персонализированные рекомендации, показывая пользователям контент, который соответствует их интересам. Экспериментирование с функциями - обычная задача, и первым шагом является включение новых функций в обучающий набор данных. Наиболее простым методом включения признаков является Forward Logging, однако этот метод сопряжен с такими проблемами, как высокая стоимость календарного дня, высокая стоимость времени разработки, отсутствие изоляции, нерациональное использование ресурсов и нестабильность. Feature Backfill - это альтернатива прямому протоколированию, которая обычно используется для решения этих проблем. В этом блоге авторы рассказывают о том, как они создали свое решение Feature Backfill Solution, используя различные техники для сокращения затрат и времени итераций до 90 раз. Авторы разработали первоначальное решение по засыпке признаков с помощью Spark для материализации признаков в учебных таблицах, которое работает как многократно используемая группа Airflow DAG, запускаемая ML-инженерами по требованию. Однако это решение имеет такие проблемы, как отсутствие одновременного заполнения, высокая стоимость вычислений и ручное управление разделами. Для решения этих проблем авторы разработали версию v2, применив двухэтапный подход к засыпке, который упрощает процесс до двух ключевых этапов: Feature Staging и Feature Promotion.
CdXz5zHNQW_YKhzxUkvad.png
Платформа экспериментирования Pinterest, Helium, ежедневно проводит эксперименты, генерируя.insights для принятия решений по продуктам и бизнес-стратегиям. Однако, по мере роста масштаба экспериментирования возникли проблемы, такие как задержки в инжекции данных вверх по потоку, трудности в заполнении пропущенных метрик и частые проблемы масштабируемости. Для решения этих задач Pinterest разработала Единый Динамический Фреймворк (UDF), масштабируемый и устойчивый решений, который преобразовал способ вычисления метрик экспериментов. UDF поддерживает 100 раз больше метрик и спроектирован для масштабирования до 500 раз в будущем, ускоряя доставку метрик и уменьшая инженерные усилия с месяцев до дней. Фреймворк обеспечивает стандартизацию метрик, снимая инфраструктурные проблемы и сложности создания конвейеров. UDF решает проблемы зависимостей вверх по потоку, сложность заполнения и проблемы масштабируемости, позволяя быстрее экспериментировать и инновационно. Фреймворк улучшил скорость разработки, гибкость, масштабируемость, скорость и надежность, стимулируя инновации и бизнес-результаты. Стандартизация вычисления метрик по всей платформе экспериментирования привела к огромным улучшениям, наделяя экспериментирование и доставляя ценность пользователям. UDF революционизировал вычисление метрик экспериментов в Pinterest, и его влияние будет продолжать расти в будущем.
CdXz5zHNQW_HsQvhLZ0Fu.png
Архитектура модели Multi-gate Mixture-of-Experts (MMoE) улучшает моделирование вовлеченности рекламы, динамически распределяя ресурсы между специализированными субсетями (экспертами). Это улучшает эффективность, обобщение и многозадачное обучение по сравнению с одиночными моделями. MMoE использует экспертов с разными архитектурами, такими как DCNv2, MaskNet и FinalMLP, стратегически выбранными на основе производительности и стоимости. Модель также использует смешанную точность вывода и легкие слои шлюзов, чтобы уменьшить инфраструктурные затраты без ущерба для производительности. Дистилляция знанийurther улучшает модель, передавая знания от существующих производственных моделей к новым моделям. Это уменьшает пробелы в производительности, вызванные ограниченными периодами хранения данных, и позволяет новым моделям учиться от недоступных исторических данных. Дистилляция улучшает как офлайн, так и онлайн метрики значительно, превосходя базовую модель DCNv2. Техника является полезной как при пакетном обучении, так и при повторном обучении моделей, таких как обновления функций. Однако дистилляция удаляется при инкрементальном обучении, чтобы предотвратить переобучение. Комбинированный подход MMoE и дистилляции знаний приводит к значительным улучшениям в качестве соответствия рекламы и пользовательского опыта. Это приводит к более релевантным рекомендациям и улучшению вовлеченности пользователей на платформе.
CdXz5zHNQW_Eh609KFgJk.png
"Компания Pinterest перенесла 3,7 миллиона строк кода из Flow в TypeScript за восемь месяцев, что привело к улучшению безопасности типов, опыта разработчика и процесса найма. Изначально в 2016 году компания выбрала Flow вместо TypeScript из-за его постепенного внедрения и бесшовной интеграции с React. Однако, когда индустрия остановилась на TypeScript как на стандарте для проверки типов JavaScript, Pinterest решила перейти на него из-за лучшей поддержки сообщества, языковых функций и доступности талантов. Миграция была выполнена с помощью подхода "большого взрыва", разделенного на три фазы: настройка, преобразование и интеграция. Фаза настройки включала в себя конфигурацию TypeScript и @typescript-eslint, а фаза преобразования - перенос зависимостей, запуск codemod и подавление ошибок ESLint. Фаза интеграции была сосредоточена на адаптации существующих систем для работы в новой среде TypeScript. Компания написала скрипт для автоматизации всего процесса, минимизируя конфликты слияния и ручное вмешательство. После проверки миграции с помощью ежедневного автоматического тестирования, нескольких раундов ручного тестирования и статического анализа byte-for-byte, Pinterest успешно развернула ветку TypeScript. Компания многому научилась у открытого сообщества и внесла вклад в codemod flow-to-typescript от Stripe. Опыт Pinterest служит ценным уроком для других компаний, рассматривающих аналогичную миграцию."
CdXz5zHNQW_u2LVnNpu5X.png
Pinterest, визуальный поисковый движок, работает на AWS и использует экземпляры Amazon EC2 для своего вычислительного флота. Компания определила значительную проблему в управлении своей инфраструктурой EC2, особенно для своих онлайн-систем хранения, из-за отсутствия четких представлений о производительности сети EC2 и ее влиянии на надежность и производительность приложений. Чтобы решить эту проблему, Pinterest разработал мониторинг производительности сети для своего флота EC2 и реализовал методы управления сетевыми всплесками, обеспечивая надежную производительность сети для критически важных онлайн-загрузок. Компания столкнулась с проблемами при обслуживании последовательности пользователей, что привело к значительным победам в вовлечении пользователей, но привело к задержкам при обслуживании и таймаутам приложений. Во время миграции экземпляра EC2 Pinterest наблюдал значительное ухудшение производительности во многих кластерах, что привело к таймаутам приложений. Компания обнаружила, что экземпляры EC2 испытывали сетевое ограничение из-за микровсплесков, превышающих сетевой лимит. Чтобы сделать поведение ограничения сети EC2 более прозрачным, Pinterest обновил свои экземпляры для доступа к сырым счетчикам на экземпляре EC2 с помощью инструментов, таких как ethtool. Компания изменила свой внутренний агент сбора метрик, чтобы собирать эти счетчики и передавать их в хранилище метрик. Выпустив эти метрики ENA для всего своего флота EC2, Pinterest получил беспрецедентную видимость в формировании трафика AWS и реализовал различные оптимизации для смягчения ограничения сети. Компания также исследовала методы обработки сетевых всплесков, включая тонкую ограничение скорости S3, настройку резервного копирования данных и сетевую компрессию.
CdXz5zHNQW_DGfWhUSLvs.jpeg
Поиск в Pinterest - это ключевая поверхность, где пользователи могут обнаружить вдохновляющий контент, соответствующий их информационным потребностям, а релевантность поиска измеряет, насколько хорошо результаты поиска соответствуют поисковому запросу. Чтобы улучшить модель релевантности поиска, используется 5-уровневое руководство для измерения релевантности между запросами и Pin'ами. Для прогнозирования релевантности Pin'а к запросу, вместе с текстом Pin'а, используется кросс-энкодер языковая модель, и задача формулируется как многоклассовая задача классификации. Модель дообучается с помощью данных, аннотированных людьми, минимизируя перекрестную энтропию.Для представления каждого Pin'а используется разнообразный набор текстовых особенностей, включая заголовки и описания Pin'ов, синтетические подписи к изображениям, токены запросов с высоким уровнем вовлеченности, названия досок, созданных пользователями, и названия и описания ссылок. Однако кросс-энкодерная LLM-основанная классификаторная модель трудна для масштабирования для поиска в Pinterest из-за соображений реального времени и стоимости. Поэтому используется дистилляция знаний для дистилляции LLM-основанной модели учителя в легкую модель релевантности ученика.Модель ученика использует особенности уровня запроса, особенности уровня Pin'а и особенности взаимодействия запроса и Pin'а для прогнозирования оценок релевантности по 5-балльной шкале. Дистилляция знаний и полуавтоматическое обучение используются для обучения модели ученика, что эффективно использует огромные объемы изначально неаннотированных данных и расширяет данные на широкий спектр языков со всего мира.Офлайн-эксперименты демонстрируют эффективность каждого решения моделирования, включая сравнение языковых моделей, важность обогащения текстовых особенностей и масштабирование обучающих меток посредством дистилляции. Онлайн-результаты показывают улучшение на +2,18% в релевантности ленты поиска, измеренной по nDCG@20, и значительный рост глобальных показателей выполнения поиска.Предлагаемый конвейер моделирования релевантности эффективно обобщается на языки, не встречавшиеся во время обучения, и многолингвальная LLM-основанная модель релевантности учителя обобщается на незнакомые языки. Будущая работа будет исследовать интеграцию служебных LLM, моделей vision-and-language и стратегий активного обучения для динамического масштабирования и улучшения качества обучающих данных.
CdXz5zHNQW_lGLj8VappE.png