Главная/Блог/Гайд/Генеративные рекомендательные системы:…
Гайд3 мин чтения · 20 августа 2026 г.

Генеративные рекомендательные системы: переход от эмбеддингов к трансформерам

Разбираем архитектуру HSTU и Semantic IDs, оптимизацию через DynamicEmb и nv-embedding-cache для запуска RecSys на NVIDIA GPU без узких мест по VRAM.

Генеративные рекомендательные системы: переход от эмбеддингов к трансформерам

Рекомендательные системы (RecSys) переживают архитектурный сдвиг. Традиционные подходы, основанные на поиске ближайших соседей в пространстве эмбеддингов (embedding-similarity), уступают место генеративным рекомендациям (Generative Recommenders, GR). В GR задача формулируется как предсказание следующего действия или элемента в последовательности, аналогично next-token prediction в LLM. Это позволяет использовать законы масштабирования трансформеров, объединять этапы поиска и ранжирования в одной модели и естественным образом интегрироваться с экосистемой LLM.

01Почему старые подходы ломаются на масштабе

Классические RecSys сталкиваются с критическими проблемами при работе с огромными объемами данных:

  • Объем данных: Истории пользователей (катастрофически разреженные матрицы взаимодействий) не помещаются в HBM GPU. Это создает узкие места при обучении и инференсе.
  • Длинный хвост (Long-tail): Большинство товаров имеют мало взаимодействий. Вероятностное распределение смещено в сторону популярных товаров, что дает слабый градиент для нишевых позиций.
  • Проблема холодного старта: Для новых пользователей или товаров нет истории взаимодействий. Эмбеддинги приходится выводить из косвенных признаков, что часто снижает качество рекомендаций.
  • Строгие требования к латентности: В отличие от LLM, где можно терпеть задержку декодирования, RecSys должен ранжировать тысячи кандидатов за миллисекунды для миллионов пользователей онлайн.
💡
Ключевое отличие архитектуры. Генеративные модели (HSTU) используют последовательное моделирование, что позволяет эффективнее использовать вычислительные ресурсы GPU и сохранять информацию о величине признаков в длинных последовательностях.

02Архитектуры HSTU и Semantic IDs

Существует два основных подхода к реализации GR, оптимизированных для NVIDIA GPU:

1. Hierarchical Sequential Transduction Units (HSTU)

Введенный Meta, HSTU рассматривает историю пользователя как последовательность переплетенных элементов (товары, действия: клик, лайк), упорядоченных по времени. В отличие от стандартных трансформеров, HSTU:

  • Использует относительное смещение внимания (relative attention bias).
  • Применяет elementwise gating перед проекцией выхода.
  • Позволяет эффективно моделировать длинные последовательности взаимодействий.

2. Semantic IDs (SIDs)

Разработанный Google, этот подход решает проблему огромного словаря товаров. Вместо предсказания конкретного ID товара, модель предсказывает «семантический ID» — токен из иерархически кластеризованного набора. Архитектуры используют SIDs для:

  • Эффективного ранжирования через логиты выхода.
  • Использования beam search для генерации нескольких кандидатов за один проход.
  • Улучшения обобщения для семантически похожих товаров.
⚠️
Важно для VRAM. При использовании SIDs размер выходного слоя (vocab size) значительно меньше, чем количество товаров в каталоге, что снижает требования к памяти для матрицы логитов.

03Инструменты NVIDIA: recsys-examples и nv-embedding-cache

Для внедрения этих архитектур NVIDIA предоставляет репозиторий recsys-examples и библиотеку nv-embedding-cache (NVE). Они решают проблему управления памятью и пропускной способностью.

DynamicEmb: Гибкие эмбеддинги

Статические таблицы эмбеддингов неэффективны, так как большая часть памяти тратится на редко используемые товары. DynamicEmb заменяет их на оптимизированную хеш-таблицу с приоритетным вытеснением (score-based eviction). Она живет в HBM, позволяя масштабироваться за пределы одной GPU. Реализация использует TorchRec и fused CUDA kernels для эффективного обучения и инференса.

nv-embedding-cache (NVE)

Это многоуровневое кэширование, которое работает как drop-in replacement для слоев PyTorch Embedding. Оно поддерживает:

  • Секционирование (sharding) таблиц.
  • Параллельный поиск и вытеснение.
  • Низкую латентность для production-нагрузок.

04Практическая настройка и запуск

Для начала работы с примерами из репозитория NVIDIA потребуется окружение с PyTorch и поддержкой CUDA. Ниже приведен базовый сценарий клонирования и подготовки окружения.

Клонирование репозитория с примерами:

terminalbash
git clone https://github.com/NVIDIA/recsys-examples.git
cd recsys-examples

Установка зависимостей (предполагается использование conda/venv и CUDA 12.x):

terminalbash
pip install -r requirements.txt
# Для работы с DynamicEmb и TorchRec
pip install torchrec

Пример инициализации модели HSTU с использованием DynamicEmb (псевдокод архитектуры):

terminalpython
from recsys_examples.models import HSTUModel
from recsys_examples.embedding import DynamicEmb

# Инициализация динамических эмбеддингов для пользователей и товаров
user_emb = DynamicEmb(num_embeddings=1000000, embedding_dim=64)
item_emb = DynamicEmb(num_embeddings=5000000, embedding_dim=64)

# Создание модели HSTU
model = HSTUModel(
    user_emb_layer=user_emb,
    item_emb_layer=item_emb,
    seq_len=50,
    hidden_dim=256
)
📌
Оптимизация инференса. Используйте fused CUDA kernels из пакета для операций pooling. Это критично для снижения задержки при обработке длинных последовательностей пользователей.

05Кому подойдёт / что запустится

Источник: NVIDIA Developer ↗

Компонент Требования к железу Целевая нагрузка