小红书推荐系统实战:粗排三塔模型如何平衡性能与精度(附架构图详解)

张开发
2026/4/6 3:44:48 15 分钟阅读

分享文章

小红书推荐系统实战:粗排三塔模型如何平衡性能与精度(附架构图详解)
小红书推荐系统实战粗排三塔模型如何平衡性能与精度在推荐系统的工业级应用中粗排层往往是最容易被忽视却又至关重要的环节。作为连接召回与精排的桥梁粗排需要在毫秒级时间内对数以千计的候选物品进行初步筛选既要保证足够的排序精度又要严格控制计算成本。小红书作为国内领先的内容社区平台其推荐系统日均处理数十亿次请求粗排层的设计直接关系到用户体验和平台收益。传统双塔模型虽然计算高效但精度有限而精排模型虽然准确却无法满足粗排阶段的性能要求。小红书创新性地采用三塔模型架构通过用户塔缓存、物品塔缓存和轻量级交叉塔的协同设计在工程实践中找到了性能与精度的黄金平衡点。本文将深入解析这一架构的设计哲学、实现细节和优化技巧帮助中高级工程师掌握工业级推荐系统的核心设计思路。1. 粗排层的核心挑战与设计原则1.1 推荐系统链路中的定位在典型的推荐系统流程中粗排位于召回之后、精排之前承担着漏斗过滤的关键角色输入规模接收召回层返回的1000-5000个候选物品输出规模筛选出200-500个物品送入精排层延迟要求单次推理通常在10-50ms内完成精度目标不需要绝对准确但需保证Top500与精排Top200有80%以上的重合率与精排模型不同粗排模型面临的核心矛盾是如何在有限的计算预算下尽可能保留有价值的候选物品。这就决定了粗排模型不能简单套用精排架构必须进行针对性的优化设计。1.2 三塔模型的设计哲学小红书的三塔模型基于以下核心设计原则计算量分摊原则将计算负载智能分配到不同组件特征稳定性分级根据特征更新频率设计缓存策略精度-性能权衡在关键路径上做有损优化[三塔模型计算分布] 用户塔1次推理/请求 物品塔~1%物品需要实时推理缓存命中率99% 交叉塔100%物品需要实时推理 上层网络100%物品需要实时推理这种设计使得90%以上的计算量集中在轻量级的交叉塔和上层网络而计算密集型的用户塔和物品塔通过缓存机制大幅降低了实时计算压力。2. 三塔模型的架构实现2.1 整体架构设计小红书的三塔模型由三个核心组件构成组件输入特征输出维度更新频率计算特点用户塔用户画像、长期兴趣128维分钟级深层网络(6-8层)物品塔物品属性、静态特征64维小时级中等深度(4-6层)交叉塔实时统计特征、交叉特征32维秒级单层网络三个塔的输出向量通过concat操作融合后输入到一个轻量级的多任务学习网络最终输出点击率、点赞率等目标的预估分数。2.2 用户塔的缓存策略用户塔的设计充分利用了用户特征相对稳定的特点# 伪代码用户塔在线服务流程 def user_tower_serving(user_id): cache_key fuser_emb:{user_id} user_emb cache.get(cache_key) if user_emb is None: user_features feature_store.get_user_features(user_id) user_emb user_tower_model.predict(user_features) cache.set(cache_key, user_emb, ttl300) # 5分钟缓存 return user_emb优化技巧采用分层缓存策略L1缓存(内存)保存热点用户对非活跃用户使用降级策略返回通用embedding批量处理用户特征更新减少实时计算压力2.3 物品塔的工程优化物品塔面临的核心挑战是如何处理海量候选物品的实时推理分级缓存系统内存缓存存储Top 10%热门物品Redis集群存储全量物品embedding本地缓存服务节点缓存最近访问物品冷启动处理def item_tower_serving(item_ids): cached_embs cache.batch_get(item_ids) missing_ids [id for id in item_ids if id not in cached_embs] if missing_ids: new_embs batch_predict(item_tower_model, missing_ids) cache.batch_set(new_embs) cached_embs.update(new_embs) return [cached_embs[id] for id in item_ids]性能优化指标缓存命中率99%批量预测吞吐1000 QPS分位点延迟P99 20ms3. 交叉塔的轻量化设计3.1 实时特征处理交叉塔需要处理高度动态的特征数据包括用户实时行为计数最近5分钟点击/浏览物品曝光统计CTR、CVR等用户-物品交叉特征历史交互深度 注意实时特征管道需要特别处理数据倾斜问题热门物品的特征更新频率可能是长尾物品的1000倍以上3.2 模型结构优化为保证计算效率交叉塔采用极简设计网络结构单层全连接网络32维隐藏层ReLU激活函数输出层无激活函数计算图优化使用TensorRT加速推理固定输入维度避免动态shape量化到FP16精度性能对比方案参数量单次推理时间内存占用原始模型50K0.8ms2MBTensorRT优化50K0.3ms1.2MB量化版(FP16)50K0.2ms0.6MB4. 线上部署与效果评估4.1 服务化架构小红书的粗排服务采用微服务架构[服务拓扑] 用户请求 → LB → 粗排服务集群 → ├─ 特征服务(用户/物品) ├─ 缓存集群(Redis) ├─ 模型服务(TFServing) └─ 日志收集管道关键配置参数服务实例100节点单节点QPS500自动扩缩容阈值CPU 60%降级策略超时fallback到双塔模型4.2 AB测试指标在灰度上线过程中三塔模型相比原双塔方案取得了显著提升指标双塔基线三塔模型提升幅度精排重合率72%85%13%人均时长0%4.2%4.2%互动率0%3.8%3.8%延迟增加-8ms-4.3 工程经验总结在实际落地过程中我们积累了几个关键经验缓存一致性问题采用双写失效标记策略对关键特征设置版本号实现最终一致性而非强一致流量突增处理预先进行压力测试设置服务降级开关实现动态特征采样模型迭代流程离线评估 → 小流量AB测试 → 全量发布每次迭代保留baseline模型监控核心指标波动在小红书的实践中三塔模型架构已经稳定运行超过18个月期间经过多次迭代优化。一个意外的收获是这套架构的灵活性使其能够快速适配新的业务场景比如直播推荐和电商商品推荐只需调整特征工程和模型微调即可实现平滑迁移。

更多文章