Py学习  »  机器学习算法

机器学习模型部署都有哪些坑?剑桥研究者梳理了99篇相关研究

数据派THU • 3 年前 • 289 次点击  

来源:机器之心

本文约2500字,建议阅读6分钟
在生产环境中部署机器学习模型是一个复杂的过程,需要考虑诸多因素,也存在很多挑战。近日,来自剑桥的研究者梳理了该流程常见的问题。

近年来,机器学习在学术研究领域和实际应用领域得到越来越多的关注。但是,在生产系统中部署机器学习模型存在许多问题和担忧。近日,来自剑桥的研究者做了一项调查,综述了在各个用例、行业和应用中部署机器学习解决方案的报告,并提取了机器学习部署工作流程各阶段需要实际考量的因素。


论文地址:

https://arxiv.org/pdf/2011.09926.pdf


该调查表明,机器学习从业者在部署模型的每一个阶段都面临挑战。该论文的意义是制定研究议程,以探索解决这些挑战的方法。

该调查主要考虑了三种类型的论文:

  • 用例研究型论文:这类论文提供单个机器学习部署项目的经过,通常会深入讨论作者面临的每个挑战以及克服方式。
  • 综述文章:这类文章描述了机器学习在特定领域或行业中的应用,通常总结了在所涉及领域中部署机器学习解决方案最常遇到的挑战。
  • 经验总结型论文:作者通常会回顾他们在生产中部署机器学习模型的经验。

为确保本次调查聚焦当前挑战,剑桥大学研究人员仅考虑近 5 年发表的论文,只有少数例外。此外,他们还引用了其他类型的论文,例如实践指导报告、访谈研究、规则制度。需要注意的是,该论文没有进行新的访谈。

机器学习部署流程

该论文使用 Ashmore 等人 [14] 提出的机器学习部署工作流程定义。根据该定义,在工业环境中开发 ML 解决方案的过程包含 4 个阶段:

  • 数据管理:重点是准备构建机器学习模型所需的数据。
  • 模型学习:模型选择和训练。
  • 模型验证:确保模型符合特定功能和性能要求。
  • 模型部署:将训练好的模型集成到运行模型所需的软件基础架构中。此阶段还涵盖模型维护和更新的问题。

以上每个阶段还可以进一步细分。但需要注意的是其顺序与现实场景未必完全相符,这些阶段并行执行或存在反馈循环是很正常的。

本文探讨了每个阶段会出现的常见问题,以及会对各阶段带来影响的跨领域问题,参见下表:


数据处理

数据是任何机器学习解决方案中不可或缺的部分,训练和测试数据对解决方案整体效果的影响不比算法少。创建高质量数据集通常是生产级机器学习流程的第一步。该论文介绍了数据管理的四个步骤:数据收集、数据预处理、数据增强和数据分析。

数据收集

数据收集旨在发现和了解可用数据,以及组织数据的存储结构。发现和寻找数据本身就是一项挑战,特别是在大型生产环境中。查找数据源并了解其结构是主要任务,对于后续数据科学家开展实际应用开发具有重要作用。

数据预处理

预处理步骤通常涉及一系列数据清洗步骤:插补缺失值、将数据缩减为有序且简化的形式、从原始格式映射为更便于处理的格式。

数据增强

数据增强的原因有多种,其中最重要的原因之一是数据缺少标签。现实世界中的数据通常没有标签,缺少标注数据的可能因素有三个:专家访问受限、缺乏高方差(high-variance)数据、数据量过大。

数据分析

数据分析旨在发现数据中的潜在偏差或意外分布。高质量工具对于任何类型的数据分析都至关重要,其中数据剖析(data profiling)的可视化是极具挑战性的。

模型学习

近年来,机器学习方法的研究倾向于在模型学习阶段更好地选择和使用各种模型和方法。六年来,机器学习顶会 NeurIPS 的论文提交量翻了两番,从 2014 年的 1678 篇到 2019 年的 6743 篇。尽管如此,模型学习阶段仍然受到许多实际因素的影响。本文主要阐明了与模型选择、训练和超参数选择 3 个步骤有关的问题。

