机器学习训练管道 由数据工程师、数据科学家、机器学习工程师和站点可靠性工程师指定、设计、构建和使用。它们是专用的提取、转换、加载(ETL)数据处理管道,用于读取未处理的数据,并将模型的结构与机器学习算法应用于数据 [1] 。它们的工作是利用训练数据生成完整的模型,以备评估和使用。这些模型要么一次生成完整的,要么以各种方式增量生成。有些模型不完整是因为它们只覆盖了一部分可用数据,而有些则是因为在范围上不完整,它们被设计为只覆盖整个机器学习的一部分。
训练管道是机器学习系统中唯一直接明确使用机器学习特定算法的部分,但即使在这里,这些算法也大部分被打包在相对成熟的平台和框架中,如TensorFlow和PyTorch。
训练管道也是机器学习系统中为数不多最初就不可避免地要关注算法细节的部分。在机器学习工程师大概依靠相对成熟的库构建并验证了一个训练管道之后,该管道可以安全地被其他人重用和操作,而不需要许多专业的统计知识
。
训练管道面临着与其他任何数据转换管道相同的可靠性挑战,以及一些特定于机器学习的挑战。最常见的机器学习训练管道故障如下:
● 数据缺失
● 正确格式数据的缺失
● 实现数据解析或机器学习算法时的软件缺陷或报错
● 管道或模型的错误配置
● 资源不足
● 硬件故障(由于机器学习的计算十分庞大且持续时间长,某种程度上这是一个常见故障)
● 分布式系统故障(为了避免硬件故障,会使用分布式数据处理系统进行训练,所以这经常发生)
所有这些故障也是常规(非机器学习)ETL数据管道的故障模式的特征。但是,机器学习模型可能会因数据分布、数据丢失、采样不足或常规ETL世界中未知的一系列问题而毫无征兆地失败 [2] 。第2章将详细介绍一个具体示例,它所依据的想法是,数据丢失、错误处理数据或无法使用数据子集是机器学习训练管道失败的普遍原因。在第7章和第9章中,我们将讨论如何通过监控训练管道来发现这些问题(通常称为 分布的变化 )。现在,让我们记住,由于这些不易察觉的故障模式,机器学习管道确实比其他数据管道更难可靠地运行。
如果还不清楚的话,机器学习训练管道绝对完全是一个生产系统,像服务二进制文件或数据分析一样值得关注。(如果你所处的环境中,除了你之外,其他人都不相信这一点,那么知道有足够多的反例可以最终说服他人可能会令人略感欣慰。)举个有关“如果你对生产不够重视会发生什么”的例子,我们知道有这样的故事:公司建立的模型是由已经离开公司的实习生创建的,没有人知道如何重新生成它们。这说起来好像没什么,但我们建议你永远不要陷入那种境地。养成一个习惯,把你所做的事情写下来,并将其转化为自动化的东西,这会在很大程度上避免我们之前提到的结果。好消息是,这完全可以从小规模开始,只需要手动操作,不需要特别的重复性。然而,要想获得成功,需要自动化和审计,我们认为,越早将模型训练自动化并进行一些简单的正确性检查和模型保存越好。
在任何情况下,假设我们能够成功构建一个模型,我们都需要将其集成到面向客户的环境中。