MLOps实战(1)

2022年11月正式接触MLOps,本篇记录理论学习。

理论概念

  1. 传统系统模块化设计,松耦合;
    ML系统牵一发动全身(数据、model、参数改变触发新版本)
  2. ML技术可能适用的场景:
    (1)无法通过经验给出规则;
    (2)已有好数据,业务依赖数据作决策;
    (3)目标问题不断发生变化;
    (4)无法扩展;
  3. 业务需求是一个问题或者痛点,需要在冲突的需求之间找到合适的平衡点,并将其转化为模型的输入和输出、损失函数和性能指标的选择。
  4. MLOps提供所有已部署模型以及所有经过A/B测试的模型的性能的可见性。
  5. ML实验跟踪
    (1)简化从实验到生产的模型迁移
    (2)模型投产后的版本控制
    (3)在ML模型注册中心管理模型工件
    (4)在生产中测试各种模型版本
    (5)serving
  6. A/B test:统计技术,用于online模型评估
    (1)确定商业目标的衡量指标(通常为代理指标)
    (2)确定实验本身的参数(样本量、持续时间)
  7. CI:持续集成,经常测试每个软件单元的代码库,以及通过单元测试、集成测试、系统测试来测试不同软件工件共同工作的完整性。在ML领域,需要:
    (1)测试和验证模型代码及依赖组件的有效性
    (2)测试和验证数据、数据模式、模型的性能
    CD:持续部署,模型开发人员将更新后的模型、模型代码(含预测代码)上传至中央存储,然后部署到生产环境中。设计一个ML pipeline,将模型预测所涉及的流程和依赖自动部署或更新到一个ML服务。
    建议:使用进程锁的单节点+基于Kubernetes的多节点部署方案。
    交付:构建一个完全打包并经过验证的模型版本的过程,该版本可以部署到生产环境中。
  8. 模型衰退/出错的原因:
    (1)新训练集质量不高
    (2)数据漂移P(X) or 概念漂移P(y|X)-持续、周期性出现
    (3)特征修复
    (4)依赖资源改变
  9. 版本控制:假设条件、随机性、数据、设定值、结果、执行、环境,将版本控制和再现性相关的基础文档任务自动化,通过集成平台进行设计和部署。
  10. 模型评估指标
    (1)统计:准确度、精准度、召回
    (2)计算:平均延迟、延迟的95百分位等
  11. 模型监控
    (1)资源层面:CPU、RAM、网络使用率和磁盘空间是否符合预期?请求是否以预期的速度得到处理?
    (2)性能层面:随着时间的推移,模型仍然是新输入数据模式的准确表示吗?性能和设计阶段一样好吗?

ML

  1. 监督学习:分类、回归;无监督学习:聚类
  2. model choose –》algorithm + config + training;
    error & performance trade off
  3. 泛化:对新鲜样本进行准确预测的能力

Engineering

  1. 特征工程:对原始数据或中间特征进行一系列工程化处理,映射为一个更适合建模的新的表现形式,以降低原始数据的噪声和冗余。
  2. 基类(接口):定义一个标准和基础功能,独立软件块之间的“边界”,定义不同组件的交流方式。
  3. 工件:可测试和可部署的项目包

MLOps

  1. ML模型需要两个版本的管道:一个用于训练-history,一个用于服务-real time。
    将管道中的节点进行抽象,整个管道作为产品进行集中化开发和维护。
    可用于抽象的节点:
    (1)特征存储
    (2)训练过程各节点模块化
    (3)Maas,服务管道封装成通用的模型服务接口,一键生成模型服务
  2. 首先确定业务可以产生哪些数据,目标输出是什么,然后界定哪些模型适合加工这类输入和输出;
    规划ML任务的步骤:
    (1)将业务目标框定在一个ML范式中
    (2)评估该任务的可行性,根据评估结果,重新调整ML框架和算法,直到获取满意的结果为止
  3. 数据准备-特征工程-模型开发-模型部署-模型监控
  4. 评估指标
    (1)模型表现(代理指标-模型侧指标)-模型目标-模型开发时期
    (2)业务表现-业务目标-模型部署时期
  5. ML项目生命周期
    (1)定业务目标-行业专家和数据科学家合作
    (2)数据准备:clean-feature engineering-sample
    (3)模型实验:通过离线评估进行最佳模型的选择
    (4)模型工程:对实验过程进行脚本封装并生成ML管道
    (5)模型评估
    (6)模型预测
    (7)模型监控
  6. 模型部署
    -生成代码&模型的序列化:将代码、环境依赖、模型实例部署到中央存储,为后续模型的版本化及回溯使用。
    -模型的服务化:通过数据库批量推理模式(offline)、推入式推理模式、单服务推理模式和微服务推理模式为应用提供服务。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!