DVC 使用案例(三):机器学习持续集成与持续交互( CI/CD )

简介: 将 DevOps 方法应用于机器学习 (MLOps) 和数据管理 (DataOps) 越来越普遍。对于一个完善的 MLOps 平台来说,需要囊括资源编排(为模型训练提供服务器)、模型测试(验证模型推理)、模型部署到生产,以及模型监控和反馈等机器学习生命周期各个环节。 DVC 可以管理数据/模型和重现 ML 流水线,而 CML 可以协助编排、测试以及监控。

将 DevOps 方法应用于机器学习 (MLOps) 和数据管理 (DataOps) 越来越普遍。对于一个完善的 MLOps 平台来说,需要囊括资源编排(为模型训练提供服务器)、模型测试(验证模型推理)、模型部署到生产,以及模型监控和反馈等机器学习生命周期各个环节。 DVC 可以管理数据/模型和重现 ML 流水线,而 CML 可以协助编排、测试以及监控。


网络异常,图片无法展示
|


ML 的 CI/CD(持续集成和持续交付)的主要好处如下:

首先,我们可以自动化和强制执行测试。这包括通过特定于应用程序的测试来加强完整性:

  • 数据验证:例如,针对schema进行验证或验证流水线的一致性(正确的形状、数据类型等)。
  • 模型验证:例如,输入/输出和性能验证(所有依赖项都存在,以进行推理,并且模型得分在阈值内)。

通常,ML 流水线需要基础架构编排:让 CI 系统配置和启动 GPU 实例、训练模型、干净利索地终止并拉取结果。

  • 调配:在 pull 请求 (PR) 中添加/更改数据或代码时,自动在云环境中运行验证测试。
  • 指标:自动生成指标报告。

最后,通过在线运行整个实验/研究能够更进一步的优化模型:

  • 按计划进行微调:设置作业以从定期更新的外部源中提取新数据,以重新训练和优化部署的模型。
  • 运行超参数搜索:让重量级资源和大数据在 CI 服务器上运行整晚,让您的笔记本电脑进入睡眠状态。

通常情况下,CI/CD 管理非常困难(设置、配置和维护),尤其是对于数据和机器学习流水线。

网络异常,图片无法展示
|


DVC 和  CML 消除了 ML 中的大部分管理难题。您可以自动执行上述所有操作,而无需任何其他配置。

以下是一些功能亮点:

  • 模型、数据和指标就像代码一样:DVC 消除了必需创建版本控制数据库、使用特殊文件/文件夹结构或编写定制接口代码。相反,DVC 将元信息存储在 Git 中(对数据和 ML 模型进行“编码”),同时将实际数据内容推送到云存储。 DVC 还在 Git 存储库中提供了以指标驱动方式找到合适的实验模型(在跨提交的更改中表格化和图表模型指标)。
  • 低冲突:我们的姊妹项目 CML 提供轻量级机器资源编排,让您可以使用预先存在的基础设施。 DVC 和 CML 都提供抽象与编码,并且不需要外部服务。
  • 数据验证:通常的做法是每次将代码更改推送到Git存储库分支时触发测试。 DVC 可以以类似的方式用于检查不同的数据版本,以进行测试和运行健全性检查。可以自动捕获错误,而无需贡献者在本地设置复杂的测试。拥抱敏捷开发,这样您就可以自信地每天多次打包、部署和交付新版本(甚至在周末之前),而不必担心出现错误。
  • 指标(模型验证):无论何时提交更改,DVC 都可以检查流水线(包括数据、参数、代码和指标)是否是最新的,从而确保 Git 提交和模型制品是同步的。 DVC 还可以在将新模型发布到生产之前针对先前部署的模型运行基准测试。 CML 提供了有用的工具来简化此过程。
  • 在云中改进:DVC 和 CML 让您可以在云中重新训练与优化模型,而不是频繁地在本地更新模型。例如,CI 提供者允许定期的作业调度。每一天,一个作业都可以使用 CML 提供一个GPU服务器,DVC将从定期更新的源中提取数据,检查预先存在的模型,然后部署一个更新的模型(基于增加的数据改进)。
  • 在云端进行实验:DVC 和 CML 可用于在云端进行研究和运行实验,例如,一个完整的超参数搜索!


