• 模型线上线下一致性问题


    线下可能很好,但是线上表现并不如意,对于这种线上线下一致性问题,是机器学习模型在上线之后经常遇到的问题。

    围绕着这个问题,从多个角度来考虑该问题。

    1 特征维度

    数据作为模型的输入,决定着模型的上限。一般一致性问题在数据的表现为:

    1.1 线上线下的处理方式不同

    针对同样的特征输入,离线和在线的处理方式不同,如input_schema配置没对齐特征抽取不一致等,这是最容易出现的情况。

    解决方法

    一般是离线和在线共用同一套特征抽取框架,同时每次模型上线前先生成一批待校验的一致性样本,对比每条样本在离线打分和在线打分的gap,小于一定阈值(如1e-6)算一致性通过

    1.2 特征更新延迟性

    user侧和item侧的特征一般以正排方式储存在key-value载体中,根据特征类型的不同更新时效性也可以分为:

    • 长期更新:user的年龄、性别、婚否、是否有孩子等长期比较稳定的用户画像特征
    • 天级更新:user最近7天/14天在该appid上的pv个数、click个数、conv个数、ctr、cvr等按天统计的中长期兴趣特征
    • 小时级更新:user的精准兴趣、广泛兴趣、app安装列表等按小时统计的近实时特征
    • 实时更新:user最近互动过的adid、appid、industry_id,item实时反馈特征,session序列特征

    对于天级更新、小时级更新和实时更新这些对时效性比较敏感的特征,如果出现了更新延迟,线上实验效果的衰减也是特别厉害的。

    1.3 线上特征源获取缺失

    线上特征的获取由于来源和计算方式不同会有多种通路,比如文件、redis、rpc服务、透传等,每种通路一旦某个环节出现问题,特征就取不到或者取错,对线上预估的影响也是很大的

    解决方法: 搭建特征监控体系

    对每一个线上服务使用到的特征建立空值率、top取值分布、时效性、ctr/cvr分布等多个维度的监控也是很有必要的,可以及时发现出问题的特征并加以修复。

    2 训练维度

    除了特征外另一个重要的排查方向就是离线训练结果是否存在问题,可以从三个方面进行排查。

    1. 训练集和测试集是否出现了数据重叠。
    2. 评估函数是否可靠。
    3. 是否出现特征穿越,特别是与label强相关的统计类和行为序列特征出现穿越,相当于开了个上帝视角;
    4. 训练集过拟合是否存在

    3 线上结果不置信

    上面根据离线情况提供了几种不置信的检测思路,那么线上也同样面对同样的置信问题。

    1. 线上指标统计时间窗口:不同指标达到可置信水平的统计窗口有较大区别,这跟业务和指标稳定性有很大关系,比如广告主价值指标的置信时间窗口往往要比收入/ecpm要长不少,因为天级波动比较大。而ctcvr指标则跟归因是否有延迟相关,一般要等好几个归因周期才能置信;

    2. 实验分桶是否随机:ABtest实验关键在于流量划分正交,流过每一层的流量必须重新的均匀划分。不正交结果必然不置信,可以通过划分AABB实验桶来判断流量划分是否出现问题。
      在这里插入图片描述

    3. 线上serving检查

    4 训练样本分布变化

    比如特征来源有的来自base模型,有的来自实验模型,导致数据分布,特征都不一致,对应的必然不行。

  • 相关阅读:
    树莓派2b使用ubuntu22开启启动自动执行自定义sh文件
    矩阵的运算规则
    算法笔试ACM模式如何输入
    Activiti7工作流 二【Activiti7入门、Activiti7进阶】
    有一个整数单链表L,设计一个算法逆置L中所有结点,Java
    【C++升级之路】类与对象(中)
    Virtualbox固定存储硬盘转换为动态存储硬盘
    MongoDB-1入门介绍
    天软特色因子看板 (2023.10 第05期)
    业务指标采集影响系统性能问题排查
  • 原文地址:https://blog.csdn.net/weixin_42327752/article/details/126769163