1. 什么是 MLOps
MLOps 是 Machine Learning Operations 的缩写,描述的是围绕模型研发整个生命周期过程的标准化和工程化。
MLOps 包括以下几个关键步骤:
- 数据管理,数据的存储、访问、清洗、转换
- 模型开发,算法开发、模型构建
- 模型训练与调优,使用数据训练模型,调整超参数优化模型,微调模型
- 模型评估,测试模型的准确性、泛化能力、性能指标
- 模型部署,将模型部署到预期环境,转换模型
- 模型监控,监控模型的表现,性能退化、数据漂移、健壮性
另一个类似的概念是 ModelOps。ModelOps 涵盖的范围更广,不仅仅包含 MLOps 所关注的机器学习模型,而是所有人工智能领域的模型。
2. MLOps 的收益
2.1 提升模型研发效率
- 自动化工具,加快模型的训练、部署、评估等过程
- 促进协作,提高团队的工作效率
2.2 提高一致性
- 通过版本控制,确保数据、模型参数、实验等每一步都可以被追踪
- 标准化流程,减少人工操作带来的不一致性
- 环境管理,保障各种环境的可复现、可交付
2.3 促进分工协作
- 明确职责,算法、数据、运维工程师各自负责自己的工作
- 专业化分工,不同协作
3. MLOps 的核心问题
- 缩短模型研发的迭代周期
很多公司上线一个模型需要较长时间,通常达到 1 - 3 个月 。MLOps 希望通过标准化、自动化的流程来加速这个过程。
- 各个角色之间无缝协作
模型的开发过程,涉及业务、数据、算法、运维等多种角色。MLOps 希望能够构建模型研发过程中各个角色之间协作的统一平台。
4. DevOps VS MLOps
DevOps | MLOps | |
---|---|---|
关注点 | 软件开发和 IT 运维 | 机器学习模型的开发、部署和运维 |
团队组成 | 软件工程师和 IT 运维人员 | 数据科学家、机器学习工程师和 IT 运维人员 |
开发任务 | 编写新功能代码或修复现有 bug | 构建和训练机器学习模型,进行实验性探索 |
测试范围 | 执行单元和集成测试,关注代码质量 | 除常规测试外,还需验证数据和模型质量 |
部署过程 | 部署代码和应用程序 | 部署机器学习流水线,自动重新训练和部署模型 |
生产环境 | 监控应用程序和生产环境的错误和性能 | 监控模型性能,跟踪数据变化和模型衰退 |
持续集成 (CI) | 测试和验证代码及组件 | 测试和验证数据、数据架构和模型 |
持续交付 (CD) | 部署软件包或服务 | 部署机器学习训练流水线,自动部署模型预测服务 |
持续训练 (CT) | - | 自动重新训练和提供模型,ML 系统特有 |
目标 | 加速软件交付和提高可靠性 | 提高机器学习模型的效率和可靠性 |
挑战 | 持续集成和自动化部署的挑战 | 模型漂移、数据偏差、模型解释能力等 |
5. MLOps 包含的环节
- 数据提取
确定所需的数据,获取原始的数据集。
- 数据分析
探索数据的统计特征,比如数值范围、分布等; 检查数据质量,是否存在缺失值、异常值;识别数据特征和模式。
- 数据准备
将数据拆分为训练集、验证集、测试集;对数据进行必要的预处理,比如归一化、编码等;将数据转换为模型可接受的格式。
- 模型训练
选择合适的算法和模型架构,训练模型,并将训练好的模型保存下来。
- 模型评估
在测试集上评估模型效果,分析模型的优缺点,与基线模型对比性能。
- 模型验证
确认模型是否达到可部署的性能水平,验证模型的鲁棒性,评估模型的可解释性、公平性等质量指标。
- 提供模型
将模型部署到生产环境中,对外提供 API 接口。
- 模型监控
持续收集和监控模型在线服务的性能指标; 检测数据漂移,评估是否需要重新训练模型; 根据监控结果优化或者重新训练模型。
6. MLOps 分级
6.1 级别 0:手动过程
适用场景:
- 不需要频繁更新模型
特性:
- 依赖手动操作
- 脚本驱动的交互式手动过程:数据分析、数据准备、模型训练和验证完全手动
- 机器学习与操作分离:数据科学家与工程师分离,训练好的模型作为工件移交给工程团队
- 不频繁发布迭代:新模型版本每年仅部署几次
- 无 CI/CD:由于更改不频繁,持续集成和持续部署被忽略
- 仅部署经过训练的模型作为服务,而不需要完整的机器学习平台
- 不跟踪或记录模型预测和操作
存在的问题:
- 模型可能无法适应环境动态变化或数据的变化
- 需要在生产环境中主动监控模型质量
- 需要频繁地使用最新数据重新训练模型
- 需要不断尝试新的实现以生成模型
6.2 级别 1:机器学习流水线自动化
适用场景:
- 自动使用新数据训练模型
- 持续交付模型服务
特性:
- 快速实验:机器学习实验步骤编排,自动执行转换,快速迭代
- 自动使用新数据训练模型
- 在不同环境中能平滑切换
- 组件和流水线的模块化代码:代码模块化,组件容器化,以实现可重现性
- 持续交付模型:流水线自动执行模型部署步骤
要求:
- 数据和模型验证:自动化数据验证和模型验证步骤
- 特征存储区:集中式存储区,标准化特征的定义、存储和访问。
- 元数据管理:记录流水线每次执行的信息,实现数据和工件沿袭、可重现性
- 机器学习流水线触发器:根据时间表或响应触发器自动执行流水线
6.3 级别 2:CI/CD 流水线自动化
适用场景:
- 需要快速根据新的数据、新的业务环境训练模型
- 对模型迭代速度和质量有较高的要求
特性:
- 源代码控制:管理流水线和组件的源代码
- 测试和构建服务:自动构建、测试和封装流水线及其组件
- 部署服务:自动部署流水线实现到目标环境
- 模型注册表:管理模型的不同版本
- 特征存储区和元数据存储区:提供特征和元数据管理
- 编排流水线:提供流水线编排能力