📌
Social & Visual Search · Pinterest

Pinterest: один эмбеддинг вместо трёх — +46,7% сохранений в Lens и втрое меньше ML-систем на поддержке

В офлайн-оценке асессорами универсальный эмбеддинг поднял точность precision@5 на +22,2% в Flashlight, +110,1% в Lens и +72,1% в Shop-the-Look относительно специализированных моделей. Самый большой прирост получил самый сложный домен — Lens: мультизадачное обучение на смешанных данных дало именно то обобщение, которого не хватало камерным фотографиям. Статья честно показывает и дисперсию: внутри Shop the Look по категориям разброс от −33,3% до +249,7% — усреднённый выигрыш не означает выигрыша везде. Онлайн A/B-тест в Lens подтвердил офлайн-картину ростом всех продуктовых метрик: сохранения (repins) +46,7%, переходы +35,0%, раскрытия карточек +32,7%, доля вовлекающихся пользователей — от +16,3% до +26,7%. Операционный итог: вместо трёх моделей, трёх пайплайнов обучения и трёх инфраструктур извлечения команда поддерживает одну; в статье прямо говорится, что развёртывание универсального эмбеддинга «кардинально снизило операционные и инженерные затраты» — при одновременном росте качества. На наш взгляд, ключевой урок кейса контринтуитивен: консолидация моделей обычно воспринимается как компромисс «проще, но хуже», а у Pinterest универсальная модель обыграла специалистов на их собственных задачах. Механика понятна из ML-теории — мультизадачность работает как регуляризация, а данные одного продукта становятся аугментацией для другого, — но масштаб эффекта (+110% в Lens) стал возможен потому, что задачи оказались достаточно родственными, а самый слабый домен получил больше всего «чужих» данных. Переносить вывод «один эмбеддинг всегда лучше» на любой набор задач мы бы не стали: сама статья с разбросом по категориям Shop the Look это и демонстрирует. Второе наше наблюдение: этот кейс — про экономику ML-платформ, а не только про качество. При 600+ миллионах визуальных поисков в месяц каждая лишняя модель — это переиндексации миллиардов изображений и дублирующий сервинг; втрое меньший парк систем ускоряет каждую следующую итерацию. Консолидация инфраструктуры — из тех редких инвестиций, что одновременно снижают затраты и повышают скорость команды; отметим лишь, что онлайн-цифры опубликованы только для Lens, и все результаты — самоотчёт компании.

+46.7%
сохранений в Lens (A/B)
+110%
precision@5 в Lens
600M+
визуальных поисков в месяц
3→1
эмбеддингов на поддержке
Источники
Проверено: 2026-07-11

Контекст

Pinterest — платформа, для которой визуальный поиск не фича, а суть продукта: пользователь приходит искать идеи, у которых часто нет словесного описания. Компания строила это направление годами: Related Pins (2014), Similar Looks (2015), Flashlight (2016) — поиск похожего внутри любого пина, Lens (2017) — поиск по фотографии с камеры телефона, а в 2019 году — автоматизированный Shop the Look, находящий конкретные товары в интерьере или образе. К моменту публикации кейса платформа насчитывала 250+ миллионов активных пользователей в месяц, корпус из 200+ миллиардов «идей», а визуальный поиск обслуживал более 10 внутренних клиентов-продуктов. Масштаб запросов сама команда оценивала в статье на KDD 2019 как 600+ миллионов визуальных поисков в месяц (в сопутствующем блог-посте — осторожнее: «сотни миллионов»).

Оборотная сторона этой эволюции — типичный для быстрорастущих ML-организаций технический долг. Каждый новый продукт запускался со своей специализированной моделью эмбеддингов: визуальный кроппер 2015 года работал на Caffe и VGG16, Shop the Look 2018-го — уже на PyTorch и SE-ResNeXt. Стеки, датасеты и векторные пространства разошлись; командам было проще завести очередную «модель под задачу», чем улучшать общую, — и парк специализированных эмбеддингов рос.

Решение этой проблемы команда визуального поиска под руководством Эндрю Чжая описала в статье «Learning a Unified Embedding for Visual Search at Pinterest», принятой на KDD 2019, и в разборе в инженерном блоге. Это одна из первых детальных публикаций о консолидации нескольких боевых эмбеддингов в один универсальный — с полными цифрами офлайн- и онлайн-экспериментов.

Проблема

Три продукта визуального поиска — Flashlight, Lens и Shop the Look — жили на трёх отдельных специализированных эмбеддингах, и это означало утроенные затраты по всей цепочке. Каждую модель нужно обучать и версионировать отдельно; под каждую — держать собственную инфраструктуру извлечения и хранения; и главное, при каждом обновлении любой из моделей — переиндексировать миллиарды изображений каталога именно под её векторное пространство. Стоимость хранения и сервинга росла линейно с числом моделей, а скорость итераций падала: команда тратила ресурсы на поддержку зоопарка, а не на улучшение качества.

