冷启动推荐场景的挑战
推荐系统中的冷启动问题不仅涉及新用户或新物品场景,更核心的是系统初始化时完全缺乏个性化信号。当新用户首次访问或新内容上线时,由于没有历史行为数据,推荐引擎无法识别用户偏好,导致所有用户都被归入宽泛的通用类别。这不仅会降低点击率和转化率,还可能在使用户流失后系统仍未能学习到其偏好。
传统解决方案如协同过滤、矩阵分解或热门列表缺乏弥补信号间隙的细粒度能力,其"一刀切"的推荐方式很快会显得过时。本文提出通过大语言模型(LLM)进行零样本推理,从第一天起就能生成详细的兴趣画像,无需等待数周的交互数据即可合成丰富的上下文感知用户和物品嵌入。
技术架构实现
核心组件与工作流程
解决方案基于某中心的EC2 Trainium芯片构建。为简化模型部署,使用深度学习容器(DLC)配合某机构Neuron SDK,该SDK安装了经Neuron优化的PyTorch模块并预装了最新的Trainium驱动和运行时。
大型模型在多个Trainium芯片上的分片由NeuronX Distributed(NxD)处理,该分布式库与vLLM无缝集成。NxD以最少的代码变更管理多个实例间的模型分区,支持甚至70B参数LLM的并行推理。这种组合为机器学习工程师提供了灵活、经济高效且生产就绪的解决方案。
兴趣画像扩展技术
使用来自Kaggle的某中心图书评论数据集模拟冷启动场景。通过LLM从最小初始数据丰富新用户画像:例如当用户仅评论一本科幻小说时,LLM可推断相关子主题(如银河帝国、赛博朋克反乌托邦或太空探索)。
使用结构化提示将用户现有活动嵌入简洁指令中以确保一致性和相关性:
|
|
通过约束LLM输出格式(要求返回JSON格式的主题关键词数组),避免自由形式的偏离并获得可预测的兴趣扩展列表。
向量编码与内容检索
获得扩展兴趣后,下一步是将这些兴趣和图书目录转化为可比较的向量。探索三种规模的Google T5编码器(base、large和XL)以了解嵌入维度如何影响匹配质量。
实现步骤包括:
- 加载每种规模的编码器
- 将图书摘要编码为单个NumPy矩阵并归一化
- 构建FAISS索引以实现快速近邻搜索
- 以相同方式编码扩展兴趣文本并查询FAISS检索最相似的图书
|
|
性能评估与优化
推荐质量度量
为每个LLM-编码器配对生成FAISS索引后,计算每个扩展兴趣查询与其前10个邻居的平均距离,精确了解每个模型嵌入聚类的紧密程度。
实验结果显示:
- 1B和3B模型平均距离接近零,几乎无区分度
- 8B模型与t5-base配对产生约0.5的距离,随编码器增大而增加
- 70B模型仅在XL编码器下有微小提升,额外成本带来的效益有限
实际应用中,Llama 8B LLM与base或large T5编码器配对可在嵌入空间中提供清晰分离,同时避免70B模型更高的推理时间和资源使用。
张量并行度优化
为平衡推理速度与资源成本,测量了增加Neuron张量并行度对trn1.32xlarge实例上使用Llama 3.1 8B模型扩展用户兴趣时延迟的影响。
测试显示:
- P50延迟从TP=2时的2480ms降至TP=16时的650ms(下降74%)
- TP=32时进一步降至532ms(额外下降18%)
- 超过TP=16后,并行度翻倍大致使成本翻倍,但仅带来17%的延迟提升
实践中,设置tensor_parallel_size=16可提供最佳权衡:获得模型分片带来的大部分加速,同时避免最大并行化带来的收益急剧递减和更高核心小时成本。
生产环境部署
确定使用的模型和编码器以及最佳配置(如序列大小和批处理大小)后,下一步是部署模型并定义生产工作流程,生成编码后的扩展兴趣以便与更多内容进行匹配。
结论
本文展示了如何利用某中心Trainium、Neuron SDK和可扩展LLM推理技术解决冷启动挑战,从第一天起就能通过丰富稀疏用户画像提供更好的推荐。
关键发现是:更大模型和编码器并不总是意味着更好结果。虽然它们能产生更丰富的信号,但收益往往不能证明额外成本的合理性。8B LLM与T5-large编码器配对可能在性能和效率间达到最佳平衡。
这种方法帮助团队识别最优模型-编码器配对,以经济高效的基础设施提供高质量推荐。