机器学习的持续集成与部署
将 DevOps 方法应用于机器学习(MLOps)和数据管理(DataOps)正变得越来越普遍。这意味着资源编排(为模型训练配置服务器)、模型测试(验证模型推理)、模型部署到生产环境,以及监控与反馈。DVC 可以管理数据/模型和可复现的流水线,而 CML 可在编排、测试和监控方面提供帮助。
以下是 ML 中 CI/CD(持续集成与持续交付)的主要优势。
首先,我们可以实现自动化并强制执行测试。这包括通过特定于应用的测试来确保完整性:
- 数据验证:例如,根据模式进行验证或验证流水线一致性——正确的形状、数据类型等。
- 模型验证:例如,输入/输出和性能验证——推理运行所需的所有依赖项均已存在,且模型得分在阈值范围内。
通常,这需要 基础设施编排:让 CI 系统自动配置并启动 GPU 实例,训练模型,干净地终止任务,并拉回结果。具体包括:
- 配置:当拉取请求(PR)中添加或更改了数据或代码时,自动在云端运行验证测试。
- 指标:自动生成指标报告。
最后,还可以更进一步,在线运行完整的 实验/研究:
- 定时微调:设置任务从定期更新的外部数据源获取新数据,重新训练或优化已部署的模型。
- 运行超参数搜索:让重型资源和大数据在 CI 服务器上整夜运行,同时让你的笔记本电脑进入休眠状态。
通常情况下,CI/CD 很难设置、配置和维护——尤其是针对数据和机器学习流水线。
DVC 和 CML 消除了大多数机器学习中的管理难题。你可以自动化上述所有操作,而无需任何额外配置。以下是一些主要功能亮点:
将模型、数据和指标作为代码管理:DVC 无需创建版本数据库、使用特殊的文件/文件夹结构或编写定制的接口代码。相反,DVC 将元信息存储在 Git 中(将数据和机器学习模型“代码化”),同时将实际数据内容推送到云存储。DVC 还在 Git 仓库中提供基于指标的导航功能——制表并绘制不同提交之间的模型指标变化。
低摩擦:我们的姊妹项目 CML 提供轻量级机器资源编排,让你可以利用现有的基础设施。DVC 和 CML 都提供了抽象化和代码化能力,且无需外部服务。
数据验证:每次向代码仓库分支推送代码变更时触发测试是一种常见做法。DVC 可以以类似方式检出不同版本的数据,用于测试和运行完整性检查。错误可以自动被发现,而无需贡献者在本地设置复杂的测试。相反,采用敏捷开发方式,你可以在一天内多次自信地打包、部署和交付新版本——甚至在周末前完成——而不必担心出现缺陷或回归问题。
指标(模型验证):每次提交更改时,DVC 可检查流水线(包括数据、参数、代码和指标)是否为最新状态,从而确保 Git 提交与模型产物保持同步。DVC 还可在新模型投入生产前,对先前已部署的模型运行基准测试。CML 提供了实用工具来简化此流程——例如在拉取请求的评论中以交互式图表和表格报告指标变化。
云端优化:DVC 和 CML 可让您在云端重新训练或优化模型,而无需频繁在本地更新模型(例如基于定期获取的新数据)。例如,CI 服务支持定时执行常规任务,每天可运行一个作业,使用 CML 在云端配置一台 GPU 服务器,DVC 从持续更新的数据源拉取数据,检出已有模型,并基于新增数据训练并部署更新后的模型。
云端实验:或者,您也可以使用 DVC 和 CML 在云端进行研究并运行实验——例如完整的超参数搜索!
+
= ❤️