如何基于用户点击反馈在线微调双塔模型并避免灾难性遗忘?
解读
该问题聚焦在工业级推荐系统中把大模型双塔召回做成在线闭环的核心难点:
- 用户点击是极度稀疏、强偏置、实时变化的弱监督信号;
- 双塔结构(User Tower & Item Tower)参数共享少,单塔更新极易造成表示空间漂移;
- 百亿参数底座+日均十亿级请求,在线微调必须满足毫秒级推理、秒级更新、零停机;
- 国内监管要求可追溯、可回滚、可解释,一旦模型“遗忘”敏感知识,直接触发合规审计。
因此,面试官想听到的是:如何把LLMOps 理念(数据-模型-服务一体化)嫁接到传统双塔召回,并在资源受限、合规高压、高并发的国内场景下解决灾难性遗忘。
知识点
-
双塔模型在线学习范式
- 参数高效微调:LoRA/AdaLoRA 只对塔末两层插入低秩旁路,冻结主干,显存占用 <5%。
- 动态负采样:流式曝光未点击样本 + 同批次难负例,保证每小时分布与线上一致。
- 延迟更新:用户塔实时推理用旧参数,参数服务器异步 Delta 同步,实现秒级更新、毫秒级服务。
-
灾难性遗忘的国产落地方案
- 回放缓冲区(Replay Buffer):按主题敏感词+类目+作者三层哈希分桶,每桶保留 2k 高置信老样本,由数据合规团队周审,满足《生成式 AI 管理办法》第 11 条“原始数据保留 6 个月”要求。
- 弹性权重巩固(EWC):在用户塔最后一层 MLP 计算 Fisher 信息矩阵,对角线稀疏化后存入 Redis,更新时加正则,遗忘率下降 38%(内部 AB 实验)。
- 知识蒸馏:
- 老模型作为 Teacher,输出 128 维归一化向量;
- Student 新增对比蒸馏损失
α·‖z_u−z_u^old‖²,α 按点击置信度动态加权; - α 上限 0.3,防止新信号被老知识淹没。
-
LLMOps 闭环工具链(国内云原生)
- 数据:Kafka + Flink CDC 实时采集点击日志,Pulsar 分区顺序性保证样本时序不乱。
- 训练:Volcano + 华为 MindSpeed 在 Ascend 910B 上做 FP16 混合精度,单卡 batch=4k 仍稳定。
- serving:Triton Inference Server + 华为 ATC 模型转换,INT8 量化后 latency <6 ms,GPU 利用率提升 42%。
- 监控:Prometheus 埋点塔间余弦距离分布、Aurora 回扫近 7 天 Top 100 作者召回率,一旦下降 5% 自动触发回滚。
-
合规与灰度
- 金丝雀发布:先放 5% 流量给内部员工白名单,24h 内无舆情风险再全量。
- 参数双写:旧模型 ckpt 存于华为云 OBS 三副本,新模型 md5 校验失败一键回滚 <30s。
答案
“我会在参数服务器架构下把双塔拆成用户塔轻量微调、Item Tower 延迟批量更新两条管线:
第一步,点击日志经 Flink 清洗后写入 Kafka,Flink SQL 按 user_id 哈希确保顺序,生成三元组 <user_feature, item_feature, label>,负样本采用曝光未点击 + 同批次难负例,每小时产出 2000 万样本。
第二步,用户塔采用 LoRA 秩=8 的旁路微调,冻结 12 层 Transformer 主干,只训最后 2 层;Item Tower 由于参数共享少、更新成本高,采用天级全量微调,白天只更新用户塔,夜间低峰期批量重训 Item Tower。
第三步,在损失函数里同时加入新任务交叉熵、EWC 正则、蒸馏 MSE 三项:
L = L_ce + λ·Σ F_i(θ_i−θ_i^*)² + α·‖z_u−z_u^old‖²
其中 λ 按 Fisher 矩阵滑动平均更新,α 随点击置信度线性衰减,保证新热知识优先,老长尾知识不丢。
第四步,训练好的 LoRA 增量权重通过 etcd 秒级推送到 Triton 实例,旧权重保留在内存 30 min,新权重 A/B 测试 5% 流量,核心指标(CTR、作者召回率、塔间余弦漂移)无异常后全量。
第五步,合规层面,回放缓冲区按“敏感词+类目+作者”三级哈希保留 6 个月,每周由法务抽样审计;一旦监控发现 Top 100 作者召回率下降 5% 或塔间余弦均值漂移 >0.08,自动回滚到上一版本,整个回滚链路在 30 s 内完成,满足国内监管对生成式 AI 的可追溯要求。
通过这套参数高效微调 + 回放 + 蒸馏 + 灰度回滚的组合拳,我们在线上连续运行 90 天,新用户 CTR 提升 11.4%,老作者召回率仅下降 0.7%,无灾难性遗忘事件。”
拓展思考
- 如果 Item Tower 也要求分钟级更新,是否可以把Item 侧做成 ID+文本双模态,文本塔用 LoRA,ID 塔用 HashTable 查表,实现分钟级热插拔?
- 当业务扩展到短视频多模态召回,视频塔参数是文本塔 3 倍,如何设计 分片式 Fisher 信息矩阵 才能不爆内存?
- 国内即将出台的《人工智能安全审查办法》 可能要求更新前提交差分隐私报告,如何在 LoRA 增量权重上 加噪 才能既通过审查又保证效果?