广告是字节跳动的主要收入来源。广告投放系统需要在极高吞吐量下平衡收入最大化与用户体验。这道题考察你设计延迟敏感型系统并集成ML的能力。
梳理广告投放流水线:请求增强→候选召回→排序→竞价→创意选择→投放。
解释两阶段排序:轻量模型从数千候选中筛到数百,深度模型结合用户特征做精排。
描述竞价机制——通常是广义第二价格(GSP)或VCG竞价——以及如何激励真实出价。
讨论延迟优化:预计算用户embedding、特征缓存、模型蒸馏和流水线阶段的投机执行。
系统在100毫秒内分四阶段处理广告请求。第一阶段请求增强(5ms):从预计算embedding存储中拉取用户特征,附加上下文信号(时间、地点、内容类型)。第二阶段候选召回(15ms):倒排索引根据定向条件(人口统计、兴趣、预算约束)从数百万合格广告中筛出约5000个候选。第三阶段排序(50ms):双塔召回模型对全部5000个候选打分,选出Top 200,再由深度CTR预估模型利用用户-广告交叉特征精排,最终分数为eCPM=预估CTR×出价。第四阶段竞价投放(30ms):Top候选进入带质量调整底价的GSP竞价,胜出者根据A/B测试分组选择创意素材并返回响应。为满足延迟要求,用户embedding每小时离线刷新,召回模型在GPU上批量推理,慢变信号使用5分钟TTL的特征缓存。
掌握eCPM公式(CTR×出价),解释它如何平衡广告主价值与用户相关性。
提到预算平滑——将预算均匀分配到投放周期而非早期烧完。
讨论新广告的冷启动问题和探索策略如何解决它。
深度CTR模型计算开销太大,无法在延迟预算内给数百万候选打分。轻量级的第一阶段模型快速缩小范围,让深度模型专注于最有潜力的候选。
频控限制用户在时间窗口内看到同一广告的次数。竞价中的多样性约束确保用户看到不同广告主的广告,负反馈信号(跳过、隐藏)会降低重复创意的排序权重。