相关文章
|
2月前
|
JavaScript 前端开发 持续交付
Prettier 高级应用:集成 CI/CD 流水线与插件开发
【10月更文挑战第18天】Prettier 是一款流行的代码格式化工具,它能够自动将代码格式化成一致的风格,从而提高代码的可读性和维护性。对于希望进一步发挥 Prettier 潜力的高级用户而言,将 Prettier 集成到持续集成(CI)和持续部署(CD)流程中,确保每次提交的代码都符合团队标准,是非常重要的。此外,通过开发自定义插件来支持更多语言或扩展 Prettier 的功能也是值得探索的方向。本文将详细介绍这两方面的内容。
48 2
|
19天前
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
|
26天前
|
jenkins Java 持续交付
软件开发自动化程度的不断提高,持续集成(CI)和持续部署(CD)成为现代软件开发的重要组成部分
随着软件开发自动化程度的不断提高,持续集成(CI)和持续部署(CD)成为现代软件开发的重要组成部分。本文以电商公司为例,介绍如何使用 Jenkins 自动发布 Java 代码,包括安装配置、构建脚本编写及自动化部署等步骤,帮助团队实现高效稳定的软件交付。
30 3
|
28天前
|
存储 Java 调度
Sppring集成Quartz简单案例详解 包括(添加、停止、恢复、删除任务、获取下次执行时间等)
Sppring集成Quartz简单案例详解 包括(添加、停止、恢复、删除任务、获取下次执行时间等)
22 2
|
2月前
|
缓存 监控 测试技术
掌握容器化持续集成/持续部署(CI/CD)的最佳实践
【10月更文挑战第8天】本文介绍了容器化持续集成/持续部署(CI/CD)的最佳实践,涵盖容器化CI/CD的概念、优势和实施步骤。通过使用容器技术,可以实现环境一致性、快速迭代和易于扩展,提高软件开发的效率和可靠性。文章还详细讨论了编写高效的Dockerfile、自动化测试、安全性、监控和日志管理等方面的最佳实践。
|
2月前
|
Devops jenkins 测试技术
DevOps实践:持续集成与持续部署(CI/CD)的实现之路
【9月更文挑战第33天】在软件开发的海洋中,DevOps是一艘能够加速航行、提升航程质量的巨轮。本文将作为你的航海图,指引你理解并实现DevOps文化中的核心环节——持续集成(CI)与持续部署(CD)。我们将从基础概念出发,逐步深入到实际操作,带你领略代码到部署的全过程。准备好扬帆起航,让我们共同探索如何通过自动化工具和流程优化,让软件交付变得既高效又可靠。
|
1月前
|
运维 安全 Devops
DevOps实践:持续集成与持续部署(CI/CD)的自动化之路
【10月更文挑战第22天】在软件交付的快速迭代中,DevOps文化和实践成为企业加速产品上市、保证质量和提升客户满意度的关键。本文将通过一个实际案例,深入探讨如何利用持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)实现软件开发流程的高效自动化,包括工具选择、流程设计以及问题解决策略。我们将一起探索代码从编写到部署的全自动化旅程,揭示其对企业运维效率和产品质量所带来的深远影响。
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
70 0
|
3月前
|
Kubernetes Go 持续交付
一个基于Go程序的持续集成/持续部署(CI/CD)
本教程通过一个简单的Go程序示例,展示了如何使用GitHub Actions实现从代码提交到Kubernetes部署的CI/CD流程。首先创建并版本控制Go项目,接着编写Dockerfile构建镜像,再配置CI/CD流程自动化构建、推送Docker镜像及部署应用。此流程基于GitHub仓库,适用于快速迭代开发。
63 3
|
2月前
|
机器学习/深度学习 算法
【机器学习】迅速了解什么是集成学习
【机器学习】迅速了解什么是集成学习

热门文章

最新文章