PLUM: Adapting Pre-trained Language Models for Industrial-scale Generative Recommendations.
А вот и обещанная новая статья про семантические айдишники от Google. Много подробностей про то, как подружить LLM и рекомендательные системы; на примере прода Ютуба.
1. Улучшили семантические айдишники:
* теперь семантический энкодер принимает на вход не единое векторное представление айтема, а “мультимодальное” — несколько векторов, соответствующих разным контентным сигналам (модальностям), e.g. отдельный вектор для названия, описания, видео и тд (здесь конкретики по модальностям нет, я чуть фантазирую)
* multi-resolution codebook — раньше у них был один общий кодбук на все шаги генерации семантических айдишников. Теперь утверждают, что на каждом новом шагу генерации нужно кодировать “остаточную” энтропию с прошлых шагов, поэтому можно на каждом уровне уменьшать размер используемого кодбука
* progressive masking — при обучении RQ-VAE случайным образом маскируют хвост семантических айдишников, то есть больше фокусируются на ранних уровнях айдишников. Утверждают, что таким образом форсится более сильная иерархичность айдишников
* добавили contrastive learning на со-встречаемость айтемов — сближают айтемы, которые встречаются рядом в истории пользователя. То есть теперь при обучении RQ-VAE учитывается коллаборативный сигнал
2. Описали CPT (continuous pre-training) стадию:
* стартуют с предобученной LLM (Gemini)
* половину датасета строят из behavioral данных — последовательностей просмотров пользователей (и, видимо, предсказывают следующий просмотр)
* вторую половину — из метаданных айтемов (задачи а-ля ‘У видео следующее название: ’)
* по мере обучения смотрят и как растет качество рекомендаций (первая задача), и насколько хорошо модель восстанавливает метаданные (вторая задача), и как сильно деградируют способности естественного языка модели
3. Есть и третья, SFT (supervised fine-tuning) стадия:
* подают на вход модели watch history | user features | context features
* учат ее в ответ генерировать семантические айдишники нужного айтема
* учатся не на всех айтемах, а как-то сэмплируют их исходя из награды (фидбека пользователя), и еще взвешивают лосс на этот фидбек
4. Про прод:
* используют модель для генерации кандидатов
* используют beam search; говорят, что он по качеству лучше чем случайное декодирование, но теряет в разнообразии (логично)
* модель дообучают; говорят, что модель гораздо более sample efficient, чем их прошлое поколение — ежедневно используют для дообучения 250 млн сэмплов, когда прошлые модели использовали миллиарды
* длина контекста — 1500 токенов, что примерно соответствует сотне последних просмотров пользователя
* в A/B тесте добавили свою модель как новый источник кандидатов, сравниваются с контролем, в котором увеличили количество кандидатов (чтобы оно было равное в обеих группах) — показывают приросты по метрикам и для шортсов, и для обычных YouTube видеороликов
* их прошлая флагманская продовая модель — трансформер над историей пользователя. Когда ее упоминают, ссылаются на Top-K REINFORCE работу (в которой был RNN-based генератор кандидатов)
Что еще могу выделить:
* проверили скейлинг модели, но по-умному — зафиксировали бюджет на compute и смотрели какого размера модель выгодней взять; получилось, что 900M выгодней 3B
* инициализация модели с LLM-чекпойнта (с Gemini) докидывает не очень много качества. НО: добавляет few-shot способности — в конце статьи есть пара примеров, когда модель отвечает на вопросы, на которые ее не учили, в стиле “а какая тема у ”. Модель без LLM претрейна такое не умеет
* в related work цитируют OneRec как пример работы с семантическими айдишниками
* длина истории конечно все еще очень маленькая, 100 событий. Это подозрительно. Я на RecSys подходил и спрашивал про это, Lichan Hong ответил что-то типа “у нас есть модели и с большой длиной истории”. Но статьи они что-то про них не пишут :)
А вот и обещанная новая статья про семантические айдишники от Google. Много подробностей про то, как подружить LLM и рекомендательные системы; на примере прода Ютуба.
1. Улучшили семантические айдишники:
* теперь семантический энкодер принимает на вход не единое векторное представление айтема, а “мультимодальное” — несколько векторов, соответствующих разным контентным сигналам (модальностям), e.g. отдельный вектор для названия, описания, видео и тд (здесь конкретики по модальностям нет, я чуть фантазирую)
* multi-resolution codebook — раньше у них был один общий кодбук на все шаги генерации семантических айдишников. Теперь утверждают, что на каждом новом шагу генерации нужно кодировать “остаточную” энтропию с прошлых шагов, поэтому можно на каждом уровне уменьшать размер используемого кодбука
* progressive masking — при обучении RQ-VAE случайным образом маскируют хвост семантических айдишников, то есть больше фокусируются на ранних уровнях айдишников. Утверждают, что таким образом форсится более сильная иерархичность айдишников
* добавили contrastive learning на со-встречаемость айтемов — сближают айтемы, которые встречаются рядом в истории пользователя. То есть теперь при обучении RQ-VAE учитывается коллаборативный сигнал
2. Описали CPT (continuous pre-training) стадию:
* стартуют с предобученной LLM (Gemini)
* половину датасета строят из behavioral данных — последовательностей просмотров пользователей (и, видимо, предсказывают следующий просмотр)
* вторую половину — из метаданных айтемов (задачи а-ля ‘У видео следующее название: ’)
* по мере обучения смотрят и как растет качество рекомендаций (первая задача), и насколько хорошо модель восстанавливает метаданные (вторая задача), и как сильно деградируют способности естественного языка модели
3. Есть и третья, SFT (supervised fine-tuning) стадия:
* подают на вход модели watch history | user features | context features
* учат ее в ответ генерировать семантические айдишники нужного айтема
* учатся не на всех айтемах, а как-то сэмплируют их исходя из награды (фидбека пользователя), и еще взвешивают лосс на этот фидбек
4. Про прод:
* используют модель для генерации кандидатов
* используют beam search; говорят, что он по качеству лучше чем случайное декодирование, но теряет в разнообразии (логично)
* модель дообучают; говорят, что модель гораздо более sample efficient, чем их прошлое поколение — ежедневно используют для дообучения 250 млн сэмплов, когда прошлые модели использовали миллиарды
* длина контекста — 1500 токенов, что примерно соответствует сотне последних просмотров пользователя
* в A/B тесте добавили свою модель как новый источник кандидатов, сравниваются с контролем, в котором увеличили количество кандидатов (чтобы оно было равное в обеих группах) — показывают приросты по метрикам и для шортсов, и для обычных YouTube видеороликов
* их прошлая флагманская продовая модель — трансформер над историей пользователя. Когда ее упоминают, ссылаются на Top-K REINFORCE работу (в которой был RNN-based генератор кандидатов)
Что еще могу выделить:
* проверили скейлинг модели, но по-умному — зафиксировали бюджет на compute и смотрели какого размера модель выгодней взять; получилось, что 900M выгодней 3B
* инициализация модели с LLM-чекпойнта (с Gemini) докидывает не очень много качества. НО: добавляет few-shot способности — в конце статьи есть пара примеров, когда модель отвечает на вопросы, на которые ее не учили, в стиле “а какая тема у ”. Модель без LLM претрейна такое не умеет
* в related work цитируют OneRec как пример работы с семантическими айдишниками
* длина истории конечно все еще очень маленькая, 100 событий. Это подозрительно. Я на RecSys подходил и спрашивал про это, Lichan Hong ответил что-то типа “у нас есть модели и с большой длиной истории”. Но статьи они что-то про них не пишут :)