从十亿用户到千人千面:Meta超大规模推荐系统的工程奇迹
全球有超过20亿人每天打开Instagram。他们看到的内容——从Explore推荐到Reels视频流——不是随机排列的,而是一套精密运转的推荐系统精心挑选的结果。
这篇文章将深入解析Instagram推荐系统的技术架构,揭示这个"千人千面"工程奇迹背后的核心技术:从多阶段漏斗、双塔模型,到Meta那令人窒息的AI基础设施——24,000块H100 GPU集群、自研MTIA芯片、以及即将上线的1吉瓦级AI集群。
Instagram Explore采用经典的多阶段排序漏斗(Multi-Stage Ranking Funnel)架构。这不是Instagram独有的设计——这是所有大规模推荐系统的标准范式。但Instagram的独特之处在于每个阶段的规模和精细程度。
这是整个漏斗的入口。在毫秒级延迟约束下,从数十亿条内容中快速选出~500条候选内容。Instagram使用两种核心检索方式:
这是检索阶段的核心模型。它的设计哲学是:用户和内容分别用独立的"塔"编码,最后在内积空间中计算相似度。
# 双塔模型核心原理 # 用户塔(User Tower) user_embedding = UserTower(user_features) # 输入:用户ID、历史行为、人口统计特征 # 输出:用户向量 u ∈ R^d # 物品塔(Item Tower) item_embedding = ItemTower(item_features) # 输入:内容ID、图文特征、作者信息 # 输出:物品向量 i ∈ R^d # 在线推理:通过ANN找到Top-K相似物品 scores = user_embedding @ item_embeddings.T # 内积计算相似度 top_k_items = FAISS.search(scores, k=500) # 近似最近邻检索
基于用户历史互动(点赞、收藏、保存、分享)的物品嵌入,查找相似的候选内容。
# 基于用户历史的检索 # 1. 获取用户最近N次交互的物品嵌入 user_interacted_embeddings = [ get_item_embedding(item_id) for item_id in get_user_history(user_id, limit=100) ] # 2. 聚合历史嵌入(可用注意力加权) user_context_embedding = aggregate(user_interacted_embeddings) # 3. ANN检索相似内容 similar_items = FAISS.search(user_context_embedding, k=200)
对~500条候选内容进行轻量级排序,选出~100条进入下一阶段。这里使用知识蒸馏(Knowledge Distillation)的思想:用一个轻量模型近似复杂模型的排序能力。
这是最复杂的一步。Instagram使用多任务多标签(MTML)神经网络,同时预测多种用户行为的概率。
精排模型不只是预测"用户会不会点击",而是预测多种交互的概率,然后通过价值模型计算综合得分:
# Instagram 多目标价值模型 # 输入:用户特征 + 物品特征 # 输出:各种交互的预测概率 P_click = model.predict_click(user, item) P_like = model.predict_like(user, item) P_save = model.predict_save(user, item) P_share = model.predict_share(user, item) P_see_less = model.predict_see_less(user, item) # 价值加权计算最终得分 expected_value = ( W_click * P_click + W_like * P_like + W_save * P_save + W_share * P_share - W_see_less * P_see_less # 负权重! ) # 注意:P(see_less) 的权重是负的 # 意味着用户越想"少看"这类内容,得分越低
这是算法与业务规则交汇的地方。即使精排模型给出的得分再高,也必须经过这一关:
在严格的毫秒级SLA下,系统容量、计算成本与内容新鲜度、排序质量之间存在根本性冲突。
Meta的解法:多阶段漏斗 + 精细化缓存策略。物品嵌入离线计算,用户嵌入实时计算;热点内容预生成,冷启动内容延迟加载。
Meta同时运行数千个生产模型。模型更新、A/B测试、容量规划、故障隔离——每一个都是噩梦。
Instagram服务全球用户,数据中心遍布多个大洲。跨区域的数据一致性是噩梦——用户可能在一个region看到旧内容,另一个region看到新内容。
Meta的解法:构建TAO(The Association Object)图数据库,统一管理社交图谱;采用"最终一致性"策略,允许短暂不一致但保证最终收敛。
推荐系统(海量低延迟推理)和LLM(计算密集型训练/推理)对硬件的需求截然不同。Embedding表对内存带宽的要求尤其苛刻。
从为每个大学设立独立数据库,过渡到统一的全局系统。开发了TAO(社交图)、News Feed排名服务、照片服务等核心系统。
构建Twine(集群管理)、Tectonic(分布式文件系统)、ZippyDB(键值存储)等底层系统。开始大规模自建数据中心。
短视频爆发,推荐需求激增。构建专用AI集群,两个24,000块H100 GPU集群上线。
清空五个生产数据中心,建成包含129,000块H100 GPU的单一巨型AI集群。
Prometheus集群(1GW规划)和Hyperion集群(5GW容量)即将上线。
训练一个LLaMA 3级别的模型,需要数千块GPU同时协作。关键挑战是GPU之间的通信带宽——如果网络太慢,GPU之间需要互相等待,整体效率大幅下降。
| 技术方案 | 带宽 | 延迟 | 成本 | 代表集群 |
|---|---|---|---|---|
| RoCE (RDMA) | 400Gbps | ~2μs | 较低 | 集群一 |
| InfiniBand NDR | 400Gbps | ~1.5μs | 较高 | 集群二 |
| 未来:硅光子 | Tbps级 | 更低 | 待定 | Hyperion |
2020年后,短视频(Reels)成为Instagram的核心增长引擎。但这带来了全新的技术挑战:
据最新消息,Meta正在开发专门用于推荐系统的自研芯片。这款芯片将支持端侧AI处理——参考苹果A系列芯片的神经网络引擎如何在本地完成人脸识别,Instagram有望在设备端完成部分个性化推荐计算。
这意味着什么?更低的服务器负载、更快的响应速度、以及——潜在的隐私改进(用户数据不需要全部上传到云端)。
Meta的Prometheus集群规划功率达到1吉瓦(GW)——相当于一座小型城市的用电量。这个规模的集群将在2026-2027年间逐步上线。
不要试图在单一模型中完成所有事情。分阶段处理,每阶段专注一个目标(召回→粗排→精排→重排)。
用户和物品解耦,物品离线计算,用户在线计算。这是十亿级推荐系统的标配。
不要只优化点击率。结合点赞、收藏、分享、甚至"少看"信号,综合衡量内容价值。
热点特征预计算,冷启动特征延迟加载。这是控制延迟的关键。