大型企业的机器学习模型管理流程

随着人工智能和机器学习应用范围越来越广泛,大量的企业会将各种机器学习模型部署到生产实践中。在技术驱动型的中小型企业中这是一件相对容易的事情,因为没有繁琐的流程、利益冲突和监管限制,通常能够很容易的推动新技术的应用。

然而在大型企业中,机器学习的实践远没有小企业那么简单快捷,涉及到数据、模型验证、商业价值、隐私、伦理、安全等等诸多因素,因此需要一套标准流程来统筹兼顾。这个流程通常包括这些内容:

  1. 立项阶段
    1. 商业价值分析:(分析模版:需要明确这个模型能够带来的利益,整个项目是否成功的标准能否量化,对现有方案的提升程度,给谁带来利益)
    2. 可行性分析:数据是否可以获取、质量是否足够
    3. 风险分析:
      1. 数据隐私分析:涉及到的数据是否敏感(如涉及个人隐私),是否有相应的措施降低数据泄漏风险,增强隐私保护
      2. 伦理分析:所使用的模型是否会带来歧视、不公平等道德问题
      3. 其他可能的政策风险
    4. 项目管理计划:明确交付成果、交付对象、完成时间、经费来源、团队人员分工,需要哪些外部团队合作
  2. 启动阶段
    1. 分配计算机资源(计算集群或者云计算服务器),并明确回收时间
    2. 准备数据:
      1. 授权数据权限(这里需要IT部门架设安全的隔离环境来处理敏感数据)
      2. 建立管道
      3. 检查数据质量:缺失值、数值单位、数据类型、定型变量检查、重复值、异常值、bias、
      4. 数据伦理:少数群体的数据量是否充足、是否存在敏感的个人信息(年龄、性别、种族、信仰、健康状况、国籍……)
  3. 开发阶段
    1. 数据探索性分析 (EDA)
    2. 模型选择与训练
    3. 特征管理
    4. 超参数优化
    5. 交叉验证:是否存在数据泄漏,overfit或者underfit,是否对于某些具有特殊属性的样本精度明显偏低
    6. 模型解释:各个特征对于输出结果的影响是否合理,是否包含敏感数据(性别、年龄等)
    7. 模型稳定性:模型性能是否会随着不同的样本或时间波动
    8. 模型的其他局限分析:例如伦理或偏见分析
    9. 监控日志模块:详细输出模型的训练与预测时重要参数
    10. 代码打包:各个功能模块化,遵守标准的目录和文件结构,发布artifactory
  4. 测试阶段
    1. 数据测试:
    2. 单元测试:
    3. 性能测试:训练时间、预测时间
    4. 精度测试:
    5. 稳定性测试:微小扰动是否带来预测的巨大变化、对抗攻击测试(例如Fast Gradient Sign Method)、对于相同输入能否产生稳定输出
    6. 伦理测试:模型输出是否有bias,合理特征重要性
    7. 用户测试 (UAT,User Acceptance TEST):业务端用户能够接受最终模型
  5. 审阅阶段
    1. 逻辑检查:是否存在 magic number,死循环,错误条件判断等
    2. 代码质量检查:代码规范、注释、文档等,没有冗余代码或者重复造轮子
    3. 日志检查:模型输出有意义、必要的日志信息
    4. 测试覆盖:100%单元测试、100%代码风格测试、单元测试覆盖尽可能多的场景
    5. 文档检查:文档是否详细到任何人都可以轻松接手,有清晰可用的使用手册(训练&预测、参数配置),故障诊断
    6. 伦理检查:模型预测结果是否给部分人带来不公平的劣势/优势
    7. 流程检查:所有流程是否严格遵守了并有完整的文档记录
  6. 部署阶段
    1. 生产数据管道搭建
    2. 模型训练管道搭建
    3. 模型部署管道搭建:考虑batch / real time API / streaming 等不同的模型部署场景
    4. 紧急联系人确认
  7. 监控阶段
    1. 数据特征监控:是否有data drift风险
    2. 模型性能监控:是否有model drift风险
    3. 商业价值监控:关联业务端的相关指标监控
    4. 阈值定义:如何触发重新训练

需要强调的是,以上流程的设立是为了服务并促进业务的优化,流程的执行本身不是目的。如果繁琐的流程成为了业务开展的阻碍,则需要停下来思考,这些流程是否有必要进行精简。

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据