Поделиться через


Обучение моделей рекомендаций

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

Общая система рекомендаций может рассматриваться как воронка с этапами, показанными на схеме.

Схема архитектуры рекомендуемой системы

Некоторые модели, такие как модель с двумя башнями, лучше работают как модели извлечения. Эти модели меньше и могут эффективно работать с миллионами точек данных. Другие модели, такие как DLRM или DeepFM, работают лучше в качестве моделей для повторной ранжировки. Эти модели могут принимать больше данных, более крупные и могут предоставлять подробные рекомендации.

Требования

Databricks Runtime 14.3 LTS ML

Инструменты

Примеры, приведенные в этой статье, иллюстрируют следующие средства:

  • TorchDistributor: TorchDistributor — это платформа, которая позволяет выполнять обучение модели PyTorch большого масштаба в Databricks. Он использует Spark для оркестрации и может масштабироваться в зависимости от доступного количества GPU в вашем кластере.
  • Mosaic StreamingDataset: StreamingDataset улучшает производительность и масштабируемость обучения на больших наборах данных в Databricks с помощью таких функций, как предвыборка и чередование.
  • MLflow: Mlflow позволяет отслеживать параметры, метрики и контрольные точки модели.
  • TorchRec: современные системы рекомендаций используют таблицы поиска встраиваний, чтобы обрабатывать миллионы пользователей и объектов для генерации высококачественных рекомендаций. Более крупные размеры эмбеддингов повышают производительность модели, но требуют значительной памяти GPU и многопроцессорных конфигураций GPU. TorchRec предоставляет платформу для масштабирования рекомендательных моделей и таблиц подстановки на нескольких ГПУ, что делает её идеальной для больших встраиваний.

Пример. Рекомендации по фильмам с использованием архитектуры модели с двумя башнями

Модель с двумя башнями предназначена для обработки крупномасштабных задач персонализации путем обработки данных пользователей и элементов отдельно перед объединением их. Он способен эффективно создавать сотни или тысячи достойных рекомендаций по качеству. Модель обычно ожидает три входных данных: функция user_id, функция product_id и двоичная метка, определяющая, был ли <пользователь, взаимодействие с продуктом> положительным (пользователь приобрел продукт) или отрицательным (пользователь дал продукту одну звездочку). Выходные данные модели представляют собой встраивания как для пользователей, так и для товаров, которые затем обычно объединяются (часто с использованием скалярного произведения или косинусного сходства) для прогнозирования взаимодействия пользователя с элементом.

Поскольку модель с двумя башнями предлагает встраивания как для пользователей, так и для продуктов, вы можете поместить эти встраивания в векторный индекс, например, Mosaic AI Vector Search, и выполнять операции, подобные поиску по схожести, для пользователей и товаров. Например, можно поместить все элементы в векторное хранилище, а для каждого пользователя сделать запрос, чтобы найти первые сто элементов, чьи векторные представления похожи на вектор пользователя.

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

Блокнот двухбашенной рекомендательной модели

Возьмите записную книжку

Эта записная книжка также доступна в Databricks Marketplace: записная книжка модели «Две башни»

Примечание.

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

Пример. Обучение архитектуры DLRM с помощью искусственного набора данных

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

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

В следующем примере записная книжка создает модель DLRM для прогнозирования двоичных меток с помощью плотных (числовых) функций и разреженных (категориальных) функций. В нем используется синтетический набор данных для обучения модели, Mosaic StreamingDataset для распределенной загрузки данных, TorchDistributor для распределенного обучения модели и Mlflow для отслеживания и ведения журнала моделей.

Записная книжка DLRM

Возьмите записную книжку

Эта записная книжка также доступна в Databricks Marketplace: DLRM записная книжка.

Сравнение двухбашенных моделей и моделей DLRM

В таблице приведены некоторые рекомендации по выбору используемой модели рекомендаций.

Тип модели Размер набора данных, необходимый для обучения Размер модели Поддерживаемые типы входных данных Поддерживаемые типы вывода Случаи использования
Две башни Меньше Меньше Обычно два параметра (user_id, product_id) В основном двоичная классификация и построение эмбеддингов Создание сотен или тысяч возможных рекомендаций
DLRM Крупнее Больше Различные категориальные и численные признаки (идентификатор пользователя, пол, географическое расположение, идентификатор продукта, категория продукта, ...) Классификация нескольких классов, регрессия, другие Детализированное извлечение (рекомендуется десятки высокорелевантных элементов)

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