Была и более тонкая проблема: улучшения не переносились. Прогресс в модели Flashlight никак не помогал Lens и наоборот — знания, выученные на одном продукте, оставались заперты в его эмбеддинге. При этом задачи объективно разные, что и оправдывало исходную специализацию. Flashlight ищет похожее среди «чистых» каталожных изображений по сигналам вовлечённости. Lens решает задачу кратно сложнее: фотография с камеры — с бытовым освещением, случайным ракурсом и шумом — должна находить соответствия в каталожном домене; это классический domain shift. Shop the Look требует точности на уровне конкретного товара: найти не «похожий стул», а именно эту модель.

Вопрос, на который отвечала команда: может ли один универсальный эмбеддинг, обученный сразу на задачах всех трёх продуктов, сравняться со специализированными моделями — или неизбежна деградация качества в обмен на операционную простоту?

Решение

Команда обучила один универсальный эмбеддинг мультизадачным метрическим обучением (multi-task metric learning). База — свёрточная сеть SE-ResNeXt101, предобученная на ImageNet; поверх общего ствола — ветки под каждую задачу: полносвязный слой и классификационный softmax-лосс. Обучение шло одновременно на датасетах всех трёх продуктов: 800 тысяч изображений Flashlight (15 тысяч семантических классов, собранных по сигналам вовлечённости), 540 тысяч Lens (2 тысячи классов, размеченных людьми, смешанные домены — от каталожных картинок до камерных фото) и 340 тысяч Shop the Look (189 товарных классов плюс 50 тысяч instance-меток конкретных товаров).

Два инженерных модуля сделали схему практичной на масштабе Pinterest. Модуль сабсэмплинга позволил обучать классификацию на десятках тысяч классов, храня банк прокси-векторов на CPU и подгружая в GPU-память только нужную подвыборку. Модуль бинаризации (с заменой LayerNorm на GroupNorm, что оказалось критично для совместимости с мультизадачностью) сжимает вектор в бинарный код — именно бинарные эмбеддинги идут в продакшен, кратно снижая стоимость хранения и скорость поиска по миллиардам изображений. Инфраструктура обучения — PyTorch DistributedDataParallel с mixed-precision (FP16, Apex): типовой прогон — 9 эпох на восьми Tesla V100, оптимизатор SGD с momentum 0,9.

Принципиальный продуктовый выигрыш архитектуры: единое векторное пространство обслуживает все сценарии поиска через общую инфраструктуру извлечения. Одна переиндексация каталога — вместо трёх; одно улучшение модели автоматически достаётся всем продуктам и более чем десяти внутренним клиентам визуального поиска.

Проверка велась на двух уровнях. Офлайн — и по автоматическим метрикам на бинарных эмбеддингах (например, precision@1 для Shop the Look вырос с 33,0% у специализированной модели до 52,8% у универсальной), и по оценкам асессоров на реальных запросах. Онлайн — A/B-тест в продукте Lens, самом сложном по домену: измерялись сохранения (repins), переходы, раскрытия карточек и доля вовлекающихся пользователей.

Результат

В офлайн-оценке асессорами универсальный эмбеддинг поднял точность precision@5 на +22,2% в Flashlight, +110,1% в Lens и +72,1% в Shop-the-Look относительно специализированных моделей. Самый большой прирост получил самый сложный домен — Lens: мультизадачное обучение на смешанных данных дало именно то обобщение, которого не хватало камерным фотографиям. Статья честно показывает и дисперсию: внутри Shop the Look по категориям разброс от −33,3% до +249,7% — усреднённый выигрыш не означает выигрыша везде.

Онлайн A/B-тест в Lens подтвердил офлайн-картину ростом всех продуктовых метрик: сохранения (repins) +46,7%, переходы +35,0%, раскрытия карточек +32,7%, доля вовлекающихся пользователей — от +16,3% до +26,7%. Операционный итог: вместо трёх моделей, трёх пайплайнов обучения и трёх инфраструктур извлечения команда поддерживает одну; в статье прямо говорится, что развёртывание универсального эмбеддинга «кардинально снизило операционные и инженерные затраты» — при одновременном росте качества.

На наш взгляд, ключевой урок кейса контринтуитивен: консолидация моделей обычно воспринимается как компромисс «проще, но хуже», а у Pinterest универсальная модель обыграла специалистов на их собственных задачах. Механика понятна из ML-теории — мультизадачность работает как регуляризация, а данные одного продукта становятся аугментацией для другого, — но масштаб эффекта (+110% в Lens) стал возможен потому, что задачи оказались достаточно родственными, а самый слабый домен получил больше всего «чужих» данных. Переносить вывод «один эмбеддинг всегда лучше» на любой набор задач мы бы не стали: сама статья с разбросом по категориям Shop the Look это и демонстрирует.

