机器学习下的持续交付
作者头像
  • 王杉杉
  • 2020-03-11 11:41:39 1

前言

机器学习在各行各业的应用日益普及,但与传统软件开发相比,如Web服务或移动应用开发,机器学习程序的开发、部署和持续改进变得更加复杂。这些程序的功能通常由代码修改、模型调整和数据变更这三个维度驱动。机器学习程序往往表现出复杂、难以预测、难以测试、缺乏可解释性和难以改进的特点。因此,机器学习下的持续交付(CD4ML)成为开发机器学习应用时必须遵循的最佳实践。

CD4ML的定义

CD4ML是一种软件工程方法,旨在以小而安全的增量生成基于代码、数据和模型的机器学习应用程序。这种方法通过跨职能团队的合作,实现机器学习程序的快速、可靠和持续交付。具体而言,CD4ML包括以下几个关键原则:

  • 软件工程的方法:提高软件开发效率和质量。
  • 跨职能团队:数据工程师、数据科学家、机器学习工程师等各领域专家共同合作。
  • 基于代码、数据和模型的软件开发:所有组件均需版本控制和管理。
  • 安全的增量发布:每个组件分阶段发布,确保每一步的安全性和可控性。
  • 可复现的软件版本发布:全程自动化,确保每次发布的可复现性。
  • 随时发布:软件随时可以投入生产环境,即使没有立即发布,也要保持随时发布的状态。
  • 短暂的适应周期:开发周期短,以天或小时为单位,而非周或月。

一个预测销售的机器学习应用

自2016年以来,我们一直在探索如何将持续集成应用于机器学习领域。本文将通过一个预测销售量的案例,展示如何实现CD4ML。我们为一家厄瓜多尔杂货批发商Favorita构建了一个简单的解决方案,旨在通过历史销售数据预测未来销售量。通过监督学习算法和Python的scikit-learn库,我们训练了一个预测模型,并将其整合到一个部署在云端的Web应用中。

共同的挑战

实现端到端流程时,我们面临两个主要挑战。首先是组织结构问题,不同团队可能有不同的工作流程,导致工作交接不畅,甚至“扔过墙”现象。其次是技术层面的问题,如何确保流程的可复现性和审计性。不同团队使用的工具和工作流程差异较大,这使得端到端流程的复现变得困难。

CD4ML的技术组件

可探求和可访问的数据

数据是机器学习的基础。数据可以从内部核心系统或外部引入。为了确保数据易于探求和访问,可以采用数据湖、数据仓库或分布式数据架构等方法。数据版本控制是一个重要环节,需要考虑数据结构和数据样本的变化。

可复现的模型训练

数据可用后,进入模型构建阶段。通常需要拆分数据集,尝试不同的算法组合,并调整参数。为了标准化模型训练过程,可以使用DVC(数据科学版本控制)等工具。DVC可以跟踪文件版本,允许数据变化时重新训练模型,并支持Git集成,允许多个实验共存。

模型服务和部署

找到合适的模型后,需要决定如何将其部署到生产环境。常见的方法包括将模型嵌入到应用程序中,将其作为独立服务部署,或将模型作为数据发布。在示例中,我们选择了将模型嵌入到应用程序中的方法。模型被序列化并存储在云存储中,应用程序构建时将其拉取并嵌入到Docker容器中。

集成测试

为了确保模型与应用程序的良好集成,需要进行集成测试。可以通过关联测试验证模型接口是否符合生产环境需求。此外,还需要验证导出模型的输出一致性,以及使用各种性能指标进行阈值测试。

实验跟踪

在机器学习过程中,需要对多个实验进行追踪。可以使用DVC和MLflow Tracking等工具来记录和可视化实验参数及性能指标。这些工具可以帮助团队做出决策,选择最佳模型。

持续交付业务流程设置

通过协调端到端流程,确保模型和应用程序顺利部署到生产环境。可以使用GoCD等工具来管理和部署复杂的流程,包括模型训练、测试、部署等环节。此外,需要制定回滚计划,以防模型表现不佳。

模型的检测及可观测性

模型部署后,需要了解其在生产环境中的表现。可以通过日志收集和监控工具,如EFK栈(Elasticsearch、FluentD、Kibana),来分析模型输入、输出及性能。这些工具可以帮助团队捕捉模型运行中的偏差,确保模型的持续改进。

端到端的CD4ML流程

通过逐步解决每个技术挑战,我们成功构建了端到端的CD4ML流程。该流程涵盖了代码、模型和数据的管理、发现、访问和版本化。通过自动化和测试,确保模型的可复现性和可靠性。最后,通过监控和反馈闭环,实现了模型的持续改进。

当下,我们如何起步?

我们提供的示例应用和代码可以在GitHub存储库中找到,并作为我们在会议和客户研讨中的演示基础。CD4ML的实现是一个持续发展的过程,未来还将有更多的改进和讨论空间。特别是在数据版本控制、数据管道和平台建设等方面,我们期待更多实用工具和技术的发展。

    本文来源:图灵汇
责任编辑: : 王杉杉
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
交付机器持续学习
    下一篇