
Привет, Хабр! Меня зовут Алексей Васильев, я тимлид команды «Рекомендательные системы и персонализация» Sber AI Lab — Центра практического искусственного интеллекта Сбера. В нашей команде мы занимаемся исследованиями в области рекомендаций на последовательностях (sequential recommendations). Например, прослушивания музыки или просмотры карточек товаров можно представить как последовательность взаимодействий пользователя. А для моделирования последовательностей, как мы знаем, отлично подходят трансформеры: популярные варианты в рекомендациях — SASRec и BERT4Rec. Эти модели прекрасно справляются с задачей рекомендаций на основе взаимодействий, но они ничего не знают о самих товарах.
Допустим, пользователь покупает безлактозный йогурт и растительный сыр. У нас сразу появляется гипотеза: возможно, пользователь не переносит лактозу. Однако для sequential‑модели это не очевидный факт, а статистический паттерн, который нужно выучить из взаимодействий. Если данных мало, товары редкие или связи между ними плохо представлены в истории, то такой смысл легко потерять.
Большие языковые модели в данной ситуации выглядят подходящим решением. Они умеют читать описания товаров, анализировать историю взаимодействий и выделять предпочтения пользователя. Казалось бы, можно просто взять LLM и использовать её как рекомендательную систему. Но и здесь всё не так просто: использовать LLM на инференсе дорого, медленно и сложно с точки зрения масштабирования на миллионы пользователей.
Мы в Sber AI Lab совместно с коллегами из научных институтов предложили другой путь: перенос знаний из LLM в компактную рекомендательную модель посредством дистилляции. В результате мы:
НЕ меняем архитектуру рекомендательной модели;
НЕ дообучаем LLM;
НЕ используем LLM на этапе инференса.
Так, например, на датасете ML-20M мы получили ускорение более чем в 100 раз относительно сильного LLM‑бейзлайна при росте качества на 5,6%.
Код экспериментов лежит в открытом доступе. Под катом — детали архитектуры, результаты на четырёх датасетах и пример использования.
Как это работает?
Шаг 1. Формирование текстового профиля пользователя
Для каждого пользователя мы агрегируем доступную текстовую информацию об объектах из его истории. Например, для интернет‑магазина это могут быть категории товаров и описания продуктов, для фильмов — жанры, названия и краткие описания. Эту информацию подаём в LLM (мы использовали Gemma-2-9B) с инструкцией:
Проанализируй историю взаимодействий пользователя, выяви его предпочтения и особенности поведения. Сформируй текстовый профиль пользователя.
На выходе мы получаем текстовый профиль пользователя P(u). Например:
Пользователь часто покупает товары из категории «электроника», особенно наушники и портативные колонки. Предпочитает бренды в среднем ценовом сегменте. Совершает покупки преимущественно в вечернее время.
Шаг 2. Преобразование профиля в вектор
Но рекомендательная модель не работает с текстом напрямую. Поэтому профиль пользователя нужно перевести в векторное представление той же размерности, что и внутренние представления модели.
Для этого мы сначала пропускаем текстовый профиль через энкодер E (multilingual‑e5-large), а затем применяем алгоритм понижения размерности T (UMAP):
Шаг 3. Обучение с дистилляцией
Рекомендательная модель (например, SASRec или BERT4Rec) кодирует историю взаимодействий пользователя u в последовательность скрытых состояний. Мы агрегируем их в итоговое представление h(u) (усреднением или экспоненциальным сглаживанием с акцентом на последние действия).
Далее добавляем функцию потерь дистилляции ,
— среднеквадратичное отклонение между
и целевым вектором
:
где — гиперпараметр, регулирующий вклад дистилляции.
Поскольку часто существенно меньше
, то вводим также параметр
для удобства подбора гиперпараметров при небольших значениях дистилляционной функции потерь.
Итоговая функция потерь:
Шаг 4. Двухэтапное обучение
Этап 1: обучаем модель с двумя функциями потерь одновременно — основной рекомендательной задачей и дистилляцией.
Этап 2: убираем дистилляционный компонент и дообучаем модель только на основной функции потерь. Это позволяет «зафиксировать» перенесённые знания без постоянного давления со стороны целевого вектора.
Что получилось
Мы тестировали подход на четырёх датасетах разной природы и размера:

Наше решение проверялось на базовых моделях SASRec и BERT4Rec.

Результаты до и после дистилляции профиля пользователя из LLM
Сравнение с LLM‑бейзлайном:

Сравнение предложенного подхода с LLM‑бейзлайноми LLM‑based подхода IDGenRec, ndcg@10

Сравнение времени обучения и инференса предложенного подхода и IDGenRec
В итоге получаем семантические преимущества LLM, но на инференсе работаем со скоростью лёгкой последовательной модели.
Почему это важно
Для бизнеса
Подход позволяет повысить качество рекомендаций без увеличения стоимости инференса. Это критически важно для промышленных систем, где:
миллионы активных пользователей;
каждая миллисекунда на инференсе имеет значение;
затраты на GPU нужно контролировать.
Мы не предлагаем заменять существующие пайплайны. Наш метод — это надстройка, которая улучшает качество модели, уже работающей в эксплуатации, без её переписывания.
Для ML‑инженеров
Не нужно разбираться в тонкостях дообучения LLM.
Не нужно поднимать тяжёлую инфраструктуру для LLM‑инференса.
Метод воспроизводим — код открыт.
Для научного сообщества
Мы предлагаем новый взгляд на дистилляцию: не item‑centric, а user‑centric. Это открывает направление для дальнейших исследований — например, динамических профилей, адаптивной дистилляции, multi‑modal профилей.
Ссылки
GitHub: https://github.com/sb‑ai‑lab/ECIR26_Pre‑trained_LLMs_Meet‑Sequential_Recommenders
Там вы найдёте:
реализацию методов дистилляции для SASRec и BERT4Rec;
скрипты для воспроизведения экспериментов;
примеры формирования промптов и обработки результатов LLM.
Статья опубликована на конференции ECIR 2026 уровня A. Прочитать её можно по ссылке.
Благодарности
Работа выполнена командой Sber AI Lab — Центра практического ИИ в сотрудничестве с коллегами из ИТМО, Университета Иннополис, НИУ ВШЭ и AIRI.
Авторы статьи:
Никита Северин (независимый исследователь), Данил Картушов (ИТМО), Владислав Уржумов (Иннополис), Владислав Куликов (ИТМО), Оксана Коновалова (Иннополис), Алексей Гришанов (Sber AI Lab), Антон Кленицкий (Sber AI Lab), Артем Фаткулин (Sber AI Lab), Алексей Васильев (Sber AI Lab / ВШЭ), Андрей Савченко (Sber AI Lab / ВШЭ / ИСП РАН), Илья Макаров (AIRI)