Второе наше наблюдение: этот кейс — про экономику ML-платформ, а не только про качество. При 600+ миллионах визуальных поисков в месяц каждая лишняя модель — это переиндексации миллиардов изображений и дублирующий сервинг; втрое меньший парк систем ускоряет каждую следующую итерацию. Консолидация инфраструктуры — из тех редких инвестиций, что одновременно снижают затраты и повышают скорость команды; отметим лишь, что онлайн-цифры опубликованы только для Lens, и все результаты — самоотчёт компании.

Технологический стек
Multi-task metric learningSE-ResNeXt101 (ImageNet pretrain)Модуль сабсэмплинга (прокси-банк на CPU)Бинаризация эмбеддингов (GroupNorm)PyTorch DDP + FP16 (Apex), 8x Tesla V100Единая инфраструктура извлеченияFlashlight / Lens / Shop-the-Look
Сроки
2014 — Related Pins; 2015 — Similar Looks и визуальный кроппер (Caffe, VGG16); 2016 — Flashlight; 2017 — Lens (поиск по фото с камеры); 2018 — Shop the Look на PyTorch/SE-ResNeXt — парк специализированных эмбеддингов разрастается. 2019 — унификация: статья принята на KDD 2019, препринт arXiv — 5 августа 2019, разбор в инженерном блоге — 8 августа 2019; автоматизированный Shop the Look запущен в том же году.

Уроки для индустрии

  1. Консолидация моделей — это и качество, и экономика: один мультизадачный эмбеддинг обыграл три специализированных по релевантности и втрое сократил поддерживаемую инфраструктуру.
  2. Мультизадачное обучение работает как регуляризация: данные одного продукта улучшают качество для остальных — самый большой прирост получил самый «сложный» домен (Lens, +110% precision@5).
  3. Смотрите на дисперсию, а не только на среднее: внутри Shop the Look разброс по категориям — от −33,3% до +249,7%; усреднённый выигрыш не гарантирует выигрыша в каждом сегменте.
  4. Проверяйте и офлайн (асессоры), и онлайн (A/B): у Pinterest прирост точности подтвердился ростом всех продуктовых метрик вовлечённости.
  5. Бинаризация эмбеддингов — недооценённый рычаг экономики: бинарные коды кратно удешевляют хранение и поиск по миллиардам изображений; дьявол в деталях (GroupNorm вместо LayerNorm).
  6. Чем меньше моделей, тем быстрее итерации: одно улучшение эмбеддинга автоматически прокачивает все продукты визуального поиска и 10+ внутренних клиентов сразу.
  7. Инвестиции в унификацию окупаются на масштабе: при 600M+ визуальных поисков в месяц каждая переиндексация и каждая лишняя модель стоят очень дорого.

Частые вопросы

Что дал Pinterest переход на единый визуальный эмбеддинг?

Рост качества всех трёх продуктов визуального поиска (precision@5: +22% Flashlight, +110% Lens, +72% Shop-the-Look), рост вовлечённости в A/B-тесте Lens (+46,7% сохранений, +35% переходов) и кратное снижение затрат на инфраструктуру — одна модель вместо трёх.

Как Pinterest обучил один эмбеддинг под три разных продукта?

Мультизадачным метрическим обучением: сеть SE-ResNeXt101 с общим стволом и ветками под задачи учится одновременно на данных Flashlight (800K изображений, 15K классов), Lens (540K, 2K классов) и Shop-the-Look (340K, 189 классов + 50K instance-меток), формируя общее векторное пространство.

Почему универсальная модель оказалась лучше специализированных?

Мультизадачное обучение действует как регуляризация: данные каждого продукта становятся дополнительным сигналом для остальных. Больше всего выиграл самый сложный домен — Lens (+110% precision@5), где фотографиям с камеры не хватало разнообразия обучающих данных.

Как единый эмбеддинг работает на масштабе миллиардов изображений?

В продакшен идут бинаризованные векторы (модуль бинаризации с GroupNorm), что кратно снижает стоимость хранения и ускоряет поиск, а модуль сабсэмплинга с прокси-банком на CPU позволяет обучать классификацию на десятках тысяч классов на восьми GPU Tesla V100.

Каков масштаб визуального поиска в Pinterest?

По данным статьи KDD 2019 — более 600 миллионов визуальных поисков в месяц при 250+ миллионах активных пользователей и корпусе из 200+ миллиардов пинов; блог-пост оценивал масштаб осторожнее — «сотни миллионов» поисков в месяц.

← Кейсы