RSS Etsy Engineering | Code as... Заметка

RSS Etsy Engineering | Code as Craft

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

Трэд заметок

Рынок Etsy предлагает разнообразные изделия ручной работы и уникальные продукты, что требует тонкого понимания для эффективного поиска и рекомендаций. Текущая информация о продуктах, хотя и богата, часто неструктурирована, и моделям машинного обучения сложно использовать ее в полной мере. Основная задача заключается в преодолении разрыва между необработанными данными и сложными деталями, определяющими привлекательность каждого продукта. Решение включает в себя использование подхода обучения с подкреплением и контрастного сигнала. Метод тонко настраивает LLM для создания кратких описаний продуктов, подчеркивающих отличительные особенности, используя данные о взаимодействии покупателей. Это достигается путем обучения модели расставлять приоритеты деталей на основе выбора покупателей, улучшая прогнозы релевантности. Модель обучается на данных о взаимодействии при поиске, вознаграждая описания, которые выделяют особенности, побудившие покупателя выбрать одно объявление, а не другое. Это обучение с подкреплением побуждает модель создавать описания, которые приводят к улучшению показателей релевантности поиска. Оценки, проведенные людьми, и количественное автономное тестирование продемонстрировали высокое качество описаний и их влияние на последующие модели, повышая производительность. Подход фокусируется на понимании продуктов на основе поведения покупателей, а не жестких определений, отражая творчество продавцов. Улучшенное понимание продукта в конечном итоге помогает покупателям находить продукты, которые соответствуют их вкусам, тем самым улучшая процесс покупок. Полученные краткие описания выделяют ключевые характеристики, которые отличают объявления аналогичных продуктов. Проект продемонстрировал высокую способность выявлять важные детали продукта по сравнению с использованием только простых текстовых функций, таких как ключевые слова.
CdXz5zHNQW_UugGSCbu5d.jpeg
Etsy улучшила свою модель ранжирования рекламы в поиске, чтобы повысить вовлеченность покупателей и видимость продавцов. Целью было лучше предсказать намерение совершить покупку, отображая более релевантные рекламные списки. Это было достигнуто за счет двух основных улучшений: интеграции архитектуры Multigate Mixture of Experts (MMoE) и использования добавления в корзину в качестве вспомогательного сигнала.Оригинальная многозадачная модель была оптимизирована для коэффициента кликабельности (CTR) и коэффициента конверсии после клика (PCCVR), но страдала от скудости данных на более поздних этапах процесса покупки. MMoE решает проблему "эффекта качелей" при многозадачном обучении, когда оптимизация одной задачи может ухудшить другую. Она вводит специализированные "экспертов" и "ворота", которые позволяют задачам учиться уникальным закономерностям, сохраняя при этом выгоду от общих представлений.Архитектура MMoE включает в себя общую нижнюю часть, а затем экспертов, которые являются параллельными подсетями, обучающими разные закономерности данных. Каждая задача имеет сеть управления, которая контролирует, как она объединяет выходы экспертов, оптимизируя как CTR, так и PCCVR.Настройка MMoE включала эксперименты с количеством, размером и типом экспертов. Гетерогенные эксперты (на основе DCN и MLP) показали улучшенные метрики. Среди проблем было обеспечение использования и специализации экспертов.Техники регуляризации, такие как dropout экспертов и масштабирование температуры, были изучены для решения этих проблем. Масштабирование температуры, которое смягчает распределение вероятностей выбора эксперта, оказалось более эффективным в содействии как использованию, так и специализации.Помимо кликов и покупок, Etsy признала ценность других взаимодействий пользователей, таких как добавление в корзину и избранное. Эти действия указывают на высокое намерение совершить покупку и более частые, чем покупки, предлагая более сильные сигналы для модели.Введение вспомогательных задач, в частности добавления в корзину, помогает модели учиться более общим представлениям вовлеченности пользователей. Это использует более частые сигналы для пользы более скудного прогнозирования покупок, в конечном итоге приводя к более эффективной системе ранжирования.
CdXz5zHNQW_Ply7jT2xQK.jpeg
Архитектура базы данных Etsy с 2010 года опиралась на шардированные кластеры MySQL, управляемые собственной ORM. Эта система, состоящая из тысяч шардов, сталкивалась с проблемами ручного масштабирования и единой точкой отказа в индексной базе данных. Индексная база данных хранила отображения шардов, что мешало ORM эффективно маршрутизировать запросы и вызывало потенциальные сбои на сайте. Чтобы решить эти проблемы, Etsy внедрила Vitess, инструмент масштабирования баз данных с открытым исходным кодом, в 2018 году. Они реализовали пользовательские vindexes в Vitess для репликации существующей логики шардирования, избегая полной миграции данных. Это включало создание vindexes поиска SQLite и гибридных vindexes для постепенного перехода. Миграция на Vitess выполнялась поэтапно, таблица за таблицей, чтобы минимизировать риски и проверить несовместимость запросов. Проблемы с транзакциями баз данных потребовали одновременной миграции связанных таблиц, подчеркивая взаимозависимости. Возможности Vitess по перекрестным запросам к шард значительно улучшили производительность, хотя разбросанные запросы тщательно управлялись. В конечном итоге, миграция на Vitess устранила единую точку отказа и упростила доступ к данным для разработчиков, одновременно обеспечив почти незаметное улучшение производительности для пользователей. Переход также значительно улучшил ручное масштабирование и включил новые функции Vitess.
CdXz5zHNQW_LPveoPxaAk.jpeg
Команда Etsy по релевантности поиска стремится помочь покупателям найти именно то, что они ищут, а продавцам — охватить этих покупателей. Они разработали фреймворк семантической релевантности для улучшения результатов поиска за пределами сигналов вовлеченности, используя большие языковые модели (LLM). Этот фреймворк использует данные, курируемые людьми, и LLM для создания категорий: релевантные, частично релевантные и нерелевантные. Система использует аннотатор LLM, модель учителя и модель ученика с различными компромиссами в точности и скорости. Эта трехуровневая система улучшает поиск, фильтруя нерелевантные листинги, обогащая функции и корректируя веса ранжирования. Фреймворк полностью развернут, и процент полностью релевантных листингов увеличился. Etsy планирует уточнить понимание релевантности, изучить более детальные метки, уменьшить усилия по аннотированию и оптимизировать свою многоступенчатую модель для дальнейшего улучшения.
CdXz5zHNQW_W7u3LIYThB.jpeg
Etsy использует онлайн-эксперименты для улучшения опыта покупателей и продавцов. Проведение экспериментов может занимать недели, что препятствует быстрой итерации. Методы снижения дисперсии, такие как CUPED, помогают сократить продолжительность эксперимента. Etsy первоначально внедрила CUPED в 2021 году, добившись скромного снижения дисперсии. Затем они внедрили CUPAC, основанный на CUPED, используя машинное обучение для прогнозирования показателей результатов. CUPAC использует данные, собранные до эксперимента, в нелинейной модели для улучшения прогнозов. Это повышает точность и скорость результатов эксперимента. Etsy обучает модели LightGBM с более чем 100 признаками, собранными до эксперимента, для CUPAC. Внедрение CUPAC привело к значительному увеличению снижения дисперсии. Это привело к сокращению средней продолжительности эксперимента на 3 дня, что позволило проводить более частые тесты. Etsy планирует расширить CUPED и изучить дополнительные методы снижения дисперсии.
CdXz5zHNQW_8Udrxvk0Tf.jpeg
Etsy реализовала API правил спекуляций (SRA), чтобы значительно улучшить производительность страниц списка продуктов. Этот новый API браузера позволяет веб-сайтам инструктировать браузеры о том, как извлекать ресурсы для будущей навигации. SRA предлагает предварительное получение, которое загружает HTML, и предварительное рендеринг, который полностью загружает и рендерит страницу. Хотя предварительное рендеринг предлагает большие выгоды, предварительное получение является менее рискованным началом. SRA предоставляет более простой API, чем традиционные методы предварительного получения, и путь обновления до предварительного рендеринга. Etsy в частности использовала SRA для предварительного получения страниц списка, когда пользователи наводили курсор на органические списки на странице поиска на рабочем столе. Реализация включала добавление тега скрипта с правилами JSON для определения того, когда и что предварительно получать. Одним из ключевых уроков, извлеченных из этого опыта, было то, что SRA предварительно получает кэш страниц в памяти и кэше HTTP, в отличие от традиционного предварительного получения, которое использует только кэш HTTP. Браузер ограничивает кэш памяти двумя предварительно полученными страницами, после чего более старые страницы удаляются. Etsy обнаружила, что установка пяти минут кэширования для страниц при обнаружении запроса предварительного получения помогает смягчить это ограничение. Возникли проблемы с элементами, такими как проигрыватели видео, которые использовали тень DOM, требующие обходных путей. Установка файлов cookie во время предварительного получения могла привести к вводящим в заблуждение аналитическим данным, но это можно избежать, используя определенные заголовки HTTP. Перенаправления не отрицательно повлияли на предварительное получение, пока были установлены правильные заголовки кэширования. Изменение атрибутов href при наведении курсора могло вызвать сбой предварительного получения и удаление других закэшированных страниц. Значительным препятствием было обеспечение точности аналитики, поскольку предварительно полученные страницы не обязательно просматриваются. Etsy решила эту проблему, регистрируя события только после активации страницы и избегая загрузки ресурсов и выполнения JavaScript во время предварительного получения. Реализация привела к заметным улучшениям производительности.
CdXz5zHNQW_zYShJSRIgI.jpeg
Рынок Etsy, в котором представлены миллионы уникальных, ручных изделий от различных продавцов, сталкивается с проблемами в организации неструктурированных данных. Традиционные методы извлечения атрибутов продукции испытывали трудности с разнообразным ассортиментом и ограниченными структурированными данными. Большие языковые модели (LLM) предоставили новую возможность преобразовать неструктурированную информацию о продукции в структурированные данные. Etsy разработала масштабируемый конвейер с использованием LLM, сосредоточившись на инженерии контекста для улучшения точности извлечения атрибутов. Этот конвейер использует данные, предоставленные продавцами, примеры экспертов и таксономию Etsy. Оценка вывода LLM включает в себя генерацию "серебряных меток" и использование экспертов в области для обеспечения качества. Процесс вывода извлекает атрибуты, использует LiteLLM для регионального маршрутизации и использует Pydantic для проверки данных. Надежные системы мониторинга отслеживают состояние конвейера и метрики производительности модели. Применение атрибутов, сгенерированных LLM, к фильтрам поиска повысило вовлеченность покупателей и коэффициенты конверсии. Etsy планирует расширить использование LLM для дальнейшего улучшения опыта покупок и продаж. Конечной целью является обеспечение того, чтобы потребности покупателей и продавцов удовлетворялись с максимальной эффективностью.
CdXz5zHNQW_2IBkaI4nUO.jpeg
Etsy использует эксперименты для тестирования идей, например, предлагая бесплатное мороженое при покупках, чтобы увеличить продажи. Чтобы лучше понимать поведение пользователей, они используют сегментацию, которая позволяет проводить анализ на основе различных групп пользователей. Ранее платформа Etsy имела ограниченные предопределенные сегментации, что затрудняло углубленный анализ и замедляло получение информации. Команда разработала библиотеку сегментации, позволяющую экспериментаторам определять свои собственные сегменты, что было медленным и сложным процессом. Этот новый подход позволяет пользователям создавать сегментации, используя SQL-запросы и ключи соединения, делая их понятными и доступными для совместного использования. Перед развертыванием эти пользовательские сегментации проходят процесс валидации для обеспечения точности и безопасности. Динамическая генерация задач в конвейере данных обеспечила автоматическую обработку новых сегментаций без изменений кода. Эта трансформация привела к значительному увеличению количества доступных сегментаций. Улучшенная система обеспечивает более быстрые и глубокие выводы, позволяя командам принимать более обоснованные решения на основе данных. В целом, эти изменения сделали процесс экспериментирования Etsy более гибким и эффективным.
CdXz5zHNQW_8gTIiBrymu.jpeg
"Etsy использует большие языковые модели (LLM) для создания подробных, анонимных профилей покупателей на основе истории просмотров и покупок. Эти профили отражают тонкие интересы и цели покупок, повышая персонализацию для почти 90 миллионов покупателей на платформе. Техническая реализация включает в себя получение данных об активности пользователей, а затем побуждение LLM интерпретировать эти данные для генерации профилей. Чтобы сделать этот процесс масштабируемым и экономически эффективным, Etsy оптимизировала источники данных, сократила объем входных токенов, увеличила размеры пакетов и использовала параллельную обработку. Эти оптимизации значительно сократили время и затраты на генерацию профилей покупателей. Сгенерированные профили покупателей затем применяются для персонализации поиска посредством переписывания запросов и использования "таблеток" уточнения. Переписывание запросов обогащает поисковые запросы пользователей прогнозируемыми интересами, в то время как "таблетки" уточнения предлагают кликабельные фильтры на основе предпочтений пользователя. Etsy измеряет успех этой персонализации с помощью таких метрик, как повышение коэффициента кликабельности и коэффициента конверсии. Они также поддерживают точность профилей, динамически обновляя их на основе активности пользователей и обнаруживая смещение интересов. Будущая работа включает решение проблемы "холодного старта" для новых пользователей путем экспериментов с наследуемыми профилями. В конечном итоге Etsy стремится улучшить возможности обнаружения и создать более интуитивно понятные поисковые возможности для каждого покупателя."
CdXz5zHNQW_Nxw1u6jGOy.jpeg
В этом посте исследуется инженерия запросов с помощью крупных языковых моделей (КЯМ) для ассистирования на борде в Etsy. Основное внимание уделяется правдивости и надежности ответов, сгенерированных КЯМ, особенно в отношении вопросов, специфических для Etsy. Исследование рассмотрело два случая использования: внутренние вопросы политики путешествий и развлечений (T&E) и внешние вопросы форума сообщества продавцов Etsy. Для политики T&E КЯМ правильно ответили на примерно 86% вопросов, но оставшиеся 14% содержали фактические ошибки или вводящие в заблуждение заявления, называемые «галлюцинациями». Техники, такие как инструктаж КЯМ признавать неопределенность или объяснять свое рассуждение, были найдены для уменьшения этих галлюцинаций. В форуме сообщества Etsy, с более гетерогенными данными, точность КЯМ снизилась до примерно 72%. КЯМ работал лучше, когда запросы тесно соответствовали формулировкам в справочных документах. Исследование также подчеркнуло ограничения, где даже предоставление дополнительного контекста не решало определенные типы сложных вопросов. Запрос на получение фрагментов источника был идентифицирован как метод для флагирования потенциальных галлюцинаций КЯМ. В целом, инженерия запросов показывает перспективы, но требует тщательной разработки для обеспечения надежной помощи ИИ при на борде и извлечении информации.
Руководящий принцип Etsy — «преданность своему ремеслу» — привел к принятию Jetpack Compose, современного инструментария для создания собственных пользовательских интерфейсов, в качестве предпочтительного средства разработки их приложения для Android. К изучению и внедрению Compose был применен структурированный подход: инженеры разработали учебный план и провели информационные сессии для обучения команды. Команда дизайнерских систем создала версии компонентов внутреннего инструментария пользовательского интерфейса для Compose, обеспечив полную реализацию системы дизайна перед масштабным внедрением. Взаимодействие Compose с существующими компонентами инструментария позволило обеспечить плавный путь миграции. Команда переписала весь экран, используя Compose, что позволило им столкнуться с более широким кругом задач, таких как навигация и извлечение данных. После успешной переработки Compose был развернут для реальных пользователей, начиная со сложных нижних листов. Затем был переписан экран «Магазин» с использованием Compose, что привело к 5%-ному улучшению времени первоначального отображения экрана и улучшению взаимодействия с пользователем. Принятие Compose также повысило удовлетворенность разработчиков: инженеры сообщили о сокращении количества строк кода и упрощении тестирования. Сочетание Compose и архитектуры Macramé стало стандартным способом разработки функций для приложения. В целом, внедрение Compose в Etsy открыло возможности и повысило эффективность работы команд, несмотря на некоторые трудности обучения и проблемы на пути.
CdXz5zHNQW_mxNDOlthCn.jpeg
Etsy уделяет приоритетное внимание безопасности и доверию в своей торговой площадке, чтобы дать возможность для развития талантливым предпринимателям. С более чем 100 миллионами уникальных товаров и 7 миллионами активных продавцов, Etsy имеет команду по обеспечению доверия и безопасности, которая посвящена соблюдению правил и удалению контента, потенциально нарушившего правила. Чтобы улучшить возможности обнаружения, Etsy использует машинное обучение, включая модели обучения с учителем, которые работают с многочисленными сигналами (текстовыми и визуальными) из объявлений. Архитектура модели включает текстовые и визуальные кодеры для изучения представлений и использует нейтральный класс для не нарушивших правил объявлений. Чтобы преодолеть дисбаланс данных, используется фокусированная потеря. Оценка модели включает в себя офлайн-обучение и развертывание в производстве через тестирование A/B. Etsy постоянно совершенствует свою систему обнаружения, развертывая перспективных кандидатов офлайн и отслеживая производительность. В результате удалены более 100 000 нарушений, что дополнило другие методы обнаружения. Etsy по-прежнему привержена использованию инновационных подходов, включая большие языковые модели, для улучшения своих мер безопасности.
Миграция Etsy на Google Cloud Platform привела к созданию специализированной команды FinOps, которая стимулирует оптимизацию стоимости облачных ресурсов посредством сотрудничества как внутри, так и за пределами организации.Методология прогнозирования команды основана на метрике "Стоимость за посещение" (CPV), чтобы установить базовую линию расходов для отслеживания и выявления отклонений.Несмотря на ограничения CPV, команда FinOps отслеживает затраты с помощью внутренних инструментов и оповещений, чтобы обнаруживать внезапные скачки или постепенный рост.Регулярное сотрудничество с департаментом финансов обеспечивает соответствие между фактическими затратами и прогнозами.Стоимость увеличения быстро выявляется и устраняется посредством анализа, сотрудничества, валидации и устранения неполадок.Инициативы по оптимизации затрат включают сотрудничество между командами FinOps и инженерными командами, с фокусом на улучшении эффективности, а не только на экономии затрат.Среди недавних инициатив по оптимизации - оптимизация хранения GCS, оптимизация вычислений, увеличение автоматизации для развертывания моделей и сжатие сети.Команда FinOps уделяет приоритетное внимание улучшению видимости затрат на платформу машинного обучения, чтобы улучшить анализ ROI и выявить будущие возможности оптимизации.Независимое функционирование команды в рамках инженерного подразделения и ее фокус на глобальную, а не локальную оптимизацию способствуют успешной практике FinOps.Сильная инженерная культура Etsy, подчеркивающая эффективность и мастерство, способствует эффективности работы команды FinOps.
Etsy использует компьютерное зрение, чтобы улучшать пользовательский опыт с помощью функций, таких как визуальный поиск и рекомендации, похожие на визуальные. Эти функции требуют эффективных и выразительных визуальных представлений, получаемых с помощью моделей машинного обучения. Etsy изначально использовала EfficientNetB0, но перешла на более эффективный EfficientFormer-l3 из-за его превосходной производительности и меньших вычислительных требований. Чтобы еще больше улучшить эффективность, Etsy дообучает эти предварительно обученные основы и использует многозадачное обучение, обучая представления на нескольких задачах классификации одновременно. Схема оценки включает три задачи поиска ближайших соседей, чтобы отслеживать прогресс модели и направлять обучение. Etsy также реализовала экспериментальную схему оценки, которая использует генеративный ИИ, преодолевая разрыв между текстовыми запросами и выбранными изображениями. Чтобы обеспечить быстрое и стабильное вывод для последующих задач, Etsy использует быструю модель стабильного диффузиона, генерирующую высококачественные изображения с меньшим потреблением памяти и задержками. С помощью этих методов Etsy оптимизировала свои визуальные представления для эффективного и масштабируемого использования в различных приложениях.
Экран списка в приложении Etsy для Android, который является ключевым для демонстрации продуктов, стал сложным и трудным для поддержки из-за быстрых изменений в коде. Чтобы решить эту проблему, команда реализовала "Макраме", новую архитектуру, основанную на неизменяемых данных и реактивном пользовательском интерфейсе. Ядром архитектуры является неизменяемый объект State, представляющий модель данных, передаваемый в пользовательский интерфейс через StateFlow. Обновления данных обрабатываются событиями, передаваемыми обработчикам для обработки и обновления состояния или побочных эффектов. Adapter списка и RecyclerView обрабатывают асинхронные изменения пользовательского интерфейса. Покрытие юнит-тестами значительно увеличилось, подтверждая использование простых обработчиков для бизнес-логики. Несмотря на некоторую избыточность и сложность для простых экранов, архитектура улучшает поддерживаемость и производительность кода. Время до первого контента уменьшилось на 18%, что привело к увеличению пользовательского взаимодействия. Команда Android распространила использование Macramé на другие экраны приложения, такие как Корзина и Магазин, написанные на Jetpack Compose.
В июле 2023 года команда по обновлению приложений Etsy решила преобразовать ленту обновлений в раздел 'Скидки', посвященный купонам и распродажам. Команда рассматривала вариант разработки нового раздела с нуля, используя современные технологии, такие как Swift UI и Tuist.Сбалансировав амбиции с реализмом, команда выбрала гибридный подход, используя Swift UI для модульной разработки и предварительного просмотра, а также интегрируя с существующим кодбазом UIKit для навигации и других функций.Модульность Swift UI позволила разбивать представления на многоразовые компоненты, что обеспечивало быстрое развитие и эффективный предварительный просмотр с помощью Tuist.Были реализованы модели Decodable для ясного и эффективного разбора API, упрощая строительство представлений и обработку опциональных значений.Были введены перечисления Preview для упрощения создания макетов для сложных представлений, что позволило строить модули даже до того, как была готова поддержка API.Однако взаимодействие с существующим кодбазом создавало проблемы, особенно в таких областях, как навигация и добавление в избранное.Чтобы решить эту проблему, команда создала пользовательский структурный тип @Environment, DealsAction, который передавал ответственность за навигацию обратно в основной таргет, сохраняя при этом функцию callAsFunction() из Swift UI.Структуры Environment использовались и для других функций, таких как добавление в избранное, подписка на магазины и регистрация метрик производительности.Такой гибридный подход позволил команде воспользоваться преимуществами современных технологий, одновременно уважая ограничения наследующего кодбазы, что привело к успешному запуску продукта до начала недели киберпродаж.
Из-за растущих налоговых обязательств рынки, такие как Etsy, теперь собирают и передают налоги от покупателей. Etsy сотрудничает с Vertex для расчетов налога на основе местоположения покупателя и продавца, категории продукта и налоговых правил. Когда покупатель добавляет товар в корзину, Etsy вызывает API запроса цитирования Vertex, чтобы определить сумму налога. Когда заказ создается, Etsy использует API запроса распределения налога, чтобы отправить информацию о заказе и налоговые детали в Vertex. Etsy собирает налоги от покупателей и передает их соответствующим властям. Vertex предоставляет разные форматы отчетов, которые Etsy импортирует в свою систему больших данных. Сопоставление категорий продуктов Etsy с налоговыми категориями Vertex требовало сотрудничества между инженерными, налоговыми и аналитическими командами. Чтобы справиться с увеличением трафика API, Etsy реализовала несколько экземпляров для вызовов Vertex и тень логирования, чтобы имитировать нагрузку на Vertex и отслеживать опыт покупок. Эти обновления обеспечили гладкую работу чекаута без задержек. Etsy продолжает улучшать свой дизайн, чтобы поддерживать растущий трафик и объем данных, с будущими планами по адресу аналитики, отчетности и синхронизации конфигурации.
Улучшенный инструмент AR от Etsy позволяет пользователям визуализировать размер и масштаб предметов в их пространстве перед покупками. Сначала инструмент был ограничен только картинами для стены, но теперь он поддерживает более широкий спектр категорий с настраиваемыми опциями. Чтобы улучшить точность, Etsy разработала мощную систему разбора размеров, которая извлекает размеры из данных, предоставленных продавцами, с помощью регулярных выражений. Теперь эти данные хранятся на сервере, чтобы улучшить производительность и согласованность. Опыт AR использует Apple's SceneKit, чтобы создать масштабированный прямоугольный призм, представляющий предмет, отображающий его размеры и позволяющий интерактивному вращению и движению. Окружающая маскировка, активируемая сканерами LiDAR на новых iPhone и iPad, позволяет измерительному ящику взаимодействовать реалистично с реальными объектами, давая пользователям более точное представление о том, как предмет будет выглядеть в их пространстве. Улучшенная система разбора размеров, 3D-измерения и окружающая маскировка сочетаются, чтобы улучшить опыт пользователя, делая инструмент AR от Etsy ценным ресурсом для информированного принятия решений при покупке уникальных и настраиваемых вещей.
Ежегодный хакатон CodeMosaic от Etsy продемонстрировал амбициозный проект по разработке системы для обучения машинного обучения с памятью и онлайн-обучения. Команда поставила себе целью обновлять веса модели поэтапно, тем самым экономя затраты и улучшая метрики. В первый день они планировали свой подход, разделившись на подкоманды, сфокусированные на реальном времени обучающих данных, службе обучения и оценке. Второй день был посвящен реализации планов, и команды столкнулись с проблемами, включая форматирование данных и выбор модели. Команда по оценке предложила проведение конкурса, чтобы сравнить работу непрерывно обучающейся модели с моделью, обученной пакетно. Третий день принес презентации и обсуждения потенциального воздействия, включая оценку годового экономического эффекта в размере 212 тыс. долларов США только для моделей рекламы. Команда признала препятствия на пути к внедрению системы в производство, включая инфраструктуру и обеспечение качества, но выразила оптимизм по поводу будущего сложных архитектур ML.
Модуль диверсифицированной персонализации adSformer (ADPM) Etsy персонализирует модели ранжирования, захватывая временные и контентные сигналы из действий пользователей в течение одного часа. Модуль ADPM состоит из трех компонентов: кодировщика adSformer, предварительно обученных представлений и представлений, изученных на лету. Кодировщик adSformer использует модифицированный блок трансформера, чтобы узнать глубокое представление о сеансе пользователя. Предварительно обученные представления используют встроенные векторы элементов, обученные офлайн, в то время как представления, изученные на лету, генерируются в нижестоящих моделях. Эти компоненты конкатенируются, чтобы создать динамическое представление пользователя, которое интегрируется в модели ранжирования. ADPM улучшает релевантность результатов спонсированного поиска, кодируя действия пользователей, такие как поисковые запросы, избранное и покупки. Комбинируя три компонента, ADPM превосходит модели, использующие каждый компонент независимо, и обеспечивает устойчивость к сдвигам в распределении входных данных. ADPM развернут в системе спонсированного поиска Etsy, что привело к значительным выигрышам в офлайн- и онлайн-оценках.
Команда Feature Systems Etsy столкнулась с потенциальной проблемой при использовании временных меток в моделях машинного обучения из-за неправильного толкования точности между разными фреймворками.Проблема возникла из-за типа данных временной метки, который интерпретировался по-разному разными фреймворками, что привело к возможному смещению между обучением и использованием модели.Чтобы решить эту проблему, практики машинного обучения рекомендовали отказаться от типа временной метки и использовать более основной числовой тип, такой как Longs.Команда исследовала корень проблемы и обнаружила, что она выходит за рамки конкретных ошибок и подчеркивает более широкую проблему для практиков машинного обучения в работе с временными метками.Команда поняла, что сложность объектов datetime и типов временных меток была избыточна для их случая, поскольку им требовались только целочисленные представления с определенной точностью.На встрече архитектурной рабочей группы было достигнуто согласие по поводу представления временных меток как примитивных числовых типов, чтобы обеспечить согласованность между обучением и использованием модели.Команда также решила стандартизировать на примитивных типах в целом, чтобы способствовать согласованности во всех контекстах обучения.Команда также признала необходимость в улучшении документации, чтобы упростить преобразование функций для клиентов.Инцидент подчеркнул потенциальные вызовы в применении практик программной инженерии к специфическим потребностям машинного обучения.Поскольку машинное обучение будет все больше интегрироваться в системы программного обеспечения, такие оттенки, вероятно, станут более частыми и потребуют дальнейшего уточнения лучших практик.
Функция поиска по изображению на Etsy позволяет пользователям искать товары, похожие на загруженные ими фото. Эта функция использует модель машинного обучения, чтобы преобразовывать изображения в численные представления, называемые вложениями, которые затем используются для поиска по сходству.Модель основана на предварительно обученной сверточной нейронной сети (СВС), которая была дообучена для задачи обучения вложений изображений. Модель обучается с помощью подхода multitask learning, где она одновременно учится выполнять несколько задач классификации, включая категорию товаров, цвет и атрибуты.Чтобы уменьшить предвзятость в сторону высококачественных изображений товаров, модель также обучается на наборе данных из пользовательских фото-отзывов.Конвейер инференции включает в себя создание приближенного ближайшего соседа (ANN) индекса с помощью алгоритма инвертированного файла (IVF), чтобы оптимизировать производительность поиска.Запросы фото интерпретируются в реальном времени с помощью технологии GPU-инференции, чтобы обеспечивать быстрые ответы.Функция поиска по изображению была впервые разработана во время хакатона CodeMosaic Etsy и с тех пор реализована как функция в производстве.Функция помогает покупателям открывать для себя уникальные и особенные вещи на Etsy, предоставляя им новый и интуитивный способ поиска похожих продуктов.Архитектура модели и цель обучения были оптимизированы для обеспечения визуально согласованной результаты, сохраняя при этом категориальную точность.Добавление фото-отзывов в обучающий набор данных значительно улучшило способность модели находить соответствующие результаты из пользовательских фото.Функция была хорошо принята пользователями и способствовала увеличению вовлеченности и удовлетворенности покупателей на Etsy.
В Etsy используются модули рекомендаций, чтобы предлагать пользователям соответствующие товары, каждый из которых работает на основе ранжировщика, оценивающего кандидатов на соответствие. Традиционно Etsy использовала ранжировщики, специализирующиеся в отдельных модулях, но такой подход стал неэффективным по мере увеличения числа модулей.Чтобы решить эту проблему, Etsy разработала канонические ранжировщики, которые могут работать в нескольких модулях, обеспечивая эффективность и единообразие. Первым каноническим ранжировщиком стал ранжировщик частоты посещений, использующий частоту добавления в избранное как заменитель частоты повторных посещений.Структура модели частоты ранжировщика включала общую нижнюю архитектуру с отдельными слоями для прогнозирования частоты добавления в избранное и покупок, которые объединялись в окончательный рейтинговый балл. Кроме того, ранжировщик включал в себя особенность имени модуля и сбалансировал обучающие данные между модулями, чтобы обеспечить общую применимость.Несмотря на то, что ранжировщик был обучен на данных из ограниченного подмножества модулей, он превзошел ранжировщики, специализирующиеся в отдельных модулях, на модулях, не использовавшихся для обучения, демонстрируя свою эффективность как канонического решения.Ранжировщик частоты улучшил частоту добавления в избранное как на страницах товаров, так и на домашней странице модулей, с заметными улучшениями в показателях покупок и других индикаторах вовлеченности.С момента запуска канонического ранжировщика Etsy развернула его на множестве модулей на веб- и мобильных платформах.В будущем Etsy планирует итерировать частоту ранжировщика, включая больше контекста и исследуя новые архитектуры.Канонический ранжировщик представляет собой сдвиг в стратегии рекомендаций Etsy, обеспечивая более персонализированные рекомендации и единый пользовательский опыт на всех платформах и модулях.
Развертывание моделей машинного обучения (МО) включает переход от экспериментов к строгим инженерным ограничениям, что создает проблемы в достижении баланса между гибкостью и стабильностью.Команда платформы машинного обучения Etsy использует Kubernetes для масштабирования и оркестрации моделей, а Barista управляет развертыванием моделей.Изначально конфигурации моделей управлялись как код, что обеспечивало тесный контроль, но приводило к задержкам и узким местам.Чтобы решить эти проблемы, конфигурации были отделены и хранены в базе данных, что позволило делать мгновенные изменения через CLI.Однако CLI требовал технических навыков, что привело к разработке пользовательского интерфейса веб-интерфейса для управления моделями.Веб-интерфейс Barista предоставляет полный контроль над развертываниями, интегрируется с разными API и упрощает процесс развертывания.Увеличившиеся темпы развертывания моделей вызвали беспокойство по поводу затрат и неправильных конфигураций, что привело к внедрению Kube Downscaler для автоматического масштабирования неработающих развертываний.Сфера внимания сместилась от удовлетворения основных технических требований к созданию полного продукта, который позволяет пользователям МО.Сейчас усилия направлены на улучшение связности услуг и автоматизацию для оптимизации настройки инфраструктуры и дальнейшего уменьшения затрат на облачные ресурсы.Поскольку практика МО растет, платформа должна продолжать развиваться, чтобы удовлетворять растущим потребностям команды.
Docs-as-code интегрирует документацию в разработку с использованием тех же инструментов и процедур, что и код. Она подчеркивает версионирование, разметку в plain-text и автоматизацию для улучшения управления документацией.Инструмент Docsbuilder от Etsy использует Markdown, Docusaurus и GitOps-работы для создания и поддержки документации.Docsbuilder автоматизирует создание сайта, валидацию и развертывание с помощью Google Cloud Build и интеграционных тестов.Docsbuilder обеспечивает доступность с помощью поисковой машины и навигационного компонента для часто используемых сайтов.На данный момент Etsy хостит более 6,2 тыс. страниц на 150 сайтах Docsbuilder.Целью docs-as-code является улучшение качества, эффективности и надежности документации.Важными принципами являются рассмотрение документации как первого класса, версионирование в Git, использование plain-text-форматов и автоматизация потоков работ.Docs-as-code поощряет разработчиков подходить к документации с той же тщательностью, что и к кодированию.Etsy планирует улучшать доступность, навигацию и вовлечение контента в Docsbuilder.Docs-as-code способствует сбалансированному подходу между документацией и кодированием, что приводит к организованной и поддерживаемой документации.
Платежи Etsy перевели 40 миллиардов строк из 23 таблиц в среду Vitess с разбивкой на сегменты, используя vindexes для разбивки данных. В этой статье мы уделяем особое внимание ошибкам, которые могут возникать во время перехода.Важно понимать режимы транзакций Vitess. Одиночный режим поддерживает атомарность, но многорежимный режим может привести к частичным фиксациям. Двухфазный режим фиксации является экспериментальным и не рекомендуется.Обратная VReplication обеспечивает синхронизацию данных между не разбиваемым и разбиваемым ключевым пространством после перехода. Она может нарушиться из-за соблюдения уникального ключа, требуя исправлений, таких как удаление строк или ручное обновление столбца Pos.Разбросанные запросы, в которых ключ разбивки опущен в клаузе WHERE, могут привести к чрезмерному объему запросов и возможным простоям. Vitess теперь предлагает флаг --no_scatter для предотвращения таких запросов.Неподдерживаемые запросы могут терпеть неудачу после перехода. Тщательное тестирование в среде разработки является необходимым для выявления и решения таких запросов.Другие потенциальные ошибки включают ошибки, связанные с неподдерживаемыми SQL-конструкциями, которые могут быть решены путем обновления до более новых версий Vitess.Несмотря на эти риски, переходы в целом обратимы, если обратная VReplication работает должным образом. Однако влияние любого нарушения работы следует тщательно рассматривать.
Etsy перенесла 40 миллиардов строк из нешардированных баз данных в управляемое Vitess-ом, шардированное окружение.Миграция включала перераспределение данных, проверку полноты и переключение чтения/записи.Сценарий был ключевым для тестирования и укрепления доверия в процессе.VReplication обеспечил гладкое переключение чтения/записи и согласованность данных.Неожиданный рост объема запросов был решен с помощью CreateLookupVindex, предотвратив рассеивание запросов.Вторичные Vindexes были применены во время миграции для оптимизации идентификации шардов.Из-за ограничений по поддержке Vindexes записи были переключены обратно на источник после внешнего применения Vindexes.Спецификации целевого кластера были обновлены, чтобы справиться с нагрузкой после внешнего применения Vindexes.Миграция была проведена без нарушений или простоев, благодаря тщательному тестированию и планированию.Это было частью 2 серии о шардировании платежных данных Etsy с помощью Vitess.
Базы данных платежей Etsy столкнулись с проблемами масштабируемости в 2020 году, что потребовало миграции в разбиваемую на части среду, управляемую Vitess.Проект включал перенос 40 миллиардов строк из четырех баз данных в одну разбиваемую на части среду, используя Vitess vindexes для разбиения.Первый этап включал миграцию инфраструктуры бухгалтерского учета продавцов, которая имела оптимальную модель данных для разбиения.Второй этап был сосредоточен на уменьшении нагрузки на основную базу данных платежей, которая имела сложную модель данных, требующую более индивидуализированного подхода.Были рассмотрены два варианта для второго этапа: перепроектировать основную модель данных или найти разбиватели в существующей модели.Был выбран последний вариант из-за временных ограничений и важности поддержания надежности.Команда использовала существующие основные и внешние ключи в качестве разбивателей, уменьшив нагрузку по сравнению с первым этапом.Функции Vitess по перестройке разбивки на части обеспечивают гибкость для будущих корректировок дизайна разбивки.Вторичные индексы в Vitess компенсируют ограничения неоптимальной модели данных, позволяя целевым запросам к разбивкам без использования разбивателя в запросах.Это миграция улучшила масштабируемость на 60% и обеспечила место для будущего роста.
Сначала обновления платформы для Kafka-брокеров были трудоемкими и требовали много времени, требуя нескольких часов ручного мониторинга и ожидания. Чтобы улучшить это, была реализована многосетевая архитектура, позволяющая обновлять несколько брокеров одновременно без влияния на доступность. Однако встроенная стратегия обновления rolling update Kubernetes не подошла из-за зонального распределения реплик.Была разработана пользовательская логика для управления обновлениями, позволяющая нескольким брокерам в зоне быть перезапущенными одновременно. Это было реализовано как задача Kubernetes batch для обеспечения надежности и предотвращения случайных проблем с развертыванием.Тестирование в производстве показало, что с параллелизмом в три обновления могли быть завершены примерно за два часа. Хотя перезапуск всех брокеров в зоне одновременно технически был возможен, это было избегнуто, чтобы не увеличивать нагрузку на оставшиеся брокеры.Многосетевая архитектура и пользовательская логика обновления значительно сократили время обновления, с семи часов до примерно двух часов. Это улучшение не только сэкономило время, но и уменьшило трудоемкость и стресс, связанные с обновлениями.Новый процесс обеспечил быстрые и эффективные обновления, с минимальным влиянием на кластер Kafka. Успех проекта измерялся не только сокращением времени, но и легкостью и миром духа, которые обеспечивались во время обновлений.
В 2018 году Etsy перенесла свои брокеры Kafka на Google Cloud Platform's Kubernetes Engine. Изначально работавшие в одной зоне, команда позже переработала архитектуру для обеспечения устойчивости к зонам, распределяя брокеров по нескольким зонам с равномерным распределением реплик разделов.Чтобы обеспечить миграцию без простоя, брокеры были перемещены сначала путем создания снимков дисков, а затем рекреации их в соответствующих зонах. Перемещение разделов было обработано вручную с помощью сценариев и инструментов, чтобы минимизировать движение данных и воздействие.Тестирование в производственной среде после миграции продемонстрировало эффективность многозональной конструкции, с минимальным нарушением работы во время сбоя в зоне. Хотя затраты на межзональную сеть увеличилась, как и ожидалось, преимущества зональной устойчивости перевешивают затраты.Команда оптимизирует затраты, используя функцию follower fetching Kafka и изучает дополнительные подходы для уменьшения межзонального трафика. Несмотря на некоторые увеличения затрат, преимущества зональной устойчивости значительны, оправдывая инвестиции.Миграция включала сложные этапы, включая перемещение дисков и Pod, реорганизацию разделов и настройку. Бережливое планирование и исполнение команды обеспечили нулевой простой и целостность данных на протяжении всего процесса.Опыт Etsy подчеркивает важность проектирования для устойчивости в критических службах. Благодаря многочисленной избыточности команда устранила риски, связанные с отказом одной зоны, и улучшила стабильность и доступность своего кластера Kafka.Многочисленная архитектура позволяет Etsy обрабатывать увеличение производственного трафика и ключевых пользовательских функций, таких как индексирование поиска, с уверенностью.Продолжающиеся усилия компании по оптимизации затрат демонстрируют приверженность балансировке между устойчивостью и финансовыми соображениями.Исследование случаев предоставляет ценные инсайты в сложности и стратегиях, связанных с миграцией и работой высокодоступного кластера Kafka в многочисленной облачной среде.
Предоставление масштабных моделей ранжирования глубокого обучения сопровождается сложностями из-за высокой задержки и вычислительных затрат. Чтобы преодолеть эти проблемы, команда Search Ranking в Etsy создала Caliper - инструмент для раннего обратной связи по задержке во время разработки модели. Изолировав компонент вывода, Caliper позволяет эффективно настраивать параметры, такие как размер пакета. Кроме того, увеличение наблюдаемости за счет распределенного трассирования и журналов доступа Envoy позволили команде обнаружить узкое место в передаче признаков. Используя методы сжатия, размер полезной нагрузки удалось значительно уменьшить, что привело к уменьшению частоты ошибок на 68% и снижению задержки p99 на 50 мс. Чтобы быть готовым к будущим сложностям, команда изучает дополнительные оптимизации размера полезной нагрузки и улучшает Caliper для автоматического настройки производительности. Эти достижения позволили команде Search Ranking эффективно обслуживать модели глубокого обучения в масштабе, обеспечивая быстрые и точные результаты поиска для пользователей Etsy.