网站视差怎么做,义乌 网站制作,自助建站会出现什么问题,婚纱摄影网站模板本文详细介绍了多模态推荐系统的技术演进与实战应用。从传统推荐算法到多模态表征技术#xff0c;再到淘宝闪购场景下的三阶段训练策略#xff0c;展示了多模态特征如何提升推荐效果。同时探讨了生成式推荐的前沿探索#xff0c;分析了量化编码LLM的技术路线#xff0c;为推…本文详细介绍了多模态推荐系统的技术演进与实战应用。从传统推荐算法到多模态表征技术再到淘宝闪购场景下的三阶段训练策略展示了多模态特征如何提升推荐效果。同时探讨了生成式推荐的前沿探索分析了量化编码LLM的技术路线为推荐系统未来发展提供了技术参考。项目组淘宝闪购DIC算法与搜推算法团队引言推荐系统作为互联网时代连接用户与信息的核心技术正在经历从传统协同过滤向多模态智能推荐的重要变革。随着深度学习技术的快速发展特别是大语言模型和多模态预训练技术的成熟推荐系统开始从单纯依赖用户行为ID特征转向充分利用商品图像、文本描述等丰富内容信息的新范式。笔者有幸于24年下半年和25年初深度参与了淘宝闪购首页店铺推荐场景的多模态推荐系统设计与实现以及生成式ranking前期技术方案的探索实践。在此过程中在多模态推荐技术发展脉络、实践挑战以及生成式推荐技术方法探索等方面收获颇丰。趁着25年上半年总结的机会希望将这些学习路径、技术探索过程、思考感悟以及实践经验进行系统性的完整回顾整理成文作为学习笔记与大家分享交流。文章主要内容包括技术演进梳理从传统推荐算法向多模态推荐的发展历程以及多模态表征技术的核心方法实践经验总结基于淘宝闪购场景的多模态推荐系统完整设计与实现过程前沿探索分享生成式推荐的技术尝试与业界发展趋势希望这份总结能够为同样在多模态/生成式推荐领域探索的技术同学提供一些参考。一、传统推荐算法向多模态的演进1.1 传统方法回顾推荐系统的基础架构通常由用户特征、物料特征和交互预测模块组成。在传统基于深度神经网络DNN的推荐系统中特征工程是核心环节其中ID类特征的处理尤为重要其常见类别与处理流程如下用户ID特征基本属性 年龄分桶数值化、地域等标签化特征历史行为序列 用户历史交互的item序列通过Embedding层和池化操作形成综合表征物料ID特征动态属性 销量、评分、卫生等级等实时业务指标静态属性 类目、品牌等固有特征特征编码编码流程原始特征 → Hash编码 → Embedding层 → 特征向量历史序列处理历史行为序列中的item分别进行Embedding编码拼接后通过池化生成序列整体表征ID特征的Embedding层通常不进行独立训练而是与下游预测任务端到端联合优化。以下是一个典型的训练架构示例source: https://zhuanlan.zhihu.com/p/570911435特征处理说明用户基础特征直接输入Embedding层用户历史行为特征序列item分别Embedding后拼接经池化形成综合表征候选item特征当前曝光物料的特征向量训练任务设计CTR任务预测用户对每个曝光item的点击概率CVR任务预测用户对每个曝光item产生转化行为的概率如下单/注册实现方式Embedding层在CTR/CVR任务间共享预测层分设独立MLP网络适应不同任务特性评估指标AUCArea Under Curve衡量模型区分正负样本的能力离线指标与在线效果的关联性验证A/B测试等在线评估方法然而传统架构的ID特征方法存在一些本质局限如新物料缺乏交互历史导致的冷启动问题以及ID特征无法捕捉物料内容语义信息的问题。这些局限性推动了推荐算法的持续演进和创新。1.2 技术演进1.2.1 推荐算法的多元化发展2018-2023注意力机制引入DINKDD 2018[1]在传统EmbeddingMLP范式基础上通过引入目标注意力机制Target Attention实现用户兴趣的动态建模。每个历史item与候选item进行向量减法运算后与原始序列向量拼接输入全连接网络生成反映用户动态兴趣的最终表征突破了简单池化的信息损失限制。图神经网络应用以LightGCNSIGIR 2020[2]为代表通过建模用户-物品交互图捕捉高阶协同过滤信号简化图卷积网络结构并显著提升推荐效果。对比学习引入受计算机视觉启发SGLSIGIR 2021[3]和CL4SRecICDE 2022[4]等工作将对比学习应用于推荐系统通过数据增强策略缓解数据稀疏性问题。预训练范式探索UniSRecCIKM 2022[5]和P5RecSys 2022[6]等工作借鉴NLP预训练经验实现跨域知识迁移和统一任务建模为推荐系统引入了预训练-微调的新范式。1.2.2 大语言模型与多模态推荐的结合探索2023-2024上述技术演进虽然在模型架构和学习范式上取得了显著进展但本质上仍局限于ID特征和少量结构化特征的建模。随着深度学习在计算机视觉和自然语言处理领域的突破特别是预训练大模型的成熟推荐系统开始探索如何利用商品图片、描述文本等丰富的多模态内容信息。2023年以来大语言模型技术的快速发展为多模态推荐提供了新的技术基础推荐算法开始从纯ID特征建模转向ID特征与多模态内容特征的深度融合。1.2.2.1 多模态推荐的价值与挑战多模态特征的引入主要解决了传统推荐系统的三大痛点长尾item和长尾用户的行为序列数据不足问题、新item和新用户的冷启动问题、跨场景的推荐特征迁移问题。然而多模态推荐面临两个核心技术挑战一是如何使多模态表征对齐推荐中的user-item交互关系即在语义层面定义推荐中的相似item二是稠密语义特征与稀疏ID特征如何联合训练两类特征在维度、更新频率、训练方式等方面存在显著差异。1.2.2.2 代表性工作及其技术创新小红书AlignRec2024.03AlignRec: Aligning and Training in Multimodal RecommendationsLLM2VecAlignRec通过联合训练策略系统性地解决了多模态推荐的核心挑战多模态编码器使用BEIT-3交叉注意力机制实现视觉与文本的统一表示通过mask loss进行对齐训练聚合模块采用LightGCN进行图结构建模。设计特征聚合模块多模态特征过MLPsigmoid降维后与ID特征做元素乘法实现简化基于topk相似item计算包含item相似关系的多模态表征取用户点击序列item特征和作为用户多模态表征融合模块ID特征与处理后的多模态特征融合向量减法得到综合的user特征与item特征通过对比学习优化针对核心挑战的解决思路AlignRec采用联合训练对齐策略通过特征聚合模块将ID特征与多模态特征融合后基于item融合特征相似度关系建模item语义特征实现了深度融合而非简单拼接。值得注意的是AlignRec通过图文对自身mask训练得到融合表征的方式大致等价于图文表征直接相加而缺乏对比学习。这种设计导致模型在基础表征阶段缺乏对item整体表征间相似度关系的理解因此需要完全依靠后续的Aggregation Module通过LightGCN等复杂机制来重新建立内容与ID表征的对齐关系。此外小红书的Notellm系列工作[8,9]也同样值得关注感兴趣的读者可进一步阅读相关论文。阿里妈妈SimTier MAKE2024.07Enhancing Taobao Display Advertising with Multimodal Representations: Challenges, Approaches and InsightsSimTier MAKE提出了基于语义交互关系的对齐策略强调多模态特征的纯粹性预训练阶段使用搜索-购买行为链作为正样本效果最佳。关键洞察是定义语义相似的商品对时需要保证这一相似性能够归因于图像、文本的多模态语义相似性而不是其他无关因素使用其他无关因素会导致表征偏离预期退化为ID表征。负样本使用MoCo memory bank扩量至196,800采用InfoNCE loss集成阶段SimTier每个item与其他所有item计算语义相似度将相似度结果在[-1,1]分为N个区间统计每个区间的相似度结果数量得到N维向量作为输出简化多模态表征的使用方式MAKE针对ID模型和多模态模型在泛化能力上的差异优化两者在训练epoch数上的不同需求针对核心挑战的解决思路与AlignRec不同SimTier完全从语义层面着手定义相似item利用用户的搜索-购买行为链避免多模态特征退化为ID特征。这种策略的核心理念是保持多模态特征的语义纯粹性避免被ID特征的协同过滤信号污染。快手QARM2024.11QARM: Quantitative Alignment Multi-Modal Recommendation at KuaishouQARM提出了基于ID交互关系的对齐策略强调适配真实推荐场景Item对齐对多模态模型使用下游推荐的交互数据微调使多模态表征更适配推荐场景真实的User-Item交互行为分布基于U2I召回模型对于每个用户正向点击的目标Item从最近的50个点击Item中选择与目标Item在ID表征空间中最相似的Item作为触发Item基于I2I召回模型利用现有模型学习到的具有高相似度的稳定Item Pair对作为数据源比如Swing召回量化编码将对齐的多模态表征转换为可训练的语义ID。针对多模态表征更新问题业界一种最直接且广泛应用的trick, 是使用多模态表征来构造语义相似Item的ID list, 然后以ID List作为该item的语义特征输入到推荐模型, 一定程度上间接规避了多模态表征不更新的问题。QARM将上述trick做到极致首先将多模态表征量化压缩成语义ID再将语义ID输入到推荐模型中。针对核心挑战的解决思路QARM采用基于ID特征交互关系定义相似item的策略使多模态表征更适配User-Item交互行为分布。这与阿里妈妈的方案形成了有趣的对比QARM认为应该让多模态特征适配现有的推荐交互模式而阿里妈妈认为这样会使多模态特征退化为ID特征应该完全从语义层面定义相似性。1.2.2.3 技术路线总结与发展趋势从这些工作可以看出业界在多模态推荐的两大核心挑战上形成了不同的技术路线多模态表征对齐策略基于ID交互关系对齐快手QARM适配现有推荐行为分布但可能导致多模态特征退化基于语义交互关系对齐阿里妈妈保持语义纯粹性但可能脱离真实推荐场景联合训练对齐小红书AlignRec通过深度融合平衡两者但训练复杂度较高稠密与稀疏特征融合方案量化编码快手将语义特征转化为可更新的语义ID解决多模态表征更新问题相似度分桶淘宝将连续相似度离散化为固定维度向量简化使用方式特征聚合小红书通过聚合模块实现深度融合保持表征能力这些探索表明多模态推荐正在从简单的特征拼接向深度语义对齐演进不同的技术路线反映了对语义纯粹性与行为适配性平衡的不同理解为后续生成式推荐的发展奠定了重要基础。1.3 总结综上所述推荐算法正在从传统ID特征向多模态内容特征演进早期的注意力机制、图神经网络奠定了动态建模基础近期的对比学习、预训练方法提升了特征表征能力而最新的AlignRec、SimTier、QARM等工作则直接探索了多模态信息在推荐中的应用。这一演进过程中多模态表征技术成为了关键的技术基础。无论是AlignRec的BEIT-3交叉注意力机制还是QARM的语义ID量化编码都依赖于高质量的多模态特征表示。同时业界在多模态表征对齐策略上形成了不同的技术路线反映了对语义纯粹性与行为适配性平衡的不同理解。这些技术探索和设计思考为构建有效的多模态推荐系统提供了重要指导也为后续生成式推荐的发展奠定了坚实基础。因此深入理解多模态表征技术的发展脉络和设计原则对于构建高效的多模态推荐系统至关重要。二、多模态表征技术发展2.1 文本表征的两种范式随着大语言模型的发展文本表征技术形成了两种主要的技术路线它们在架构设计和训练策略上存在显著差异2.1.1 Encoder-only架构表征Encoder-only架构的表征方式是文本表征如BERT、GTE的主流方法。架构特点采用双向注意力机制每个token都能关注到序列中的所有其他token天然适合文本理解和表征学习任务全局特征提取策略CLS Token方式使用序列开头的[CLS] token作为全局表征平均池化方式去除CLS token后对剩余token特征进行平均池化典型工作GTE[12]通过“大规模无监督对比预训练多任务监督微调”的两阶段递进式训练结合改进的双向对比损失与动态数据采样在无需私有数据和任务提示下实现通用文本与代码表示。GTE2.1.2 Decoder-only架构表征随着LLM的快速发展为在表征技术上有效利用LLM强大的世界知识以LLM2Vec[13]为代表的Decoder-only文本表征工作开始盛行GTE同样发布了基于qwen的decoder-only类系列模型。LLM2Vec架构适配注意力机制改造将原始的单向注意力因果掩码改为双向注意力掩码矩阵全为1使预训练的生成式模型能够进行双向信息交互全局特征提取策略EOS Pooling取序列最后的EOS token特征作为全局表征 在单向注意力中只有最后一个token能关注到前面所有token的信息Mean Pooling对所有token特征进行平均池化cls去除与否影响不大Weighted Mean Pooling基于位置信息的加权平均 序列中越靠后的token关注到的全局信息越多因此给予更高权重训练方法创新MNTP(masked next token prediction)类似BERT的完形填空任务但适配decoder架构关键差异BERT使用被掩码位置的预测结果计算损失而decoder使用上一个词位置的预测结果因为decoder的预测输出对应下一个词无监督对比学习问题背景模型主要学习word-level特征缺乏sentence-level的表征能力解决方案对同一句子进行两次随机dropout生成两个不同的表征将同一句子的两个表征作为正样本对不同句子间的表征作为负样本对通过对比学习增强句子级别的表征能力2.1.3 Qwen3 Embedding(SOTA)作为当前文本表征领域的代表性工作Qwen3 Embedding[14]展现了decoder-only架构的最新发展水平双模型设计Embedding模型采用decoder-only架构取EOS token作为文本表征训练策略遵循GTE的多阶段对比学习范式Ranking模型保留原始LLM架构通过特定instruct训练输出yes/no判断结果三阶段训练策略Stage 1 - 大规模数据合成仅训练Embedding模型数据规模通过二阶段数据合成生成15kw对训练数据配置生成阶段以Qwen3预训练语料库为文档源为每个文档合成角色Character、问题类型Question Type如关键词、事实、总结等和难度等级Difficulty如高中、大学、博士级角色候选来自Persona HubGe et al., 2024通过检索模型选出与文档最相关的五个角色增强查询多样性采用JSON格式输出确保结构化处理查询生成阶段根据配置结果结合指定的查询类型、长度、难度和语言生成相关查询覆盖检索、语义相似性等多种任务类型和多语言场景Stage 2 - 高质量数据精炼双模型联合训练数据筛选从Stage 1数据中筛选余弦相似度0.7的样本得到1.2kw对高质量数据并补充700万对开源数据差异化训练Embedding模型采用对比学习使用InfoNCE损失函数Ranking模型采用监督微调SFT使用SFT损失标签为yes/no二分类Stage 3 - 模型融合优化双模型权重融合利用SLERP球面线性插值技术对多个ckpt进行权重融合增强模型在不同数据分布下的鲁棒性和泛化能力技术创新点系统化数据合成通过角色-任务-难度的三维配置生成高质量训练数据双模型协同Embedding和Ranking模型分工明确各自优化特定任务权重融合策略通过SLERP技术提升模型鲁棒性2.2 视觉表征的核心方法视觉表征技术主要围绕如何从图像数据中提取高层语义特征展开形成以下主流范式2.2.1 CNN架构表征以ResNet为代表架构特点通过卷积层逐级提取局部特征形成空间层次化表征深层网络通过残差连接缓解梯度消失问题全局特征提取策略全局平均池化GAP对最终卷积层特征图进行空间维度平均池化注意力池化通过可学习权重聚焦关键区域特征训练优化主要采用有监督分类预训练利用ImageNet等大规模数据集通过对比学习增强特征判别性如SupCon损失函数2.2.2 Transformer架构表征以ViT为代表架构适配图像分块嵌入将图像分割为固定大小块线性投影为序列位置编码注入添加可学习位置编码保留空间信息VIT[16]全局特征提取策略Class Token方式在序列首添加可学习[class] token作为全局表征平均池化方式对所有图像块特征进行平均聚合训练方法创新掩码图像建模MIM随机掩码图像块通过可见块预测掩码块特征类似MAE、BEiT等方法显著提升表征能力自监督对比学习对同一图像进行不同数据增强生成正样本对采用InfoNCE损失拉近正样本距离推远负样本2.2.3 两种视觉表征范式对比特征维度CNN架构Transformer架构表征能力在小数据集上表现稳定大规模预训练下效果更优特征提取方式局部到全局全局注意力交互位置信息处理卷积固有感应需显式位置编码数据依赖性相对低数据需求需大规模预训练计算效率优化程度高高分辨率计算昂贵当前趋势在特定场景仍有价值主流视觉表征方法文本表征与视觉表征技术的发展为多模态融合奠定了坚实基础两种模态的表征方法在设计理念和技术实现上既有相似性又有互补性为后续的跨模态对齐和融合提供了丰富的技术选择。2.3 图文多模态表征核心方法多模态表征技术根据不同模态信息的融合方式主要分为协同表征和联合表征两大类技术路线2.3.1 协同表征方法双塔架构的多模态对齐协同表征方法采用独立的编码器分别处理不同模态信息通过对比学习等方式实现跨模态对齐。2.3.1.1 CLIP[17]奠定双塔对比学习基础架构设计双塔结构图像编码器ViT/ResNet和文本编码器Transformer独立处理各自模态特征对齐通过线性投影层将不同模态特征映射到统一语义空间训练机制InfoNCE损失n个图像与n个文本分别编码后计算余弦相似度矩阵温度缩放通过可学习温度参数提升相似度区分度对比学习对角线元素为正样本其余为负样本进行交叉熵优化特点推理时CLIP主要用来做特征提取在图片分类任务上的用法则是vit算图向量后文本编码器算标签文本对应词向量计算余弦相似度取最大的标签优势在大规模图像-文本对上预训练展现强大的零样本能力极其适合大规模图文检索、图文特征提取等下游任务缺点只计算Cosine Similarity无法做多模态之间深度融合难一些的任务性能较差CLIP2.3.1.2 ALBEF[18]增强的多模态融合架构改进特征重要性设计视觉文本12层vit encoder for视觉6层transformer encoder for文本6层多模encoder for特征融合交叉注意力机制图像特征作为Query与文本特征的Key-Value计算注意力反之亦然多任务训练ALBEF图文对比学习ITC类似CLIP的InfoNCE损失图文匹配ITM二分类任务加入难负样本挖掘策略掩码语言建模MLM传统BERT式完形填空任务技术创新借鉴MoCo的动量思想构建动量训练框架通过动量模型蒸馏提升泛化能力在VQA等任务中准确率提升3.84%2.3.1.3 其他协同表征工作在CLIP和ALBEF的基础上还涌现出DeCLIP、FLAVA、CoCa等改进工作。DeCLIP通过多个预训练任务图像自监督、文本自监督、跨模态自监督用更少数据达到相近效果FLAVA引入更多预训练任务如MIM和MMM损失CoCa在ALBEF基础上加入解码器增强生成能力。这些工作在协同表征框架下不断优化训练策略和任务设计但基本架构思路保持一致此处不再一一展开。2.3.2 联合表征方法统一架构的深度融合联合表征方法使用统一的模型架构同时处理多种模态信息实现更深层次的跨模态理解。2.3.2.1 早期探索工作早期的联合表征探索包括VLMO、BLIP、BEiT-3等工作它们的共同特点是从双塔结构向统一架构发展VLMO通过Multiway Transformer实现模态共享BLIP提出编码器-解码器混合架构并引入bootstrapping数据清洗BEiT-3结合多种方法形成统一大模型。这些工作推动了多模态技术从双塔协同向统一建模的转变为后续的VLM统一表征奠定了重要基础。2.3.2.2 VLM2Vec范式[19]统一多模态表征的新突破VLM2Vec核心理念 将LLM2Vec的思路迁移至了多模态表征领域直接基于预训练的多模态大模型训练得到多模态表征模型充分利用其世界知识。技术实现统一表征提取直接在输入序列最后添加EOS token取VLM输出最后一个token作为整体特征任务重构策略将多种多模态任务重新设计为排名问题模型根据指令处理查询并从候选中选择正确答案四大训练任务图像分类查询为图像指令目标为类别标签视觉问答VQA查询为图像问题目标为答案选项图文检索查询和目标可以是文本、图像或两者组合视觉定位空间位置相关的视觉理解任务技术优势架构简洁无需像LLM2Vec那样对LLM本身做太多改动使其向BERT的训练方式对齐对比学习导向充分利用多模态场景下对比学习的核心作用知识继承充分利用VLM在多模态理解方面的预训练知识任务统一通过统一的排名框架处理多种多模态任务2.3.2.3 GME[20]统一多模态表征的典型实现GME核心理念 基于VLM2Vec范式构建统一的多模态表征模型解决传统方法需要部署多个独立模型或依赖OCR/Caption转换导致的信息损失问题。技术实现统一架构以MLLM为底座使用最后一个token的隐藏状态作为统一表征数据合成策略采用Doc2Query方法从维基百科合成百万级混合模态训练数据指令调优通过定制化指令适应不同检索任务场景三类检索任务单模态搜索T→T、I→I等同模态检索跨模态搜索T→I、T→VD文本到视觉文档、I→T等混合模态搜索IT→IT等复杂多模态组合检索技术优势真正统一单一模型处理所有模态组合突破CLIP等传统方法的单一模态局限效果领先GME-Qwen2-VL-7B在UMRB评测达到67.44平均分超越所有基线工程友好避免多模型部署复杂度富文本检索直接视觉处理优于OCR转换实用价值为RAG等应用提供统一的多模态检索解决方案2.3.3 技术发展趋势与展望从协同表征到联合表征的演进反映了多模态技术的发展方向但两种范式在不同场景下各有优劣联合表征的优势统一架构实现深度跨模态融合单模型处理多种任务部署便捷代表技术发展主流趋势。协同表征的持续价值灵活性可灵活选择当前最强的文本编码器和视觉编码器进行组装适配性在下游场景微调时双塔结构允许对不同模态编码器独立优化实用性在计算资源受限或对特定模态有极致性能要求时仍具优势场景依赖的技术选择通用场景下联合表征展现更强统一建模能力特定领域中协同表征在针对性优化和组件替换方面仍有独特价值在需要下游微调的情况下两种范式的最终表现仍需具体验证尚无绝对优劣2.4 总结通过对多模态表征技术发展脉络的梳理我们可以看到该领域呈现出多元化发展态势文本表征从Encoder-only向Decoder-only架构演进视觉表征从CNN向Transformer迁移而多模态表征则形成了协同表征和联合表征两条并行发展的技术路线。这一技术演进为推荐系统提供了丰富的多模态特征提取选择协同表征方法如CLIP提供了成熟稳定的图文对齐能力且能够灵活组合当前SOTA的单模态编码器联合表征方法如VLM2Vec、GME则展现了更强的跨模态理解能力但在模型选择和优化上相对固化。基于这一技术发展脉络和实际业务需求我们在24年S2面向淘宝闪购首页店铺推荐场景设计了多模态推荐方案通过三阶段训练策略系统性地解决了多模态特征预训练、用户查询对齐以及与传统ID特征融合等关键技术问题。三、淘宝闪购首页推荐场景下的多模态推荐实践在淘宝闪购首页店铺推荐场景的实际应用中用户的决策过程往往由商户/商品的多模态内容信息直接驱动。当用户浏览推荐页面时商户图片的视觉呈现、文字描述的吸引力等内容特征是其最先感知到的信息这些多模态信息在很大程度上决定了用户的点击和购买行为。然而如前文所述传统推荐系统主要依赖ID特征进行建模难以有效利用这些丰富的内容信息。特别是在本地生活场景中商户的视觉展示如店铺logo、菜品图片和文本描述如特色标签、用户评价对用户选择具有重要影响但这些信息在传统ID建模中往往被忽略。基于这一观察我们提出了多模态推荐解决方案核心思想是在传统ID特征基础上引入商户的图像和文本信息通过多模态表征学习更好地建模商户间的语义相似性从而提升推荐系统对用户兴趣的理解和预测能力。3.1 系统架构设计针对本地生活推荐场景的特殊性我们构建了基于双塔模型表征的多模态推荐系统。考虑到首页商户推荐的业务特点我们设计了层次化的商户内容表征建模方法。3.1.1 商户表征建模策略基于搜索行为建模的动机在推荐场景中用户的搜索-购买行为链能够准确反映用户的真实兴趣偏好。相比于传统的基于点击或浏览行为的建模方式搜索行为包含了用户的明确意图表达而最终的购买转化则验证了这种意图的真实性。因此我们选择基于用户搜索-购买行为模式来定义店铺内容与用户兴趣的语义相似性。用户行为模式分析用户的搜索行为呈现多样化特点既有搜品找店如搜索麻辣烫寻找相关店铺也有直接搜店如搜索海底捞还有复合搜索意图如川菜火锅。这些不同的搜索模式反映了用户对店铺认知的多个维度。店铺内容表征设计为匹配用户多样化的搜索-购买行为模式我们采用了店铺整体表征的建模方法店铺基础信息店铺logo图 店铺描述文本体现店铺品牌特色和基本信息商品组合信息该店铺热销top10商品的图文信息商品图片 recaption反映店铺的经营特色和商品供给能力这种设计能够同时满足用户看店铺品牌和看商品特色的不同决策需求。3.1.2 三阶段训练策略基于商户表征建模的设计思路我们制定了三阶段渐进式训练策略阶段一领域适配预训练在本地生活图文数据上进行跨模态对比学习建立适配垂直领域的基础表征能力。该阶段需要同时训练三类图文对齐任务商品级图文对齐建立单个商品的图文表征基础商户级图文对齐学习商户品牌信息的图文表征商户商品混合对齐建立商户整体表征的图文融合能力阶段二行为驱动微调利用真实的用户搜索-购买行为数据进行对齐训练。根据用户查询的复杂度和店铺表征的丰富度训练数据包含单query-单图和多query-多图两类通过混合训练确保模型能够处理不同复杂度的匹配场景该阶段同样包含三类对齐任务Query-Text对齐用户查询与商户文本描述的语义匹配Query-Image对齐用户查询与商户视觉内容的语义对齐Query-Fusion对齐用户查询与商户整体融合表征的综合对齐通过多维度的对齐学习确保商户整体表征能够全面捕捉用户的真实购买意图。阶段三特征融合优化参考工作[10]通过SimTier和MAKE技术实现多模态表征与传统ID特征的有效整合。这种层次化的建模方法既保证了商户表征的完整性又通过渐进式训练策略确保了不同粒度特征的有效学习和融合。这种设计思路从用户真实行为出发确保了店铺表征能够有效捕捉用户在推荐场景下的潜在兴趣。整体建模3.2 Pretrain对齐领域图文3.2.1 训练数据构建策略基于本地生活业务特点我们设计了三类图文对齐数据商品级图文对商品图片配合类目、属性信息通过MLLM生成详细的recaption突出菜品特色、口味、价格等关键信息。MLLM来自本团队训练的垂域多模态大模型店铺级图文对店铺头图结合名称、简介、品类信息利用LLM进行描述扩充强调店铺特色和服务亮点。混合级图文对店铺与商品多图组合构造反映完整经营特征的综合描述。3.2.2 模型架构设计我们在模型架构上设计两种建模方案一是采用双塔式编码架构EVL-sep建模并通过跨模态投影将文本与视觉表征统一在128维旨在提升计算效率的同时充分利用SOTA的视觉与文本encoder的各自优势二是采用联合表征EVL-uni建模利用MLLM大模型统一表征能力基于通义实验室推出的GME多模态表征模型实现图文统一encode。由于二者除建模外训练思路基本一致本文重点针对效果更佳双塔架构的EVL-sep进行介绍视觉编码模块骨干网络InternViT-300M-448px-V2.5基于InternViT-6B蒸馏得到输入处理动态高分辨率策略支持最多12个448×448图块1个全局缩略图特征压缩Pixel Unshuffle重排列 Pooling降维有效减少视觉token数量跨模态投影通过4层MLP网络(LayerNorm→Linear→GELU→Linear)将压缩后的视觉特征映射到128维共享语义空间文本编码模块骨干网络GTE-Qwen2-1.5B-instruct保持decoder架构特性表征提取采用last_token_pool策略提取序列最后有效token的特征自适应处理不同padding格式跨模态投影通过线性变换层(无bias)将1.5B维文本特征直接映射到128维共享语义空间优化策略利用LLM预训练知识增强文本语义理解能力特征对齐机制共享语义空间视觉和文本特征均投影到128维向量空间便于计算跨模态相似度L2归一化对所有模态特征进行单位球面归一化确保余弦相似度计算的稳定性温度缩放通过可学习的logit_scale参数(初始值2.6582)调节相似度分布锐度优化对比学习效果这样的设计确保了维度统一不同模态特征在相同的128维语义空间中进行比较计算效率相比原始特征维度128维大幅降低了相似度计算的复杂度表征质量通过专门的投影层学习模态间的语义对应关系对比学习框架双塔结构通过InfoNCE损失进行跨模态对比学习正样本为图文配对负样本采用batch内随机采样。InfoNCE损失函数的定义与示例计算过程如下n个句子与n个对应的图片分别嵌入、分别过一个投影层学单模转多模并统一维度、正则化得到两个n*d_e的向量I和T二者点积结果是一个形状为[n, n]的余弦相似度矩阵其中每个元素表示一个图像与一个文本的余弦相似度作为logits。乘以np.exp(t)是通过温度t对相似度进行缩放训练中t被设置为可训练参数因为余弦相似度范围0-1不太适合直接作为交叉熵的logits无上限区分度好一些logits与label算交叉熵损失对角线即正确匹配项为label1其他即错误匹配项为label0 。3.2.3 评估评估指标设计采用跨模态检索任务评估模型性能使用Recallkk1,5,10作为核心指标。具体方法为将测试集图像和文本分别编码为特征向量通过余弦相似度计算实现Text-to-Image和Image-to-Text双向检索评估正确匹配项在前k个结果中的召回率。测试集按商品单图、店铺单图、店铺商品多图三个场景分层采样确保与训练数据无重叠。正负样本构造策略正样本构建商品图片与recaption描述、商户logo与商户描述、商户整体表征与综合描述分别构成三类正样本对。负样本采样采用In-batch Negative Sampling结合困难负样本挖掘策略。困难负样本包括同类目不同商户的图文对以及基于相似度计算选择的高相似度非匹配样本提升模型的细粒度区分能力。样本质量控制通过规则过滤伪负样本移除同一商户的不同表述组合确保负样本的有效性。动态调整困难负样本比例训练后期逐渐增加困难样本占比。评估结果经过领域适配预训练的双塔式模型在跨模态检索任务上达到90.8%的整体召回率显著优于SOTA通用模型GME-qwen2-vl-7b3584维的66.5%在商品单项的图文搜索上达到93.7%的整体召回率显著优于团队过往在商品图文搜索场景训练的MS-ALBEF128维的75.8%。在单图商品、单图商户、多图混合场景下分别达到93.7%、82.0%、96.7%的平均召回表现验证了领域适配训练和精心设计的样本构造策略的有效性。预训练效果对比-综合性能3.3 SFT对齐用户偏好3.3.1 用户偏好建模思路预训练阶段虽然建立了多粒度的图文表征基础但这些表征主要基于内容相似性缺乏用户真实偏好的指导。在推荐场景中我们需要理解用户的潜在兴趣而用户的搜索-购买行为链恰好提供了这种兴趣的明确表达。我们的核心理念可归纳如下行为即兴趣用户的搜索查询直接反映其需求意图最终的购买转化验证了这种意图的真实性语义桥梁通过用户查询作为桥梁可以建立店铺内容与用户兴趣之间的语义关联推荐适配将基于搜索行为学到的语义相似性迁移到推荐场景提升首页店铺推荐的精准度3.3.2 训练数据构建数据构建与质量控制基于用户搜索后产生购买转化的真实行为数据构建用户查询, 购买店铺图片, 购买店铺描述三元组作为正样本。采用batch内其他店铺的图文信息作为负样本同时引入困难负样本挖掘策略选择与查询相似度较高但非匹配的样本进行训练。为确保数据代表性和质量统计全量餐饮店铺的高频查询词选择top10查询对应的top5成交店铺构建训练集。数据类型与训练策略根据查询复杂度和店铺表征丰富度训练数据包含两类单query-单图数据简单查询词与店铺基础图文信息的匹配多query-多图数据复合查询意图与店铺整体表征包含商品组合信息的匹配在实际训练过程中我们对比了两种训练策略分阶段训练先训练单图数据再训练多图数据和混合训练同时训练两类数据。实验发现分阶段训练会导致模型在单图匹配任务上的性能显著下降这是由于后期多图训练过程中模型对早期学习的单图匹配能力产生了遗忘。为了避免这种灾难性遗忘问题我们最终采用了混合训练策略在训练过程中同时使用单query-单图和多query-多图两类数据确保模型在不同复杂度任务上的均衡表现。3.3.3 特征融合与损失设计多模态特征融合在双塔式架构基础上我们增加了Fusion Module以实现多模特征融合采用cross-attention机制作为多模态编码器接收图像特征和文本特征作为输入输出融合后的128维多模态表征。具体而言我们对比了不同尺寸MLPFusion、TfnFusion、LmfFusion、T5Fusion等不同融合方案最终参考工作[21]使用效果最佳的T5 Feature Fusion模块以更有效的建模跨模态交互信息。多路对齐设计单一的图文对齐方法对不同模态信息的利用不够充分。虽然在多模态融合时同时使用了图像、文本信息但无法保证输出的多模态特征能够平衡利用不同模态。可能出现查询与单一模态对齐良好但与融合特征距离较远的情况导致多模态信息没有很好地协同工作。为使模型学到的表征能够充分利用图文信息我们在微调阶段将预训练时的图文对齐任务扩展为多模态对齐任务设计了三类对比学习损失Query-Image对齐约束查询表征与图像表征的语义一致性确保视觉信息的有效利用Query-Text对齐保证查询与文本描述的语义匹配强化文本语义的作用Query-Fusion对齐将查询与融合后的多模态表征进行对齐确保融合特征的有效性损失函数实现每类对齐都采用对偶损失设计即同时计算模态A到模态B和模态B到模态A的对比损失。通过温度参数τ对相似度进行缩放使用softmax归一化后计算交叉熵损失。最终的多模态监督损失为各个对比损失的加权组合Lossw1*q2t loss w2*q2i loss w3*q2f loss在loss权重分配上消融对比发现2:2:6-3:3:4带来整体召回率由0.856-0.860的提升证明各类loss在本场景任务中相当的重要性。通过多模态对齐从不同视角消除query、图像、文本、融合特征之间的表征差异。多种损失的叠加使得各个模态表征能够有效地建模到同一特征空间并且使得图像和文本中的关键信息能够主导其多模态表征。SFT建模3.3.4 评估为验证模型在真实业务场景下的表现我们设计了基于搜索订单场景的评估框架。该评估方法通过计算用户查询与候选店铺/商品的多模态相似度进行排序验证用户真实下单项在相似度排序结果中的位置。具体而言我们采用Order Hitratek作为核心评估指标其中k取值为1/5/10/20/50衡量用户真实下单项在按相似度排序的前k个结果中的命中情况。测试样本构建策略正样本定义选取产生实际下单行为的用户搜索请求将对应的下单店铺或商品标记为目标命中项候选集构造结合地理位置约束和真实下单记录构建候选池。地理匹配项通过geohash4编码筛选用户所在区域的店铺随机采样1000个作为干扰项同时加入用户实际下单的店铺/商品确保正样本存在相似度计算使用训练好的多模态模型分别编码用户查询和候选店铺的图文信息通过余弦相似度计算进行排序评估维度划分按照用户查询意图将测试集划分为三个子集商品名/商品品牌查询、商户品牌查询、店品混合意图查询分别评估模型在不同搜索场景下的表现。评估结果在Order Hitratek评估中微调后的EVL-sep模型在多个基线模型对比中表现优异整体平均命中率达到86.0%位居所有测试模型之首。值得注意的是EVL模型仅使用128维表征向量却显著优于使用1536维、3584维表征的GME-Qwen2-VL系列模型。各查询场景详细对比商品名/商品品牌查询EVL-sep在HR1上达到58.2%相比GME-Qwen2-VL-7B55.5%和GME-Qwen2-VL-2B52.0%分别提升4.9%和11.9%在HR50上达到96.5%超越两个基线模型的93.9%和92.8%。相比EVL-uni60.0%EVL-sep在HR1上略低2.8%但在高k值场景下表现更稳定。商户品牌查询EVL-sep表现最为稳定HR1为68.4%虽略低于GME-Qwen2-VL-7B71.9%和GME-Qwen2-VL-2B70.7%但在HR50上达到97.3%与基线模型持平。相比EVL-uni68.1%EVL-sep在该场景下表现基本一致。店品混合意图查询作为最具挑战性的场景EVL-sep表现突出HR1达到53.2%显著优于GME-Qwen2-VL-7B57.7%和GME-Qwen2-VL-2B54.5%在HR50上达到98.6%超越所有基线模型。相比EVL-uni48.7%EVL-sep在HR1上领先9.2%体现了分离式架构在处理复杂查询意图上的优势。综合分析显示EVL-sep模型通过精心设计的多模态融合架构和训练策略在保证效果的同时大幅降低了存储和计算成本特别是在混合意图查询这一核心业务场景下展现出显著优势验证了我们技术方案的有效性。SFT各任务效果对比SFT综合效果对比3.4 Cotrain特征融合优化多模态与ID特征融合策略多模态表征与传统ID特征的融合面临根本性挑战基于用户行为的协同过滤与基于内容的多模态表征属于不同维度学习方向的一致性较差。直接将多模态特征concat到推荐模型中效果有限需要更有效的整合方式。我们参考工作[10]采用了SimTierMAKE技术解决这一问题。SimTier通过相似度分桶的方式实现多模态信息的ID化首先计算目标物品与用户历史交互物品的多模态表征相似度然后将相似度区间划分为N个桶统计各桶内的相似度数量形成N维特征向量最后与原有ID特征拼接输入推荐模型。这种方法通过ID化降低了特征维度提升了多模态信息与推荐模型的兼容性。MAKE技术则解决了多模态特征与ID特征训练节奏不一致的问题。ID特征模型存在one-epoch现象多轮训练导致过拟合而多模态信息需要多轮训练才能充分学习。MAKE通过参数分离优化将多模态表征参数与ID特征参数独立处理允许多模态部分多轮训练而ID部分保持单轮训练同时采用深度兴趣网络处理用户行为序列实现多模态表征与ID特征的有效融合。SimTierMAKE评估经过第三阶段特征融合优化的联合训练为推荐系统离线AUC指标带来显著提升全量商户CTCVR AUC 0.19%CTR AUC 0.17%。3.5 编码实践经验总结3.5.1 建模灵活初始化策略与参数验证支持多种初始化方式包括配置模型组合的直接初始化方法和分离预训练模型加载的初始化方法。参考transformers vision_text_dual_encoder实现from_vision_text_pretrained方法通过from_vision_text_configs()实现双塔模型配置自动融合支持不同类型的视觉与文本编码器。在模型初始化后通过torch.allclose()验证参数一致性确保权重正确加载。价值提供灵活的模型构建方式支持从分离的预训练模型构建多模态模型以充分利用SOTA的视觉与文本encoder的各自优势。def __init__(self, configNone, vision_modelNone, text_modelNone): ... # 灵活初始化支持配置和模型的多种组合 if config is None and(vision_model is None or text_model is None): raise ValueError(Either a configuration or an vision and a text model has to be provided) # 从预训练模型自动生成配置 if config is None: config EvlConfig.from_vision_text_configs(vision_model.config, text_model.config) # 根据配置类型选择合适的视觉模型 if vision_model is None: ifisinstance(config.vision_config, CLIPVisionConfig): vision_model CLIPVisionModel(config.vision_config) elif isinstance(config.vision_config, InternVisionConfig): vision_model InternVisionModel(config.vision_config) ... classmethod def from_vision_text_pretrained(cls, vision_model_name_or_path: str, text_model_name_or_path: str, **kwargs): # 分布式下载协调 local_rank int(os.getenv(LOCAL_PROCESS_RANK, 0)) if local_rank 0: repo_download(repo_idvision_model_name_or_path, local_dirvis_load_dir) repo_download(repo_idtext_model_name_or_path, local_dirtext_load_dir) done_file.touch() # 分别加载视觉和文本模型 vision_model CLIPVisionModel.from_pretrained(vis_load_dir, **kwargs_vision) text_model AutoModel.from_pretrained(text_load_dir, **kwargs_text) # 融合配置并初始化完整模型 config EvlConfig.from_vision_text_configs(vision_model.config, text_model.config, **kwargs) model cls(configconfig, vision_modelvision_model, text_modeltext_model) ... # 参数一致性验证 print(vision parameter allclose:, torch.allclose( vision_model.embeddings.patch_embedding.bias.data, model.vision_model.embeddings.patch_embedding.bias.data)) return model, image_processor, tokenizer, processor视觉压缩层优化与多图像处理通过像素重排(pixel shuffle)实现特征压缩将空间维度信息无损重组到通道维度空间分辨率从H×W降至H/2×W/2相应地通道维度扩展4倍。对于多图像输入采用空间维度池化和批次维度平均融合的策略进行处理。价值减少75%的视觉token数量为计算复杂度为O(n²d)的自注意力机制带来平方级的性能提升同时适应多图场景提升训练和推理效率。def pixel_shuffle(self, x, scale_factor0.5): 通过多步维度变换将空间信息重新分布到通道维度 n, w, h, c x.size() x x.view(n, w, int(h * scale_factor), int(c / scale_factor)) x x.permute(0, 2, 1, 3).contiguous() x x.view(n, int(h * scale_factor), int(w * scale_factor), int(c / (scale_factor * scale_factor))) return x.permute(0, 2, 1, 3).contiguous() def extract_feature(self, pixel_values): vit_embeds self.vision_model(pixel_valuespixel_values).last_hidden_state[:, 1:, :] # 重塑为2D并压缩 h w int(vit_embeds.shape[1] ** 0.5) vit_embeds vit_embeds.reshape(vit_embeds.shape[0], h, w, -1) vit_embeds self.pixel_shuffle(vit_embeds, scale_factorself.downsample_ratio) vit_embeds self.visual_projection(vit_embeds.reshape(vit_embeds.shape[0], -1, vit_embeds.shape[-1])) return vit_embeds.mean(dim1) # 空间维度池化文本特征提取与T5融合架构通过last_token_pool()实现文本序列最后有效token的池化自适应处理左右padding格式。文本特征经过线性投影层映射到共享语义空间。采用T5FusionLayer实现深度跨模态融合配置2层Transformer、12个注意力头将文本和图像特征拼接后利用自注意力机制学习跨模态依赖关系。价值确保文本特征提取准确性支持不同文本输入格式。相比简单MLP融合T5架构能学习更复杂的跨模态依赖提升检索和理解能力。def last_token_pool(self, last_hidden_states: Tensor, attention_mask: Tensor) - Tensor: 提取序列最后一个有效token的特征适配不同padding方式 left_padding (attention_mask[:, -1].sum() attention_mask.shape[0]) if left_padding: return last_hidden_states[:, -1] else: sequence_lengths attention_mask.sum(dim1) - 1 batch_size last_hidden_states.shape[0] return last_hidden_states[torch.arange(batch_size, devicelast_hidden_states.device), sequence_lengths] # 文本投影层直接线性映射到共享空间 self.text_projection nn.Linear(self.text_embed_dim, self.projection_dim, biasFalse) class T5FusionLayer(nn.Module): def __init__(self, feature_dim: int): super().__init__() conf_t5 T5Config() conf_t5.num_layers 2 conf_t5.num_heads 12 conf_t5.d_model feature_dim conf_t5.d_kv 64 self.t5_layers T5Stack(conf_t5) def forward(self, txt_feat, img_feat): # 拼接为序列输入利用自注意力学习跨模态交互 combined_features torch.cat([txt_feat.unsqueeze(1), img_feat.unsqueeze(1)], dim1) transformer_output self.t5_layers(inputs_embedscombined_features, attention_maskNone, use_cacheFalse, return_dictTrue) return torch.mean(transformer_output.last_hidden_state, dim1)条件化多任务训练策略建模时在模型forward函数中根据输入数据类型动态选择训练模式。存在query时执行三模态对比学习(query-text/image/fusion)否则执行双模态对比学习(text-image)。通过loss_weight参数平衡不同任务贡献度采用双向对称CLIP损失确保训练稳定性。价值实现统一框架下的多阶段训练支持预训练到微调的无缝切换。def clip_loss(similarity: torch.Tensor) - torch.Tensor: 双向对称CLIP损失 q2t_loss contrastive_loss(similarity) t2q_loss contrastive_loss(similarity.t()) return (q2t_loss t2q_loss) / 2.0 def forward(...): ... # 条件化训练策略 if type(query_input_ids) ! type(None): # 三模态对比学习模式微调阶段 logits_q2t torch.matmul(query_embeds, text_embeds.t()) * logit_scale logits_q2i torch.matmul(query_embeds, image_embeds.t()) * logit_scale logits_q2f torch.matmul(query_embeds, fusion_features.t()) * logit_scale loss self.loss_weight[0]*clip_loss(logits_q2t) self.loss_weight[1]*clip_loss(logits_q2i) self.loss_weight[2]*clip_loss(logits_q2f) ... else: # 双模态对比学习模式预训练阶段 logits_per_text torch.matmul(text_embeds, image_embeds.t()) * logit_scale loss clip_loss(logits_per_text) ...特征标准化与温度缩放对所有模态特征进行L2归一化确保单位球面分布通过可学习的logit_scale参数调节相似度分布锐度。指数变换确保scale为正值。价值确保余弦相似度计算稳定性提升对比学习效果。# L2归一化 可学习温度缩放 text_embeds text_embeds / text_embeds.norm(dim-1, keepdimTrue) image_embeds image_embeds / image_embeds.norm(dim-1, keepdimTrue) fusion_features fusion_features / fusion_features.norm(dim-1, keepdimTrue) logit_scale self.logit_scale.exp() # 确保为正值 logits torch.matmul(query_embeds, text_embeds.t()) * logit_scale结构化输出类设计SFTOutput继承CLIPOutput并扩展多模态输出字段保存所有中间特征和相似度矩阵支持灵活的返回格式。价值提供完整的模型输出信息便于模型分析、调试和下游任务使用。dataclass class SFTStage2Output(CLIPOutput): 扩展的多模态输出类保存完整的中间结果 loss: Optional[torch.FloatTensor] None logits_q2t: torch.FloatTensor None # query-text相似度 logits_q2i: torch.FloatTensor None # query-image相似度 logits_q2f: torch.FloatTensor None # query-fusion相似度 text_embeds: torch.FloatTensor None image_embeds: torch.FloatTensor None fusion_features: torch.FloatTensor None def to_tuple(self) - Tuple[Any]: return tuple(self[k] if k not in [text_output, vision_output, query_output] else getattr(self, k).to_tuple() for k in self.keys())训练超参设置● SFT单卡bs8ga36lr2e-5余弦退火warmup0.05weight_decay0.1max_grad_norm 1.0adam参数0.9,0.95,1e-5和默认值区别不大 ○ 128卡1400w样本1600step约4个epoch训练时间4.5天 ■ per_N N/world_size ■ max_steps1epoch per_N/(单卡bs * ga) ■ 这里bs ga尝试了不同组合旨在逼近gpu利用率上限 ○ weight_decay ■ 即l2正则化目的是让权重衰减到更小的值在一定程度上减少模型过拟合的问题 ■ 更小的权值w从某种意义上说表示网络的复杂度更低对数据的拟合更好这个法则也叫做奥卡姆剃刀这里拍了个常用值 ○ 梯度裁剪防止梯度爆炸 ■ new_grad grad * max_grad_norm / max(grad_norm, max_grad_norm) ■ grad_norm为所有参数的梯度的L2范数 ● PT参数基本一致就bs ga略大了些bs24,ga16毕竟少了融合模块和多个loss也是4个epoch873w样本约2天3.5.2 工程实现动态分辨率预处理管道基于宽高比的自适应图像切分算法计算最优切分方案保持图像细节添加缩略图维持全局信息。价值平衡图像语义完整性与计算效率适应不同尺寸图像的处理需求。def dynamic_preprocess(image, min_num1, max_num12, image_size448, use_thumbnailFalse): 基于宽高比的自适应图像切分 # 计算最优切分比例 target_ratios set((i, j) for n in range(min_num, max_num 1) for i in range(1, n 1) for j in range(1, n 1) if i * j max_num and i * j min_num) target_aspect_ratio find_closest_aspect_ratio(aspect_ratio, target_ratios, ...) ... # 按最优比例切分 processed_images [ ] for i in range(target_aspect_ratio[0] * target_aspect_ratio[1]): # 计算切分区域并裁剪 ... processed_images.append(resized_img.crop(box)) # 添加缩略图保持全局上下文 if use_thumbnail and len(processed_images) ! 1: processed_images.append(image.resize((image_size, image_size))) ... return processed_images流式数据加载适配transformers Trainer默认期望数据集实现__len__方法流式数据加载需要自定义Trainer适配IterableDataset支持分布式环境下的数据流处理。价值实现大规模数据流式加载避免内存溢出。class MyTrainer(Trainer): def get_train_dataloader(self) - DataLoader: ifisinstance(train_dataset, torch.utils.data.IterableDataset): returnDataLoader(train_dataset, batch_sizeself._train_batch_size, collate_fndata_collator, drop_lastTrue, num_workersself.args.dataloader_num_workers, pin_memoryself.args.dataloader_pin_memory)高效数据收集器设计transformers Trainer中data_collator用于将dataset中一个batch的输入数据转换为模型一个batch输入的形式实现自定义DataCollator处理多模态输入的动态padding可根据训练类型(预训练/微调)灵活处理query输入确保批次内数据格式一致。价值提升数据加载效率支持不同训练阶段的数据格式需求。dataclass class MyDataCollator(object): 多模态数据收集器支持动态padding和训练类型适配 def __call__(self, instances: Sequence[Dict]) - Dict[str, torch.Tensor]: # 根据训练类型处理query if self.train_type sft: query_input_ids torch.nn.utils.rnn.pad_sequence( query_input_ids, batch_firstTrue, padding_valueself.tokenizer.pad_token_id) query_attention_mask query_input_ids.ne(self.tokenizer.pad_token_id) else: query_input_ids, query_attention_mask None, None # 文本动态padding text_input_ids torch.nn.utils.rnn.pad_sequence( text_input_ids, batch_firstTrue, padding_valueself.tokenizer.pad_token_id) return dict(query_input_idsquery_input_ids, query_attention_maskquery_attention_mask, text_input_idstext_input_ids, text_attention_masktext_input_ids.ne(self.tokenizer.pad_token_id), pixel_valuespixel_values, return_lossself.return_loss)多线程图像拉取优化配置8个图像拉取线程和16个数据读取线程支持网络异常重试机制最多10次间隔5秒。价值显著提升图像加载速度减少IO等待时间。# 多线程配置 convert_args { PARALLEL_WORKER_NUM: 8, # 8个图像拉取线程 oss_pull_func: partial(ele_pull_resource_func, image_processorimage_processor) } train_dataset DistributeDataset(data_args.tables, num_threads16, capacity1024, ...)异常处理与容错机制实现多层次异常处理包括网络重试、数据完整性检查、图像格式转换异常捕获。失败时生成随机tensor兜底确保训练不中断。价值提升训练稳定性保证大规模训练可靠性。# 网络重试 兜底机制 def url2image_pixel(image_urls_str, image_processor, max_sub_img_num10): pix_list [ ] for sub_url in sub_images[:max_sub_img_num]: timeout_counter 0 response whilenot response and timeout_counter 10: try: response requests.get(sub_url, streamTrue).raw if response: pixel_value_i image_processor(imagesImage.open(response).convert(RGB), return_tensorspt).pixel_values pix_list.append(pixel_value_i) except Exception: timeout_counter 1 sleep(5) # 兜底处理 ifnot pix_list: print(cannot get right image, fake one!!) pix_list.append(torch.rand(1,3,448,448)) return torch.cat(pix_list, dim0)分布式训练协调mdl训练时使用rank 0统一下载模型其他进程等待完成信号通过torch.distributed.barrier()实现同步。价值避免重复下载确保分布式环境一致性。local_rank int(os.getenv(LOCAL_PROCESS_RANK, 0)) if local_rank 0: repo_download(repo_idmos_model_uri, local_dirload_dir) done_file.touch() if torch.distributed.is_initialized(): torch.distributed.barrier() else: whilenot os.path.exists(done_file): time.sleep(60)3.5.3 踩坑经验Config类兼容性问题问题自定义Config类在调用save_pretrained()时报错提示必需参数为None。根本原因transformers库在调用save_pretrained时为了精简config参数会用默认参数创建新config实例进行对比只存储不同项。这会导致自动化地使用默认参数调用config类的__init__函数。解决方案class DualConfig(PretrainedConfig): model_type dual_model is_composition True # 优先方案标识为复合配置 def __init__(self, projection_dim512, **kwargs): super().__init__(**kwargs) # 兜底方案支持默认初始化 vision_config kwargs.pop(vision_config, None) text_config kwargs.pop(text_config, None) self.vision_config vision_config if vision_config else ViTConfig() self.text_config text_config if text_config else BertConfig()经验要点优先方案设置is_composition True告知transformers这是复合配置跳过默认初始化对比兜底方案当transformers版本不支持is_composition时修改__init__方法支持无参数初始化适用场景所有包含子配置的自定义PretrainedConfig类编码器解码器架构、双塔架构等DataCollator与模型Forward参数对齐问题问题transformers的Trainer中data_collator返回的字典key必须与模型forward方法的参数名严格对应否则会出现参数传递错误。核心原理Trainer会将data_collator返回的字典直接解包传递给模型的forward方法# Trainer内部逻辑 batch data_collator(samples) # 返回 {pixel_values: ..., query_input_ids: ...} outputs model(**batch) # 直接解包传递解决方案确保参数名严格对应# 模型forward方法定义 def forward( self, query_input_ids: Optional[torch.LongTensor] None, text_input_ids: Optional[torch.LongTensor] None, pixel_values: Optional[Tuple[torch.FloatTensor]] None, query_attention_mask: Optional[torch.Tensor] None, text_attention_mask: Optional[torch.Tensor] None, return_loss: Optional[bool] None, **kwargs ): # DataCollator返回的字典key必须对应 class MyDataCollator(Object): def __call__(self, batch) - Dict: return{ pixel_values: pixel_values, # ✓ 对应forward参数 query_input_ids: input_ids, # ✓ 对应forward参数 query_attention_mask: attention_mask, # ✓ 对应forward参数 text_input_ids: input_ids, # ✓ 对应forward参数 text_attention_mask: attention_mask, # ✓ 对应forward参数 return_loss: True, # ✓ 对应forward参数 }经验要点严格对应DataCollator返回字典的每个key都必须在模型forward方法中有对应参数扩展性使用**kwargs接收额外参数提高代码的灵活性3.6 最终业务效果整个系统采用分层部署架构MDL平台负责双塔模型训练并生成多模态embeddingAOP平台接入多模态特征进行CTR/CTCVR联合训练RTP平台部署最终模型用于在线推理服务。3.6.1离线指标提升多模态预训练效果经过领域适配预训练的双塔模型在跨模态检索任务上整体召回率达到90.8%显著超越SOTA通用模型GME-qwen2-vl-7b66.5%。用户查询对齐效果微调后的EVL-sep模型在搜索订单场景评估中平均命中率达到86.0%仅使用128维表征却优于高维GME系列模型在店品混合查询场景HR1达到53.2%。联合训练效果经过多模态与ID特征融合优化推荐系统离线AUC获得显著提升全量商户CTCVR AUC 0.19%CTR AUC 0.17%。3.6.2 在线业务效果多模态推荐系统上线后在淘宝闪购首页店铺推荐场景取得显著业务提升订单量提升 0.51%访购率提升 0.17%净GMV提升 0.75%四、展望-生成式推荐随着大语言模型技术的快速成熟生成式推荐作为新兴的技术范式引起了业界的广泛关注。大模型在语义理解、多模态信息处理和逻辑推理方面的优势与传统推荐系统在协同信号和领域知识方面的专长形成了完美互补为推荐技术向生成范式的演进提供了可能。4.1 生成式建模的尝试基于24年S2在多模态推荐的技术积累项目组自25年初开始探索生成式ranking的建模思路尝试将多模态表征能力与大语言模型的生成能力相结合笔者也有幸参与了其中的初版方案建设之中。虽然初版方案由于infra方面问题落地存在卡点但为笔者理解生成式推荐的技术挑战提供了宝贵经验在这里仅对建模与训练思路进行分享。4.1.1 特征体系重构与数据构建推荐特征体系重构为适应大语言模型的输入需求我们对传统推荐系统的特征体系进行了全面重构梳理转义推荐大宽表中的900推荐线上业务特征深入分析各个特征在生成式范式下的可用性与使用方法按照用户特征、商户特征、用户商户交叉特征、时空特征进行筛选分类构建面向llm的推荐特征体系。商户表征建模策略用户个性化商户表征针对历史下单序列以user_idshop_id为主键组织个性化的用户-商户交叉融合表征。将传统的统计特征转化为自然语言描述如x年x月x日在xx店铺点了xx商品订单金额xx元这个店铺是xxx这个商品是xxx的cross_shop_token格式引入节气、节日、星期等内容层面的时空特征增强模型对时空语义的理解能力纯商户表征针对实时点击序列、候选序列基于商户热销品的基础图文信息计算纯商户表征。SFTRL训练样本构建通过接入vLLM推理框架优化CoT刷数效率构建100w的高质量SFT冷启动样本。针对SFT阶段数据正例少、hitrate过低导致的RL阶段reward稀疏问题采用对店品描述数据进行热销品去重、长度控制、不规范描述筛选等数据清洗方法以提升数据质量。在样本构建过程中通过整合店铺、用户基本推荐口径精简复购记录、清洗点击序列数据打通训练中的商户描述查找拼接方式优化冷启动SFT、RL训练数据流程并构建推荐特征日滚表生成1亿RL训练样本。通过建立完整的数据pipeline确保训练数据的时效性和质量稳定性为大规模RL训练提供可靠的数据支撑。4.1.2 模型架构设计在上述特征体系和数据构建工作的基础上我们设计了多模态融合的生成式ranking架构。多模态融合架构 参照多模态大模型VLM的设计思路我们构建了店铺融合表征编码器GME Projector与LLM的组合架构实现多模态信息与文本生成能力的深度融合。输入输出设计输入信息包括时空信息当前时间2025年2月21日周五13:54:00我在近铁广场点外卖个性化历史我是男性18岁过去一年点过的外卖有…实时兴趣我刚点击过 …候选集从以下店铺挑选20个用户最可能下单的店铺,…输出信息包括思考链候选店铺序号……核心建模流程店铺Token预留机制在配置中定义特殊的shop_pad_tokenshop_token_index151667在prompt构建时将店铺位置用该特殊token填充。例如person_history_text f用户是{data_dict[gender]}性, {data_dict[user_type]}, 年龄{data_dict[age]}岁, 最近下单的店铺有|shop_start|{recent_order_shop_id_pad_str}|shop_end|文本嵌入生成将设计好的prompt输入LLM的embedding层得到包含预留位置的文本嵌入向量if inputs_embeds is None: inputs_embeds self.get_input_embeddings()(input_ids)店铺特征映射通过店铺融合表征编码器获取店铺的多模态表征并通过projector模块映射到与文本向量相同的维度空间shop_features None if shop_input_ids is not None: shop_features self.get_shop_features(shop_input_idsshop_input_ids)特征替换融合根据配置的shop_token_index生成mask向量标识prompt中店铺token的位置然后用映射后的店铺特征替换对应位置的文本嵌入special_shop_mask ( (input_ids self.config.shop_token_index) .unsqueeze(-1) .expand_as(inputs_embeds) .to(inputs_embeds.device) ) shop_features shop_features.to(inputs_embeds.device, inputs_embeds.dtype) inputs_embeds inputs_embeds.masked_scatter(special_shop_mask, shop_features)统一生成处理将替换后的整体embedding输入LLM进行后续的生成处理输出thinking过程和推荐结果outputs self.language_model( attention_maskattention_mask, position_idsposition_ids, inputs_embedsinputs_embeds, # ... 其他参数 ) logits outputs[0]架构优势这种设计既保持了LLM强大的文本生成能力又充分利用了前期多模态推荐中积累的店铺表征能力。通过projector的维度映射和mask机制的精确替换实现了结构化店铺信息与自然语言处理的有机结合。4.1.3 训练策略基于上述模型架构我们设计了SFTGRPO两阶段训练方案通过思考链输出模式引导模型在强化学习过程中涌现推荐推理能力。监督微调阶段SFT训练架构在上述建模方法的基础上将文本模态数据时空信息个性化特征行为序列的嵌入表征与经过店铺编码器的店铺融合表征历史下单、实时点击、候选750店铺拼接后输入LLM decoder进行监督微调输出thinking过程和推荐商户序号实现店铺融合表征编码器GME Projector与LLM解码器的联合训练。关键技术思路在thinking过程中需要体现商户的关键文本信息通过训练过程中同步更新GME权重实现。具体机制为thinking过程的token loss能够传递到GME模块更新权重从而使模型在thinking中生成正确的商户描述token实现多模态表征与文本生成的深度融合。核心训练目标训练thinking格式使模型学会按照预定格式输出结构化的思考过程为后续RL阶段的逻辑推理能力奠定基础提升hitrate通过监督学习提高模型在推荐任务上的基础命中率降低RL阶段的奖励稀疏度问题为强化学习提供更好的起点强化学习阶段GRPO训练策略在SFT冷启动基础上采用GRPOGroup Relative Policy Optimization算法进行强化学习优化。通过迭代多个版本的数据使用用户最终下单行为作为reward信号进行模型优化。能力涌现机制SFT阶段主要确保输出格式的规范性和基础推荐能力而推荐逻辑的合理性和复杂推理能力通过RL阶段自主涌现。在GRPO训练过程中模型逐渐学会在thinking过程中产生更深层次的反思和推理提升推荐结果的准确性和可解释性。训练框架基于集团内部的ScaleAligner训练框架已开源为ROLL进行适配主要包括自定义RL数据集适配、模型额外key的传入适配shop_input_ids, shop_attention_mask以及自定义reward适配等关键模块等。4.1.4 核心挑战与反思虽然上述方案在理论设计和数据构建方面较为完整但在实际实施过程中遇到了关键的技术挑战。我们将模型划分为店铺表征编码器GME和推荐预测LLM解码器两个独立模块但发现该建模方案无法实现端到端的联合训练cotrain只能采用分段式训练策略。根本原因在于两个模块在训练过程中对资源的需求存在显著差异店铺表征编码器需要大batch size通常等于打分深度如750个候选店铺而推荐预测解码器需要大模型规模两者同时训练会超出现有硬件资源限制存在根本性的技术矛盾。由于上述技术挑战该生成式推荐方案目前在工程落地方面存在卡点但这一探索不仅为理解生成式推荐的技术难点和实现路径提供了宝贵经验在特征体系设计和训练数据构建方面的工作也为后续相关项目提供了一定程度的复用价值。4.2 主流的生成式推荐方法量化编码LLM25年以来业界在生成式推荐领域涌现出诸多前沿进展特别是量化编码LLM的技术路线逐渐成为主流标志着推荐系统正向生成范式的演进方向。基于前述4.1节实践中遇到的端到端训练挑战我们可以理解为何量化编码LLM会成为当前生成式推荐的主流技术路线。这种方案通过将用户行为和商户信息量化为离散的语义ID然后利用LLM的自回归生成能力进行推荐从根本上解决了多模态编码器与LLM解码器联合训练的技术难题。4.2.1 核心技术思路量化编码的价值量化编码主要基于RQ-VAE等技术将连续的多模态表征转换为离散的语义token使得传统推荐信息能够被LLM理解和处理。这种编码方式具有两个关键优势相似商品的ID在编码空间中也相近便于泛化和冷启动层次化的编码过程能够从粗到细地感知语义信息。而在我们的生成式ranking场景下其更核心的价值在于缩小生成解空间将LLM预测范围缩小至≤万级别的语义ID显著降低LLM学习难度对齐item特征与LLM语义空间使得商户表征能够被LLM直接理解和处理避免了多模态编码器与LLM解码器联合训练的资源冲突。LLM生成范式基于编码后的语义token利用大语言模型的自回归生成能力直接生成推荐结果。这种方式不仅统一了推荐框架还天然具备可解释性和交互能力能够生成推荐理由和支持多轮对话。技术优势相比我们探索的多模态融合方案量化编码LLM避免了不同模块间的资源需求冲突可以实现端到端训练同时保持了强大的泛化能力和零样本推荐潜力在召回环节、多模态理解、供给冷启动、长尾兴趣捕捉等方面展现出巨大潜力。适配方案思考基于量化编码技术笔者对于4.1节所述建模方案的一个直观的优化思路是参考工作[22]的编码方案一阶段冻结店铺融合表征编码器模型参数以“将店铺表征压缩成 4 个离散码字同时保证可重建”为训练目标对量化编码模块DNN EncoderRQ VAEDNN Decoder进行离线训练TIGER二阶段复用原版特征与数据保持原始建模与训练思路不变建模LLM Decoder输入时空信息个性化历史实时兴趣候选集输出思考链候选店铺训练SFTGRPO只需要将原本方案中输入的店铺预留token以及预测目标中的店铺序号token用量化编码模块产出的店铺4位码字替代即可建模思路如下图4.2.2 业界前沿进展当前业界在生成式推荐领域涌现出诸多创新工作涵盖了量化编码优化、LLM与推荐系统融合、多模态信息处理、长序列建模等多个技术方向。这些工作在语义ID构建、特征对齐、训练策略等方面不断突破推动着生成式推荐技术的快速发展。由于生成式推荐是一个快速发展的新兴领域相关技术细节和最新进展已有很多优秀文章进行了深入解读本文不再一一展开。结语本文回顾了笔者在24年下半年至25年初参与多模态推荐和生成式推荐项目中的学习历程与技术实践。从传统推荐算法向多模态推荐的演进到多模态表征技术的深入理解再到生成式推荐的前沿探索这一路走来既有成功的实践经验也有未能落地的技术挑战每一步都加深了对推荐系统技术发展趋势的认知。项目的顺利推进离不开很多伙伴的悉心指导与协作支持在此表示诚挚的感谢。通过淘宝闪购首页店铺推荐场景的多模态推荐系统实践我们验证了三阶段训练策略的有效性也深刻体会到了多模态特征与传统ID特征融合的复杂性。而在生成式推荐的探索中虽然遇到了端到端训练的技术瓶颈但这些挑战恰恰指明了未来技术发展的方向。推荐系统正站在一个重要的技术转折点上。从协同表征到联合表征从匹配范式到生成范式技术的每一次演进都在重新定义着推荐系统的能力边界。多模态推荐已经在工业界得到广泛应用而生成式推荐作为新兴技术方向正在快速发展并展现出巨大潜力。作为这一技术变革的参与者和见证者笔者将持续关注多模态推荐和生成式推荐技术的发展动态在实践中不断学习和探索。希望这份总结能够为同样在这一领域探索的技术同学提供一些参考也期待与更多同学交流学习共同推动推荐系统技术的进步。如何学习AI大模型 “最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】CSDN粉丝独家福利这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】读者福利CSDN大礼包《最新AI大模型学习资源包》免费分享 安全链接放心点击对于0基础小白入门如果你是零基础小白想快速入门大模型是可以考虑的。一方面是学习时间相对较短学习内容更全面更集中。二方面是可以根据这些资料规划好学习计划和方向。1.大模型入门学习思维导图要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。对于从来没有接触过AI大模型的同学我们帮你准备了详细的学习成长路线图学习规划。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。全套教程文末领取哈2.AGI大模型配套视频很多朋友都不喜欢晦涩的文字我也为大家准备了视频教程每个章节都是当前板块的精华浓缩。3.大模型实际应用报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。全套教程文末领取哈4.大模型实战项目项目源码光学理论是没用的要学会跟着一起做要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战项目来学习。全套教程文末领取哈5.大模型经典学习电子书随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。全套教程文末领取哈6.大模型面试题答案截至目前大模型已经超过200个在大模型纵横的时代不仅大模型技术越来越卷就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道我总结了大模型常考的面试题。全套教程文末领取哈为什么分享这些资料?只要你是真心想学AI大模型我这份资料就可以无偿分享给你学习我国在这方面的相关人才比较紧缺大模型行业确实也需要更多的有志之士加入进来我也真心希望帮助大家学好这门技术如果日后有什么学习上的问题欢迎找我交流有技术上面的问题我是很愿意去帮助大家的这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。CSDN粉丝独家福利这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】读者福利CSDN大礼包《最新AI大模型学习资源包》免费分享 安全链接放心点击