原文:
www.kdnuggets.com/2022/05/operationalizing-machine-learning-poc-production.html
机器人卡通矢量图由 vectorjuice 创建 - www.freepik.com
许多公司使用机器学习来帮助创造竞争优势和发展业务。然而,要使机器学习有效并不容易,因为它需要在研究和工程之间找到平衡。虽然可以根据当前研究提出一个好的创新解决方案,但由于工程效率、成本和复杂性,可能无法投入生产。大多数公司尚未从机器学习中获得显著的投资回报,因为只有在模型投入生产后才会实现这种收益。让我们深入探讨挑战和最佳实践,以使机器学习发挥作用。
首先,让我们框定一个典型 AI 项目的主要阶段:
-
概念验证(PoC) – 此阶段的目的是验证机器学习是否真的能解决当前的问题。同时,估算在生产中解决问题所需的成本和时间。
-
工程 – 顾名思义,这一阶段的重点是模型工程,以实现规模和可靠性,设置验证框架和数据管道。
-
维护或 AI 操作 – 这是一个重要步骤,因为数据不是静态的,会不断变化,这意味着模型需要用新数据进行训练,并频繁部署到生产中。如果不自动化模型训练、部署、验证以及最终监控,这将无法有效完成。
接下来,理解数据科学家在设计机器学习解决方案时需要解决的关键挑战,以确保业务的投资回报(ROI)是重要的。针对每一个挑战,都有成功克服这些挑战的建议。
-
数据 – 质量和数量
-
算法选择 – 准确性与成本
-
生产中的模型性能
-
部署自动化和监控(MLOps)
-
处理规模
任何机器学习模型中最重要的部分是数据,训练一个模型既需要质量也需要数量。首先让我们从数量开始。
许多时候,公司或团队的数据要么太少,要么太多。在 PoC 阶段,即使数据量不大,也能轻松验证方法,但该解决方案可能无法适用于所有生产场景。这是因为用于训练和验证的数据集可能不能代表全部数据,并且在某些情况下可能无法获取数据,例如在罕见的医学疾病情况下。
让我通过一个实例来详细说明这一点:我们的一位法律领域客户希望根据法规对文件进行分类,并提取每个法规的信息。初始训练数据集仅有 20 份文件,目标是对一百万份文件进行分类。小训练数据集的挑战在于确保模型不会过拟合数据。过拟合会确保在 PoC 阶段(我们不使用未见数据验证模型时)准确率很高,但在模型投入生产时却不一定。我们选择了一个简单的一类分类模型,它可以从小数据集中学习模式而不会过拟合,并在数据增多后投入生产并进行改进。
选择可以处理小数据的算法,通过将功能范围限定为仅解决已见模式并收集未见模式的数据,将其投入生产。通过迭代改进模型以涵盖其他场景。或者,使用半监督学习,它可以处理较少数据的问题。
与小数据类似,大数据也是一个问题,因为机器学习模型的训练时间可能非常长,并且所需的计算能力可能很高。我们需要创建一个代表完整数据集的子集数据集。挑战不仅在于选择正确的采样技术,还在于自动化样本收集过程,以确保数据不过时。
我们遇到了类似的情况,我们为一家广告公司在实时竞价领域解决了一个投标价格预测问题,该公司每天收到近 700 亿个请求。我们不能在全部数据上训练模型,甚至捕获 PoC 所需的数据也需要一些工程工作,以确保原始数据和采样数据的分布保持一致。
通过将数据采样模块集成到数据处理管道中来自动化训练数据集的创建。为了解决数据较少的问题,使用过采样技术,如 SMOTE(合成少数类过采样技术),可以从当前数据分布中生成合成样本。
数据质量也很重要,因为输入模型的数据质量决定了模型输出的 AI 质量。PoC 阶段训练数据的分布可能与生产阶段数据的分布不同,从而导致生产中的错误增加。这主要是由于使用了不正确的采样技术。
为了解决大数据问题,我们必须使用良好的采样技术来创建适合问题陈述的最佳训练数据。在实时竞价项目中,我们使用了随机采样,因为数据来自均匀分布。
在项目的 PoC 阶段,数据科学家主要关注解决方案和结果。然而,任何组织只有在解决方案具有成本效益(相较于当前解决方案)并且在性能(响应时间等)上表现突出时,才会批准项目。在选择算法时,重要的是要关注机器学习解决方案的运行成本。
机器学习解决方案的成本取决于我们选择的算法或技术。例如,使用特定领域数据从头开始训练深度学习模型可能会得到良好的准确性,但需要多个 GPU 进行训练,而经典的机器学习解决方案可能不需要 GPU。计算成本可能会根据方法和训练数据的大小非线性增长。
我也遇到过类似的问题。在处理语音克隆问题时,我们可以选择从头开始训练卷积神经网络(CNN)基础的深度学习模型或使用迁移学习。我们选择了基于迁移学习的解决方案,因为成本降低了 60%,而且克隆的准确性足够好,不会在生产中看到差异。
在考虑机器学习解决方案时,我们也应注意基础设施成本。这些成本应作为比较不同模型时的一个指标,除了准确性指标。控制基础设施成本的一些方法包括:
-
避免在可以使用 CPU 完成的任务中使用 GPU。例如,经典的机器学习模型可以使用 CPU 进行训练。
-
尽可能使用迁移学习。
-
仅在需要时训练模型。例如,当数据分布发生变化或新增类别时。定期训练模型而数据变化不大,会增加项目的基础设施开销。
标准指标如 MAPE、F1 分数、IOU 等可以用于衡量模型性能。这些指标在 PoC 阶段测试模型时效果很好,但在考虑业务 ROI 时可能效果不佳。如果机器学习模型实施不当,也可能对业务产生负面影响。
一个例子是我们为一家广告公司构建的评分预测模型,该模型在机器学习指标方面的准确性很好,但业务的成功衡量标准是收入最大化。我们必须提出一种集成方法来实现收入最大化。
为了最小化影响,采用 A/B 测试方法逐步推出解决方案。关键是要使部署自动化,以便在需要时能够回滚 ML 解决方案。
这是整个项目中最重要的部分,但由于工程和 DevOps 团队对机器学习的理解不足,大多数人忽视了这一点。持续监控模型性能是非常重要的,因为如果输入数据发生变化,模型结果可能会变化。在这一阶段,你需要克服以下问题:
-
大多数数据工程师不理解采样、数据准备和模型验证技术,因此无法建立数据管道以收集训练数据和验证模型。
-
DevOps 团队在管理模型版本、回滚等方面常常缺乏机器学习经验。
-
缺乏工具来帮助监控生产中的机器学习模型。
对于前面提到的竞标价格预测问题,我们修改了数据处理管道,通过采样生成训练数据并存储在一个公共位置,如果数据分布发生变化,可以触发训练管道。DevOps 团队通过逐步部署模型到一个集群来自动化模型部署。DevOps 团队还设置了模型准确性的监控,以在准确性下降到特定阈值以下时生成警报。
数据科学家应该在开发解决方案之前定义生产环境中模型性能的指标和指标。一旦定义好,数据科学家需要与工程和 DevOps 团队紧密合作,建立数据处理管道和监控系统。
定义 ML 模型规模的两个重要因素是:
-
模型可以处理的请求数量
-
执行时间(延迟)
我们可以通过线性扩展模型部署来扩大模型可以处理的请求数量。执行时间是规模的一个关键因素,因为它增加了处理延迟,从而影响规模。
机器学习 PoC 就像一个研究项目,包含不同类型的实验,以找出针对当前问题的最佳算法或方法。具有最佳准确度的解决方案的时间复杂度可能较高,导致延迟较高。构建解决方案时,考虑解决方案的复杂度很重要,因为如果简化解决方案,放弃准确度可能是最佳选择。
以竞标问题为例,我们使用强化学习实时预测竞标价格。预测所需的整体时间必须少于 60-70 毫秒,这意味着机器学习模型的执行时间必须更短以避免超时。为了减少整体执行时间,我们通过降低强化学习模型中环境的复杂性,改用 JAVA 而非 Python 实现模型,并进行部署来降低复杂度。
在选择算法时,执行时间是一个重要的指标。有时,如果通过简单算法可以减少总体延迟,牺牲一定的准确性也是值得的。
要成功地将机器学习模型部署到生产环境中:
-
定义用于在 PoC 阶段验证模型性能的指标和指示器。
-
根据基础设施预算和延迟要求选择机器学习方法。
-
自动化数据处理管道以进行训练和执行。
阿拉赫·沙尔玛 是 Talentica Software 的数据科学家,该公司是一家全球产品开发公司,帮助初创公司开发产品。阿拉赫是印度科学学院班加罗尔的校友。他通过采用强化学习、机器学习和自然语言处理,帮助企业获得竞争优势。
1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。
2. 谷歌数据分析专业证书 - 提升您的数据分析技能
3. 谷歌 IT 支持专业证书 - 支持您的组织的 IT 工作