单页网站建设服务好的商家,建设银行官网招聘网站,做网站用的主机,信息流广告投放工作内容原文地址#xff1a;OneRec Technical Report LLM4Rec的整合之作#xff0c;虽然在一些细节的实现和评估上有可以质疑的点。相比传统推荐的改动主要有以下几点#xff1a; MLLM多模态item表示 embedding量化超长历史行为序列的应用#xff1a;聚类相似检索模型结构…原文地址OneRec Technical ReportLLM4Rec的整合之作虽然在一些细节的实现和评估上有可以质疑的点。相比传统推荐的改动主要有以下几点MLLM多模态item表示 embedding量化超长历史行为序列的应用聚类相似检索模型结构encoder建模用户兴趣 decoder自回归生成session维度的推荐序列训练数据优质session的选择后训练GRPO多目标奖励模型的构建由于这篇工作投稿的paper和技术报告两模两样的强化学习那边用的算法都不一样以下以技术报告为主解决的问题级联结构导致计算资源浪费在通信和存取上qps40w和延迟500ms要求导致无法应用大规模计算多目标之间存在冲突且各级之间的目标不统一和主流AI架构脱节方法不包含item representation的模型架构如下item表示tokenize在训练生成式推荐模型之前需要把快手十亿量级的视频中的每个item用一个固定的且量级较小的词表表示出来。为此进行以下步骤生成item的多模态表示对每个视频抽取摘要, tag, ASR, OCR, 封面图以及均匀采样的5帧图片用一个 miniCPM-V-8B 生成一个1280个token向量的表示然后用QFormer压缩到4个token向量构建item pair: 1) U2I pair对用户点击过的item选择用户点击历史中跟它最相似的item组成pair 2) I2I pairswing等相似分最高的item pair用构建好的item pair训练此模型训练目标包括 1) item-to-item的对比loss用于对齐相似item之间的表示2用LLaMA3做decoder进行next-token-prediction为了防止模型产生幻觉用RQ-Kmeans做tokenization如图右通过不断对残差进行K-means聚类以一种粗粒度到细粒度的方式进行embedding量化为每个item生成语义ID 我理解是每层残差以一个ID替代了之前生成的4个token的item embeddingRQ-Kmeans的过程如下采取这种聚类方式的主要目的是为了平衡每个类别的item数算法的主要目的是平衡每个cluster的embedding数量。特征我们的特征主要分为四类静态用户特征作为1个token输入模型制作方法是把uid年龄性别embedding拼接在一起过2层Dense短期行为特征用户最近交互的20个item把item embedding, tag, timestamp, 播放时间, 播放时长, 行为标签拼接起来过2层Dense然后组成一个长度20的序列正反馈特征长度为256的正反馈item序列用户生命周期行为特征一个记录用户整个生命周期行为的超长序列用一个两阶段的层级压缩方法加入模型特征对超长序列的压缩做法对每个用户将它们的lifelong序列用前面生成的item representation进行层级聚类簇的数量限制在用户历史长度的三次方根对序列中的每个item它们的id类特征替换成离它所属的簇的中心最近的一个item特征数值类特征替换成整个簇item数值的均值每个item的特征拼接起来过2层Dense对于这个超长的序列用QFormer把它压缩成一个长度为128的短序列模型结构不同于其他很多LLM4Rec方法本文的模型架构由一个encoder和一个decoder共同组成。encoder的输入为z ( 1 ) [ h u ; h s ; h p ; h l ] e p o s z^{(1)} [h_u;h_s;h_p;h_l] e_{pos}z(1)[hu​;hs​;hp​;hl​]epos​每层transformer内的结构z ( i 1 ) z ( i ) S e l f A t t n ( R M S N o r m ( z ( i ) ) ) z^{(i1)} z^{(i)} SelfAttn(RMSNorm(z^{(i)}))z(i1)z(i)SelfAttn(RMSNorm(z(i)))z ( i 1 ) z ( i 1 ) F F N ( R M S N o r m ( z ( i 1 ) ) ) z^{(i1)} z^{(i1)} FFN(RMSNorm(z^{(i1)}))z(i1)z(i1)FFN(RMSNorm(z(i1)))decoder的输入从一个代表序列开始的可学习的token开始S m { s [ B O S ] , s m 1 , s m 2 , . . . , s m L t } S_m \{s_{[BOS]}, s_m^1, s_m^2, ..., s_m^{L_t}\}Sm​{s[BOS]​,sm1​,sm2​,...,smLt​​}d m ( 0 ) E m b _ l o o k u p ( S m ) d_m^{(0)} Emb\_lookup(S_m)dm(0)​Emb_lookup(Sm​)每层decoder的结构d m ( i 1 ) d m ( i ) C a u s a l S e l f A t t n ( d m ( i ) ) d_m^{(i1)} d_m^{(i)} CausalSelfAttn(d_m^{(i)})dm(i1)​dm(i)​CausalSelfAttn(dm(i)​)d m ( i 1 ) d m ( i 1 ) C r o s s A t t n ( d m ( i 1 ) , Z e n c , Z e n c ) d_m^{(i1)} d_m^{(i1)} CrossAttn(d_m^{(i1)}, Z_{enc}, Z_{enc})dm(i1)​dm(i1)​CrossAttn(dm(i1)​,Zenc​,Zenc​)d m ( i 1 ) d m ( i 1 ) M o E ( R M S N o r m ( d m ( i 1 ) ) ) d_m^{(i1)} d_m^{(i1)} MoE(RMSNorm(d_m^{(i1)}))dm(i1)​dm(i1)​MoE(RMSNorm(dm(i1)​))在预训练阶段模型用session层级的next-token prediction进行训练使用交叉熵loss。样本相比于传统推荐方法里point-wise的推荐我们使用session-wise生成的方式来进行视频推荐。一个session指的是一次用户请求返回的一个batch的视频通常是5个到10个一个session内的视频通常会考虑到用户兴趣、连贯性和多样性等多种因素。因此session-wise的输出和样本能够使模型习得视频之间的依赖。我们设置了一些规则来定义高质量session包括用户在session内实际观看的视频数量大于等于5个用户观看这一session内视频的总时长超过某个阈值用户对这一session内的视频有显式的交互行为例如点赞收藏或分享在经过亿些轮次的训练之后我们得到了seed模型M t M_tMt​奖励模型目前我们已经利用高质量session训练出了一个基础模型保证了生成session的质量。在此基础上我们希望用GRPO算法进一步提升模型能力。在传统NLP领域偏好数据很容易通过打标获得。然而在推荐领域由于user-item交互的稀疏性我们需要一个奖励模型来进行打分。奖励模型奖励模型的输入是用户representation和单个item的representation模型主体部分是一个SIM模型为了同时建模多个目标SIM的上层接了多个目标的塔训练过程中这些塔的输出分别与各个目标求BCE loss作为奖励模型的辅助loss。模型的最终输出是一个综合得分P-Score这个得分是将各个塔的隐藏层、user feature和item feature拼接起来过一个MLP得到的模型最终的loss是用这一个分数与各个目标进行计算然后加权求和Early Clipped GRPO我们的GRPO优化目标为其中G为主体模型为一个用户一次性生成的item数r i r_iri​表示第i个item过奖励模型输出的P-Score。为防止梯度爆炸对于负的奖励我们进行了loss的截断。生成格式规范为了规范模型生成的item避免生成token无法组合成合法item ID我们另外加了一个强化学习训练。在为每个用户生成G个item的时候从中采样出K个样本判断它们是否能组成合法ID奖励如下工业场景对齐在实际推荐场景中不仅要考虑用户偏好也要考虑到社区生态、商业化、冷启和长尾内容保量等等方面。过往方法中通常通过各种策略完成这些要求我们只需要在奖励系统中加入这些因素对强化学习的优化目标进行改造即可。例如如果生成的item是有害的我们会按比例降低reward训练Infra硬件配置90台服务器每台8旗舰GPU2CPU训练加速embedding加速自研的SKAI framework提供GPU unified embedding tableembedding缓存和prefetch pipe并行训练数据并行、ZERO1 Zero: Memory optimizations toward training trillion parameter models. 和梯度加速多精度计算MLP层使用BFloat16精度目的是提升性能attention的编译优化这些优化共提升模型训练MFU ? - 23.7%样本量OneRec-0.935B在大约1000亿样本后拟合每个target item被拆成3个semantic token关键参数后训练后训练分成RSFT (Reject Sampling Fine-Tuning) 和 RL两步RSFT: 按播放时长对所有用户session排序过滤掉后50%再做一轮NTP训练RL: 从RSFT数据集中采样1%的数据每个用户生成512个item利用这512个样本过奖励模型进行训练每1000步后将更新后的参数用一个MQ传给推理模型进行更新。评估评估指标NTP阶段的交叉熵P-ScoreXTR