当前位置: 首页 > 科技观察

连接系统和机器学习的MLOps挑战在哪里?这篇文章明确了

时间:2023-03-21 11:13:05 科技观察

机器学习彻底改变了人们使用和与数据交互的方式,提升了业务效率,从根本上改变了广告行业的格局,全面改变了医疗健康科技。然而,为了让机器学习继续扩大其影响和范围,必须改进开发流程。机器学习系统研究通过将数据库系统、分布式计算和应用程序部署等领域数十年的工作引入机器学习领域来满足这一需求。此外,通过利用模型并行性和改进遗留解决方案,我们可以利用系统重新设计来改进机器学习。在过去十年中,机器学习(ML)已成为各个领域无数应用程序和服务的重要组成部分。得益于机器学习的快速发展,从医疗保健到自动驾驶,许多领域都发生了深刻的变化。机器学习在实际应用中的重要性越来越高,引起了人们对一个专注于“实践中的机器学习”的新领域的关注,即机器学习系统(或简称MLOps)。该领域将计算机系统和机器学习联系起来,并从传统系统研究的角度考虑机器学习的新挑战。那么机器学习的挑战是什么?加州大学圣地亚哥分校博士生KabirNagrecha使用D.Sculley2015年论文《 Hidden Technical Debt in Machine Learning Systems 》中提出的架构来描述典型ML系统中的问题,并将其组件一一分解。D.Sculley论文中的ML系统架构,来源:https://papers.nips.cc/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdfKabirNagrecha专注于数据收集、验证和服务任务方面的挑战,以及一些探讨了模型训练中的问题,因为近年来模型训练已成为系统开发中成本越来越高的部分。接下来我们一一分析。数据收集虽然学术研究人员对CIFAR或SQuAD等即用型数据集感到满意,但行业从业者通常需要在模型训练期间手动标记和生成自定义数据集。然而,创建这样的数据集,尤其是在需要领域知识时,可能会非常昂贵。因此,这成为ML系统开发人员面临的主要挑战。如何解决?这个问题最成功的解决方案之一是利用系统和机器学习领域的研究。例如,通过将数据管理技术与自监督学习工作相结合,斯坦福大学的研究人员在2017年的论文《 Snorkel: Rapid Training Data Creation with Weak Supervision 》中提出了一种弱监督数据编程方法。他们提出的SnorkelAI将数据集创建视为一个编程问题,用户可以在其中为弱监督标签指定函数,然后将这些标签组合并加权以生成高质量标签。通过这种方式,可以将专家标注的高质量数据和自动标注的低质量数据进行融合跟踪,确保模型训练准确加权,充分考虑到不同级别的标签质量。SnorkelAI结合来自不同来源的标签,允许模型大规模聚合和改进混合质量的标签。来源:https://arxiv.org/pdf/1711.10160.pdf这种做法让人联想到数据库管理系统中的数据融合,将其应用于机器学习是支点和重新设计,而不仅仅是ML性创造的革命。通过识别系统和ML领域的共同问题,并结合数据源,传统的系统技术可以应用于机器学习设置。数据验证数据验证是数据收集的后续行动。数据质量是机器学习管道中的一个关键问题。如果维护者想要为自己的系统生成高质量的模型,他们必须确保输入数据也是高质量的。调整机器学习方法并不能轻易解决这个问题,需要调整ML系统。幸运的是,虽然机器学习的数据验证是一个新问题,但数据验证不是。引用TensorFlowDataVerification(TFDV)相关论文《 Data Validation for Machine Learning 》中的说法:数据验证既不是新问题,也不是机器学习独有的问题,因此我们可以借鉴数据库系统等相关领域的解决方案。然而,我们认为数据验证在机器学习场景中提出了独特的挑战,需要重新思考现有的解决方案。同样,通过承认机器学习系统和传统计算机系统之间的并行挑战,我们可以通过一些面向机器学习的修改来重新调整现有解决方案的用途。TFDV的解决方案使用了数据管理系统中经过验证的解决方案——模式。数据库强制执行属性以确保数据输入和更新遵循指定的格式。同样,TFDV的数据模式系统对模型的数据输入强制执行一些规则。TFDV用于ML数据验证的模式系统使用户能够避免生产系统中的数据馈送出现异常。来源:https://mlsys.org/Conferences/2019/doc/2019/167.pdf当然会有一些差异,体现机器学习系统与传统范式的差异。ML模型不仅需要与时俱进,实时调整以适应分布变化,还需要考虑模型本身在系统生命周期中可能发生的变化。模型训练ML从业者可能会惊讶地提到模型训练作为系统优化的一个领域。毕竟,如果机器学习应用程序有一个真正依赖ML技术的领域,那就是训练。但即便如此,系统研究仍然可以发挥作用。以模型并行化为例,随着Transformer的兴起,各种应用ML领域的模型规模都出现了显着增长。几年前,BERT-Large模型达到了3.45亿个参数,现在Megatron-LM已经增加到1万亿以上。这些模型的内存成本已经达到了数百GB,没有一个GPU可以容纳它们。传统的解决方案——模型并行化采用了一种比较简单的方法,就是将模型划分到不同的设备上,分配相应的内存开销。传统的模型并行化受到神经网络架构的顺序性质的影响。高效的并行化计算机是有限的。但是这种技术也存在模型本质上是连续的问题,训练模型需要层与层之间正向和反向传递数据。因此,一次只能使用一层和一台设备。这种情况将导致设备严重利用不足。系统研究如何提供帮助?以深度神经网络为例,如果将其分解成最小的组成部分,则可以看作是一系列对数据进行变换的算子。简单的训练就是这样一个过程:通过算子传递数据,生成梯度,再通过算子反馈梯度,最后更新算子。在这种分层分解之后,模型开始类似于其他分阶段操作,例如CPU的指令流水线。Google在2019年的论文《 GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism 》中提出的GPipe系统和分布式任务处理系统Hydra试图通过这种CPU并行指令将系统优化应用于可扩展性和并行性。其中,GPipe系统通过这条CPU并行指令,将模型训练转化为流水线问题。模型的每个分区被视为管道的不同阶段,小批量按分区分级以最大化利用率。序列模型并行化中的SOTA——流水线并行化可以并行处理小批量训练。然而,同步开销非常高,尤其是在前向和反向传递的转换过程中。但是请注意,反向传播通过相反的顺序多路复用各个阶段。这意味着:在前向管道完全畅通之前,反向传播无法开始。即便如此,这种技术可以将模型并行训练加速到一个很好的水平,在8个GPU上实现5倍的加速。Hydra采用另一种方法,将可伸缩性和并行性分为两个不同的步骤。数据库管理系统中的一个常见概念是溢出,其中多余的数据被发送到内存层次结构的较低级别。Hydra充分利用模型并行中的顺序计算,并观察到非活动模型分区不需要在CPU上进行处理。相反,Hydra将不需要的数据溢出到DRAM并间歇地切换GPU上的模型分区以模拟传统的模型并行执行。Hydra的模型溢出技术将深度学习训练的成本转移到DRAM而不是GPU内存,同时保持GPU执行的加速优势。这允许一次只使用一个GPU来训练模型。因此,在顶部引入某种级别的任务并行性是微不足道的。每个模型,无论其大小,一次只需要一个GPU,从而使系统能够充分利用每个GPU。使用8个GPU可以实现超过7.4倍的近乎最佳的加速。然而,模型并行性只是系统研究可以为模型训练带来的开端。其他潜在贡献包括数据并行(如PyTorchDDP)、模型选择(如Cerebro或模型选择管理系统)、分布式执行框架(Spark或Ray)等。模型训练是系统研究优化的成熟领域。模型服务最终,构建机器学习模型最终是为了消费。模型服务和预测是机器学习实践中最重要的领域之一,也是系统研究影响最大的领域之一。预测可以分为两个主要设置:离线部署和在线部署:离线部署相对更直接,涉及零星运行的单个大批量预测作业。常见设置包括商业智能、保险评估和医疗健康分析;在线部署是一种网络应用,如果用户希望他们的查询得到快速响应,则需要快速、低延迟的预测。离线和在线部署有自己的需求和要求。一般来说,离线部署需要高吞吐量的训练过程来快速浏览大量示例,而在线部署需要极快的单个预测周转时间,而不是一次进行多个预测。系统研究重塑了离线和在线部署任务的处理方式。以加州大学圣地亚哥分校的研究人员在论文《 Incremental and Approximate Computations for Accelerating Deep CNN Inference 》中提出的氪工具为例,该工具将视频分析重新视为“多查询优化(MQO)”任务。MQO不是一个新领域,几十年来它一直是关系数据库设计的一部分。总体思路很简单:不同的查询可以共享相关的组件,然后可以保存和重用。Krypton工具观察到,CNN推理通常是在成批的相关图像上进行的,例如在视频分析中。通常,视频以高帧率生成,因此相邻帧往往相对一致。frame1中的大部分信息仍然出现在frame2中。这种情况显然与MQO相同,在一系列任务之间共享信息。Krypton对第一帧进行常规推理,然后可视化或保存CNN在预测过程中产生的中间数据。将后续图像与第一帧进行比较,以确定图像中的哪些补丁已发生足以保证重新计算的变化。一旦识别出一个补丁,Krypton就会通过CNN计算补丁的“变化域”,以确定哪些神经元输出在整个模型状态中发生了变化。这些神经元根据更改后的数据重新运行,其余数据只需要从基础框架中多路复用即可。结果是推理工作负载的端到端加速超过4倍,而过时数据的准确性只有很小的损失。这种运行时改进对于安全录像视频分析等长时间运行的流式应用程序至关重要。Krypton并不是唯一专注于模型推理的工具。加州大学伯克利分校的研究人员在论文《 Clipper: A Low-Latency Online Prediction Serving System 》中提出的其他工具,例如Clipper和TensorFlowExtended,利用系统优化和模型管理技术提供高效和稳健的预测,解决了高效预测服务的相同问题。