模型监控框架调研(上)

113 阅读7分钟

引言

  • 背景:本文为个人调研现有主流模型监控框架的总结,其中对一些不满足工作需要的模型框架并未深入研究,总结仅供参考。
  • 参考连接:监控框架
  • 关于模型监控框架的参考文章貌似都是上面参考连接中那个作者写的,内容大致都是相关,有所偏重,可酌情搜索查看,本文调研的中心点与模型监控调研部分内容重合,可搭配使用。
  • 内容较多且是个人总结手稿,酌情参考,有问题可一起探讨。
  • 本文为 Whylabs 框架详情总结。

框架调研方向介绍:

  • 是否开源,因为业务需要只能内网使用
  • 获取数据的方式是什么样的,因为业务真实数据不能脱离指定环境
  • 对数据的监控有哪些方面?使用的什么原理;
  • 对模型的监控有哪些指标?哪些指标可以覆盖满足
  • 框架有无可采用的特色功能,整体流程是什么样的。
  • 框架扩展性如何,告警方式有哪些等等相关问题

框架 1:Whylabs:可以自己注册账号试用

1 传输数据到监控平台过程:

    1. 非语言模型使用开源的 whylogs 库来生成配置文件,语言模型使用 Langkit 提取 LLM 和 NLP 的遥测数据作为配置文件(配置文件在本地生成),配置文件通过 API 上传到 whylabs AI观测平台,该平台提供开箱即用的广泛监控和警报功能。
    • i.配置文件中包含描述数据集的各种统计信息,观测平台以此来监控模型发现潜在的异常统计值,配置文件中包含的信息取决于要分析的数据类型,比如表格数据,文本数据,图像数据等。
    • ii.whylogs:可以自动创建数据集的统计摘要(配置文件),通过获取特定的数据相关信息提供可分析的功能。
    • iii.langkit:基于 whylogs 构建专为语言模型设计,允许用户添加自己的指标数据。
    • iv.注释:如果配置文件不想直接传到 whylabs,可以设置 S3 桶(私密桶); 也可以单独设置不对某一特征进行统计(比如常用特征),也可以对某一行数据加密处理(如机密信息)。

2 可监控的异常分类(总体来看)

  • 数据层面:包含数据质量,数据漂移,概念漂移三个方向。
    • i.数据质量:空值,异常值,输入数据分布的变化等。
    • ii.数据漂移:训练数据和真实的输入数据慢慢发生偏差,比如语言模型中现有单词会通过不同方式来使用。
    • iii.概念漂移:训练数据的标签和真实数据标签不一致,比如垃圾邮件不断变换形式和正常邮件形式一样。

3.模型性能:指的是不同类型模型的评估指标变化

  • i.分类:模型输入数据和输出数据计数,混淆矩阵,召回率,准确率,精确率,F1 得分,ROC,PR 曲线,FPR 值(默认指标)
  • ii.多分类:准确率,召回率,精确率(宏平均),F1 得分
  • iii.回归:模型输入数据和输出数据计数,均方误差,平均绝对误差,均方根误差
  • iv.排名:auc,字段auc,平均精度,MRR,NDCG
  • v.LLM:ROUGE,文本语义相似性
  • vi.注释:不同模型也可以自定义性能指标

4.集成状况:

  • Whylogs 生成的配置文件是否按时上传到Whylabs来进行分析监控

5 监控框架具备功能梳理:

  • 1 Monitor manager(定制化监视器):关于自定义设置监控功能
    • i.预设监视器:可以为特定一个指标,如对一个或多个模型的 F1 得分单独建立监视器,统计其 7 天内的偏差变化。
    • ii.自定义监视器:自定义监视器类型,如漂移监视器,数据类型监视器等预设外 - 自定义的监视器
    • iii.自定义基线:自定义设置指标阈值,监视器提供监控可视化的同时也可以设置告警,由自定义的基线完成。
  • 2 支持的漂移算法:类比上面数据层面介绍的数据,概念漂移
    • 1.Hellinger 距离(whylabs 默认);
      1. Kullback_Leibler(KL)散度;
    • 3.Jensen-Shannon(JS)散度
    • 4.群体稳定指数(PSI)
  • 3 关于模型可解释性:(模型重要性得分计算使用的方法介绍较长,未详读)
    • 1.分析特征对模型的重要性比较
    • 2.比较同一特征在不同模型的重要性
    • 3.单独对重要特征进行可视化
  • 4 角色权限控制:
    • 1.管理员:查看和管理组织所有的数据,配置和设置
    • 2.成员:可以查看监控数据,管理监控配置
    • 3.viewer:可以查看监控数据和监控配置
  • 5 监控细分:划分粒度:
    • 1.列维度上:分布距离和漂移,连续特征的单个统计量(均值,中位数,极值),离散特征众数的分布,缺失值/唯一值的计数和比率, 推断数据类型(不太理解有啥意义)

6 其他补充:

  • 1 关于付费:whylabs 可以免费使用部分功能,会员使用全部功能但是有账户限制(可能是模型数量之类的限制,升级超级会员可扩充数量)
  • 2 关于可扩展:可用于 Python,java,spark 环境,也可对接 flink,kafka 等输出
  • 3 关于通知:可以通过slack,PageDuty,电子邮件,自定义 webhook 等
  • 4 关于时间序列类的分析:可以通过回填历史数据来考虑数据的季节性。
  • 5 LLM 相关的一些功能未详读

  • 以下框架的总结只关注契合部分,更为简介

监控框架:Whylabs(需要传入 Whylabs 平台)

1 整体监控流程:

    1. 使用官方开源的 whylogs 库来生成满足监控指标相关信息的配置文件。
    1. 将配置文件通过 API 上传到 whylabs AI观测平台,该平台提供开箱即用的广泛监控和警报功能。
  • 3.注:提供的可分析功能较丰富(复杂繁琐); 可视化功能较好;可扩展性强;模型支持类型,默认性能指标较多;
  • 4.注:高度模块化(可定制监控内容);功能细分程度较高

2 监控目标

  • 2.1 监控目标:数据层面(普通表格数据,部分/全部数据分开分析)

    • 1.每个/部分时间段的数据量(可以自定义时间段),特征数,数据新鲜度
    • 2.连续特征:总数,缺失值总数,自定义的基数,数据分布(常用特征),均值,极值,中位数,数据结构
    • 3.离散特征:总数,自定义的基数,缺失值总数,数据分布(常用特征),数据结构,每个频数最高的类型
    • 4.检测数据/概念漂移:使用Hellinger 距离(whylabs 默认),Kullback_Leibler(KL)散度;,Jensen-Shannon(JS)散度,群体稳定指数(PSI)
  • 2.2 监控目标:模型性能层面

    • 1.分类:模型输入数据和输出数据计数,混淆矩阵,召回率,准确率,精确率,F1 得分,ROC,PR 曲线,FPR 值(默认指标)
    • 2.多分类:准确率,召回率,精确率(宏平均),F1 得分
    • 3.回归:模型输入数据和输出数据计数,均方误差,平均绝对误差,均方根误差
    • 4.排名:auc,字段auc,平均精度,MRR,NDCG
    • 5.LLM:ROUGE,文本语义相似性
    • 6.注释:不同模型也可以自定义性能指标
  • 2.3 监控目标:模型可解释性层面

    • 1.分析特征对模型的重要性比较
    • 2.比较同一特征在不同模型的重要性
    • 3.单独对重要特征进行可视化