GenPage: Towards End-to-End Generative Homepage Construction at Netflix
Netflix × University of Alberta
把「多阶段召回-排序-重排 + 行/实体分模型」的首页构建,换成一个问题:给定用户上下文这个 prompt,直接自回归生成整张多行首页(行 token + 实体 token,按布局顺序)。照搬 LLM 配方:在正反馈生产页上做 next-token 预训练,再用加权二分类(WBC,逐 token 价值估计)或页级 RL(奖励模型 + Dr. GRPO)后训练;~200M 模型线上核心指标 +0.24%,端到端延迟降 20%。
核心思路
Netflix 首页是一个二维结构:若干行(Continue Watching、Korean TV Shows……),每行里若干影片/剧集。过去它由召回、排序、重排多阶段流水线拼出来,行和实体还各有专门模型。GenPage 换了个问法:
已知这个用户和这次请求的全部信息,应该生成怎样一张首页,才能让用户最满意?
做法是把用户历史、画像和请求上下文 token 化当作 prompt,用一个 decoder-only Transformer 按布局顺序(从左到右、从上到下)自回归生成整页的「行 token + 实体 token」。训练照搬 LLM 配方:先在生产中拿到正反馈的首页上做 next-token 预训练,学会首页的「语言」;再做后训练,二选一:
- WBC(加权二分类):把生成拆成逐 token 的价值预测,已上线;
- 页级 RL:页级奖励模型 + Dr. GRPO + KL 约束,目前只有离线结果。
线上用约 200M 参数的 WBC 模型,对成熟的多阶段生产栈拿到核心指标 +0.24%(95% CI [0.17%, 0.30%],p<0.001),端到端延迟 -20%。
与以往工作的区别:TIGER / HSTU / OneRec 等生成式推荐生成的是扁平 item 列表;以往的页级推荐(WWW15、WSDM16、RecSys18、KDD19)不是 LLM 式端到端生成。GenPage 把两者结合到工业级首页上。
整体实现思路
- 样本:一次首页曝光 = Context(行为历史、画像、请求上下文)+ Page(按布局顺序的行和实体)+ Feedback(播放、点赞、放弃等)。Feedback 不作为输入,只经奖励系统转成监督信号。
- 自定义 tokenizer:一个实体、一个行各占 1 个 token;行为事件拆成 4 个 token。
- 模型:标准 decoder-only Transformer,输入 embedding 与输出投影解绑,线上约 200M 参数。
- 训练:预训练(next-token,模仿生产正反馈页)→ 后训练(WBC 或 RL)。周期性全量重训 + 每日增量后训练。
- 推理:自回归贪心解码 + 逐请求动态 mask 的约束解码 + 混合行解码;分页时把已生成行和最新会话交互追加进 prompt。
子模块实现(可复现细节)
1. Context tokens
- 行为历史:每个动作抽取 [Entity ID][Action Type][Action Time Bucket][Action Duration Bucket]。论文的例子:「30 天前看了 Orange Is the New Black 50 分钟」,GPT-5 tokenizer 要 16 个 token,这里只要 4 个。动作包括显式信号(播放、加入 My List、点赞)和隐式信号(看预告片、访问详情页)。
- 画像:语言、profile 类型(Kids / Adult)等。
- 请求上下文:时段、星期、设备。
- 连续值(时间戳、时长)分桶,保证词表有限;每个数据源前插入段起始特殊 token,帮助模型区分来源。
- 过长的数据源(如完整曝光历史)用手工摘要版本代替。作者承认这仍是一种 prompt 工程,端到端压缩长数据源留作后续工作。
2. Page tokens 与分页
- 每个行、每个实体各 1 个 token,按布局顺序排列;实体和行词表每日更新。
- 仍未入词表的实体靠语义 embedding 融合和 fallback token 处理。
- 分页推荐:首页按几行一批增量生成。每次分页请求前,把已生成行的 page token 以及用户在这些行上的最新交互(来自实时事件日志)追加进 prompt,再生成下一批。
3. 奖励系统
沿用 Netflix 内部奖励系统(RecSys 2023 “Reward innovation for long-term member satisfaction”),通过线上 A/B 调到与长期满意度对齐。每个曝光实体得到一个标量奖励:一晚刷完的剧 > 看了 10 分钟的电影;曝光后放弃为负。页级奖励 = 页内所有曝光实体奖励之和。
4. 模型结构
- 标准 decoder-only Transformer(GPT-2 式)。
- 解绑输入 embedding 和输出投影:预训练是 softmax over vocabulary,WBC 是逐 token sigmoid,两者最优 logit 尺度差别很大,解绑后更灵活。
- 线上首轮 A/B 用约 200M 参数以满足延迟预算。论文未披露层数、宽度、词表大小。
5. 预训练(next-token prediction)
- 从零训练,给定 context 和 page 前缀预测下一个 page token。
- 数据:生产中获得正反馈的首页曝光。形式上更像 LLM 的 SFT,但因为是从零训练,所以叫预训练。
- 局限:只学会模仿生产系统,没有直接优化奖励大小;GenPage 进入生产后再用自己生成的页面训练,有模型退化(model collapse)风险,因此需要后训练。
6. WBC 后训练(已上线)
- 对每个曝光实体:标签 = 奖励符号(正向互动 vs 放弃),权重 = 奖励绝对值(刷剧权重大于短播放)。
- 对每个曝光行:行奖励 = 行内实体奖励聚合。
- 在对应 token 的 logit 上优化加权二元交叉熵,logit 解释为「在该位置生成该 token 的价值」。逐 token 目标天然完成信用分配,比页级 RL 好优化。
- 随机负样本:每个曝光目标额外采随机 token 作负例。冷门 token 被采作负例的次数远多于成为正例,相当于注入温和的悲观(流行度先验),防止噪声导致冷门实体被自信地推上来。
- 解码:每步算所有候选 token 的价值(logit),贪心取最大,追加到前缀,直到整页生成完毕。
- 在生产排序模型的标准评估集上,WBC 模型的 weighted AUC 等实体级指标超过生产排序器(未给数字)。
7. RL 后训练(离线探索中)
- 类比 RLHF 两步:先训页级奖励模型,再对其优化策略。奖励模型与第 3 节的奖励系统不同:奖励系统只能给真实展示过的页面打分,奖励模型可对任意生成页预测页级奖励。
- 奖励模型:Transformer,从预训练 ckpt 初始化,以实体奖励之和为监督目标;另加规则奖励(页面要像行的列表;关键行/实体不能太靠下)。
- 算法:Dr. GRPO;框架 verl + vLLM;prompt = 生产用户请求的 context tokens;策略与参考模型都从预训练 ckpt 初始化。
- KL 惩罚把策略约束在预训练(即模仿生产策略)附近,使生成页落在奖励模型可靠的覆盖区内,减少 reward hacking;与基于日志 propensity 的 off-policy 修正相比避免了高方差。
- 采用 RL 的其他动机(测试时推理、多 token 实体如 [Show ID]+[Episode #] 或多层 SID)本文未实现。作者明确指出:实体用多 token 表示时,WBC 的逐 token 标签会变得含混。
8. 冷启动
- 上下文注入:把新实体或时效实体(如 Live Now 直播)的元数据直接写进 context tokens。
- 语义 embedding 融合:实体输入 embedding = ID embedding ⊕ 内容 embedding(简介、演员、字幕、类型、视频内容),融合方式未说明。训练时以小概率把实体 ID token 替换为通用 fallback token,让模型学会只靠内容 embedding 推荐;新实体一有内容元数据就在同一隐空间里有表示。
9. 多节奏增量训练
- 按可调周期(图 2 示意为每周)在大历史窗口上做一次完整预训练 + 后训练。
- 期间每天从前一天 ckpt 继续后训练,数据 = 当天数据 + 采样的历史子集,保持新鲜同时防灾难性遗忘。
- 新 token 用同类 fallback token([Row Fallback Token] / [Entity Fallback Token])初始化;训练中随机把一小部分已知 token 换成 fallback,让模型能平稳处理未知 token。
10. 约束解码执行业务规则
- 规则包括结构约束(页面必须是行的列表)和产品逻辑(去重、行置顶、类目一致:Comedy 行只能放喜剧)。
- 每步按适用规则算可用 token mask 作用于 logits。因为 1 实体 / 1 行 = 1 token,规则直接映射为 token 级 mask,不需要文本词表上的多 token 记账。例:要把「热门游戏」行钉在第 2 行,就在该位置 mask 掉其他所有 token。
- 难点:规则逐请求、逐位置变化,不能复用固定约束集,需对推理引擎做定制才能守住延迟。
11. 混合行解码
- 每行只自回归生成前几个实体(它们最受注意,决定该行观感与主题)。
- 以这个前缀为条件,一次前向得到所有合规实体的 logits,取 top 补齐该行其余位置(仍受业务规则约束)。论文未给前缀长度。
实验设置与结果
所有离线实验基于 Netflix 内部数据;因系统迭代开发,各消融用不同配置和数据快照,只报相对比较;默认约 200M 模型。
预训练是否有用(表 1)
| 指标 | 有预训练 | 无预训练 |
|---|---|---|
| Loss(加权 BCE) | 0.321 | 0.333 |
| Row AUC | 0.884 | 0.879 |
| Entity AUC | 0.920 | 0.910 |
Entity AUC 0.91 → 0.92 意味着(忽略样本加权)随机正负曝光对的误排率从 9% 降到 8%,作者称这在成熟生产系统上单次改动很少见。
模型规模 vs 上下文丰富度
| 维度 | 设置 | WBC loss 下降 |
|---|---|---|
| 模型规模 | 120M → 200M → 450M → 900M(约 7.5×) | 约 1.3% |
| 上下文丰富 | 固定模型规模,6 步逐步加数据源 / 改 tokenize | 约 6.9%(累计) |
- 预训练 loss 和 WBC loss 都随规模近似幂律下降。
- 若干单次上下文改动的收益就超过整个 7.5 倍扩参。作者判断当前个性化先受限于输入信息与表示,其次才是容量;上下文饱和后容量才会成为主驱动。
- 注意:上下文曲线是逐步相对提升复合出来的(不同快照),并非对同一基线直接测量。
RL 后训练(离线,图 5)
- 页级奖励随训练步数稳步上升,但评估用的就是被优化的奖励模型,作者自己也说「基本是确认性的」。
- 多样性(页内实体成对 embedding 距离)也明显上升,尽管目标里没有多样性项。作者据此认为策略在整页层面优化,而不是逐 token 短视优化。
线上 A/B(14 天,图 6)
| 项目 | 结果 |
|---|---|
| 模型 | ~200M,WBC 后训练 |
| 候选 | 在现有生产行 / 实体候选集上解码(候选集已处理资格等规则) |
| 变体 | 5 个(随机负样本数量、训练曝光过滤不同) |
| 核心参与度指标 | 5 个变体全部显著(p<0.001),最佳 +0.24%,95% CI [0.17%, 0.30%] |
| 端到端服务延迟 | -20%(替代多级排序和重特征计算;自定义 tokenizer 与混合行解码减少解码步数;还有优化余量) |
其他观察:
- 曝光结构偏移:新片 vs 老片、剧 vs 电影、高 vs 低质量互动的曝光占比发生了未预期的变化。作者推测是个性化更精准、曝光效率提高(用户用更少曝光就找到想看的),这把继承自旧栈、尚未适配生成范式的组件(如奖励系统)的问题暴露出来,计划进一步分析和调整。
- 会话内响应:最新会话行为能迅速影响后续推荐,并在一两天后回落到长期偏好,说明模型确实利用了行为时间戳 token,无需旧栈那样的手工特征。
思考与可参考价值
值得借鉴的点
- 整页序列化:电商首页 / 频道页的「楼层 × 商品」和 Netflix 的「行 × 实体」同构。把楼层 token 与商品 token 按布局展开,由一个模型同时决定楼层和楼层内商品,可替代楼层排序 + 商品排序两套模型,并天然支持整页多样性。
- WBC 是从生成式推荐落地的稳妥第一步:它沿用现有精排的标签和权重体系(奖励符号作标签、幅度作权重),信用分配干净,线上收益可以先拿到;页级 RL 作为第二阶段。前提是 item 是单 token。用多层 SID 的团队要注意作者的提醒:多 token 实体会让逐 token 标签变得含混。
- 先做 prompt,再加参数:6.9% vs 1.3% 的对比对资源有限的团队很有用。行为 token 化为「ID + 行为类型 + 时间桶 + 时长桶」4 个 token,简单可直接借用。
- 随机 token 负例 = 流行度先验,抑制长尾噪声高分;fallback token 随机替换 + 内容 embedding 融合是新品冷启动和日更词表的低成本方案。
- 约束解码 + 混合行解码:前几个位置自回归、其余一次前向取 top,是延迟与质量的实用折中。
采用前要核对
- 商品库规模:电商商品通常是千万到亿级,远大于 Netflix 片库,1 item = 1 token 的输出层(softmax 或价值头)难以直接照搬,需依赖候选集限制或 SID(推断)。
- 线上 GenPage 仍在生产候选集上解码,召回与资格过滤没被替换。「一个模型替代整栈」只完成了排序 / 页面组装这一段。
- 预训练只模仿生产正反馈页面,会继承旧系统偏差;上线后再用自己产生的页面训练,要监控退化。
- 奖励系统必须与新范式对齐:Netflix 线上已出现曝光结构偏移。
- 页级 RL 的离线评估不能用训练用的奖励模型自评,需要独立奖励模型、规则评估或反事实估计(作者列为开放问题)。
- 论文未公开数据规模、超参和关键模块消融(语义融合、混合行解码前缀长度、解绑 embedding),复现只能参考思路。