模型选择

在许多实际例子中,模型选择通常取决于模型的一个关键特性:复杂度。尽管深度学习和强化学习在研究界越来越受欢迎,但实际情况中往往会选择比较简单的模型。常用的模型包括:浅层网络架构,基于 PCA 的简单方法、决策树、随机森林。

训练

模型训练最受关注的问题之一是因计算资源导致的经济成本。在自然语言处理(NLP)领域,尽管单个浮点运算的成本在降低,但训练 NLP 模型的总成本却在增长。Sharir 等人选择 SOTA 模型之一 BERT 进行实验,结果发现根据所选模型的大小,完整训练过程的经济成本可能在 5 万到 160 万美元不等,而这是大多数研究机构甚至企业无法承受的。此外,训练数据集的大小、模型参数的数量和训练过程中用到的操作数量都会对总成本产生影响。值得一提的是,模型参数量是尤其重要的影响因素:新的 NLP 模型已经达到了数十亿的参数量,未来这一数字还可能进一步增加。

超参数选择

除了在训练过程中学习到的参数以外,许多机器学习模型还定义了一些超参数。超参数优化(HPO)是选择这些超参数最佳集合的过程。大多数 HPO 技术涉及机器学习模型的多个训练周期。此外,HPO 任务的规模随着每个新的超参数呈指数式增长,因为它为搜索空间增加了新的维度。正如 Yang 和 Shami 所说,这些考虑因素使 HPO 技术在实践中非常昂贵且耗费资源,尤其是对于深度学习的应用而言。即使 Hyperband 和贝叶斯优化这类专门设计用来最小化所需训练周期的方法,由于模型复杂度和数据集大小等问题,有些问题仍然无法解决。

模型验证

模型验证阶段的目标是多方面的,因为机器学习模型应该很好地泛化到未见过的输入,显示出对边缘情况的合理处理和整体鲁棒性,并满足所有的功能需求。该论文讨论了与模型验证中的三个步骤——需求编码、形式验证和基于测试的验证有关的问题。

需求编码

定义机器学习模型的需求是测试活动的关键前提,但实际情况中经常会发现模型性能提升并不能转换为商业价值的增益。

形式验证

形式验证是指验证模型功能是否符合项目范围内所定义的要求。这类验证包括对其正确性的数学证明,也可以包括输出误差范围的数值估计,但是这种情况实际上很少发生,往往是通过广泛的监管框架形式化设置高质量标准。

基于测试的验证

基于测试的验证旨在确保模型能够很好地泛化到未见过的数据。尽管收集验证数据集通常不是问题,但对于生产部署而言这可能还不够。

模型部署

在生产环境中运行的机器学习系统是复杂的软件系统,需要根据时间的变化进行维护。这给开发人员带来了新的挑战。其中一些挑战在运行常规软件服务时也存在,而有些挑战则是机器学习特有的。

模型集成

模型集成步骤包括两个主要活动:构建运行模型的基础架构,以可使用和支持的形式实现模型。前者几乎是完全属于系统工程的主题,后者则属于机器学习领域,它揭示了机器学习与软件工程交集中的重要问题。

模型监测

模型监测是维护机器学习系统方面的问题之一。社区正处于理解待监测数据和模型的关键指标以及如何启动警报的早期阶段。监测不断变化的输入数据、预测偏差和机器学习模型的整体性能是一个尚未解决的问题。

该论文强调的另一个维护问题与数据驱动决策有关,即反馈循环。生产级机器学习模型可以通过定期的再训练影响自己的行为。在确保模型保持最新状态的同时,我们可以创建反馈循环,即调整模型的输入以影响其行为。

模型更新

模型完成初始部署后,通常还需要更改,以确保模型始终反映数据和环境的最新趋势。有多种技术可以使模型适应新数据,包括按计划定期再训练和持续学习。但在生产环境中,模型更新会受到多种实际因素的影响。


编辑:于腾凯

校对:林亦霖


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/107072
 
289 次点击