本文转载自雷锋网。com。在过去十年中,机器学习(ML)彻底改变了无数应用程序和服务。随着它在实际应用中的重要性越来越大,这导致人们认识到需要从机器学习系统(MLOps)的角度来审视机器学习中遇到的新挑战。那么这些新挑战是什么?近日,加州大学一名17岁的博士生在博文中指出,机器学习系统是ML在实践中的一个新领域,在计算机系统和机器学习之间起着桥梁作用。因此,应该从传统系统的角度来审视数据收集、验证、模型训练等方面的“新情况”。图注:机器学习系统架构以下为原文,AI科技科技评论编译删改不改意愿1.数据收集虽然研究人员更喜欢使用现成的数据集,如CIFAR或SQuAD,从模型训练从这个角度来看,从业者往往需要手动标注和生成自定义数据集。但是,创建此类数据集的成本很高,尤其是在需要领域专业知识的情况下。因此,数据收集是系统开发人员在机器学习中面临的主要挑战。目前,应对这一挑战最成功的解决方案之一是借鉴系统和机器学习研究。例如,SnorkelAI采用“弱监督数据编程”方法,将数据管理技术与自我监督学习相结合。它的作用:SnorkelAI将数据集的创建重新想象为一个编程问题,用户在其中为弱监督标签指定函数,然后将这些标签组合并加权以生成高质量标签。可以合并和跟踪专家标记数据(高质量)和自动标记数据(低质量),同时考虑到不同级别的标签质量,以确保模型训练得到准确加权。图例:SnorkelAI结合了不同来源的标签,使模型能够最大限度地聚合并改进混合质量的标签。这种技术让人联想到数据库管理系统中的数据融合,通过识别系统和ML(组合数据源)的共同问题,我们可以将传统的系统技术应用到机器学习中。2.数据验证数据验证是数据收集的后续工作。数据质量是机器学习中的一个关键问题。俗话说,就是“垃圾进,垃圾出”。因此,为了系统地生成高质量的模型,必须确保输入数据也是高质量的。要解决这个问题,不仅需要调整机器学习的方法,还要有调整系统的思路。幸运的是,虽然数据验证对于ML来说是一个新问题,但数据验证已经在业界进行了讨论:引用TensorFlowDataValidation(TFDV)的论文:基于游戏开发》DatavalidationisneitheranewproblemnorisuniquetoML,因此我们从相关领域(例如数据库系统)借用解决方案。但是,我们认为该问题在ML的上下文中具有独特的挑战,因此我们需要重新考虑现有的解决方案“”数据验证既不是新问题也不是问题不是ML独有的,所以我们可以借鉴相关领域(比如数据库系统)的解决方案。但是,我们认为这个问题在ML的背景下有特殊的挑战,所以我们需要重新思考现有的解决方案“TFDV的解决方案使用了'battle'来自数据管理系统的“经过测试”的解决方案-模式化。数据库强制执行属性以确保数据输入和更新符合特定格式。同样,TFDV的数据模式对输入的数据执行规则进入模型。图例:TensorFlowDataValidation基于模式的ML数据验证系统使用户能够防止生产系统中的数据输入异常。当然,有一些差异反映了机器学习系统与传统模型的不同之处。ML模型需要随着时间的推移而发展和调整以考虑数据分布的变化,还需要考虑在系统生命周期内可能对模型本身进行的更改。很明显,机器学习提出了一种新型的系统性挑战。然而,这些系统带来了许多旧事物和新事物。在我们寻求重新发明轮子之前,我们应该利用我们已经拥有的东西。3.模型训练ML从业者可能会惊讶地将模型训练视为系统优化的一个领域。毕竟,如果机器学习应用程序有一个真正依赖ML技术的领域,那就是训练。但即便如此,系统研究也可以发挥作用。以模型并行化为例。随着Transformers的兴起,ML模型的规模已经大大增加。几年前,BERT-Large仅超过345M个参数,而现在Megatron-LM已经超过万亿个参数。这些模型的绝对内存成本可以达到数百GB,单个GPU已经无法承受。传统的模型并行化解决方案采用了一种相对简单的方法:跨不同设备对模型进行分区以分配内存成本。传统模型并行化受神经网络架构顺序的影响。高效并行计算的机会是有限的。但这种技术是有问题的:模型本质上是顺序的,训练它需要通过层来回传递数据。一次只能使用一层,也只能使用一台设备。这意味着将导致设备利用率不足。系统研究如何提供帮助?考虑一个深度神经网络。将其分解为最基本的组件,您可以将其视为一系列转换数据的运算符。训练只是指我们通过算子传递数据,产生梯度,通过算子反馈梯度,然后不断更新的过程。在此级别,模型开始以类似于其他阶段的方式运行——例如,CPU的指令流水线。GPipe和Hydra这两个系统试图利用这种并行性来应用系统优化以实现可扩展性和并行性。GPipe使用CPU指令并行性将模型训练变成流水线问题。模型的每个分区都被视为管道的不同阶段,小批量分阶段通过分区以最大限度地提高利用率。流水线并行是顺序模型并行中最??先进的技术,它以小批量并行化训练。但是同步开销可能很昂贵,尤其是在前向和后向转换中。但是请注意,在反向传播中,阶段以相反的顺序重复使用。这意味着在前向管道完全畅通之前,反向传播无法开始。尽管如此,这种技术可以在很大程度上加快模型的并行训练:8个GPU可以提速5倍!Hydra采用不同的方法,将可伸缩性和并行性分为两个不同的步骤。数据库管理系统中的一个常见概念是“溢出”,即将多余的数据发送到内存层次结构的较低级别。Hydra在模型并行中利用顺序计算,并提出非活动模型分区不需要在GPU上。相反,它将不需要的数据移交给DRAM,并在GPU上交换模型分区,模拟传统模型并执行它们。Hydra的模型溢出技术(Hydra'smodelspillingtechnique)将深度学习训练的成本分配到DRAM而不是GPU内存,同时保持GPU执行的加速优势。这允许我们一次只使用一个GPU来训练模型。然后,在此之上引入某种级别的任务并行性是微不足道的。每个模型,无论大小,一次只需要一个GPU,因此系统可以同时充分利用每个GPU。结果是8个GPU的加速超过7.4倍,接近最佳。但模型并行化只是系统研究帮助模型训练的开始。其他有前途的贡献包括数据并行性(例如PyTorchDDP)、模型选择(例如Cerebro或模型选择管理系统)、分布式框架(Spark或Ray)等等。因此,模型训练是一个可以通过系统研究优化的领域。4.ModelServing建立机器学习模型毕竟是为了使用。模型服务和预测是机器学习实践中最关键的方面之一,也是系统研究中最具影响力的领域之一。预测分为两个主要设置:离线部署和在线部署。离线部署相对简单,涉及偶尔运行单个、高批量预测作业。常见设置包括商业智能、保险评估和医疗保健分析。在线部署属于网络应用,需要快速、低延迟的预测来满足对用户查询的快速响应。两种设置都有自己的需要和要求。一般来说,离线部署需要高通量的训练程序来快速处理大量样本。另一方面,在线部署通常需要非常快的单个预测周转时间,而不是同时进行很多预测。系统研究改变了我们处理这两项任务的方式。以Krypton为例,它将视频分析重新设想为“多查询优化”(MQO)任务的工具。MQO不是一个新领域——几十年来它一直是关系数据库设计的一部分。总体思路很简单:不同的查询可以共享相关的组件,然后可以保存和重用。36氪指出,CNN的推理通常是对成批的相关图像进行的,比如视频分析。通常,视频的特点是高帧率,这意味着连续的帧往往相对相似。框架1中的大部分信息仍然存在于框架2中。这里与MQO有明显的相似之处:我们有一系列任务,它们之间共享信息。Krypton在第1帧上运行常规推理,然后具体化或保存CNN在进行预测时产生的中间数据。随后的图像与第一帧进行比较,以确定图像中哪些地方发生了较大的变化,哪些需要重新计算。一旦确定了补丁,Krypton就会通过CNN计算补丁的“变化域”,从而确定哪些神经元输出在模型的整个状态下发生了变化。这些神经元使用更改后的数据重新运行。其余数据仅从基础框架中重用!结果:端到端训练速度提高了4倍以上,并且由于数据滞后而导致的准确性损失很小。这种运行时改进对于长时间运行的流应用程序至关重要。Krypton并不是唯一专注于模型推理的公司。其他作品,例如Clipper和TensorFlowExtended,通过利用系统优化和模型管理技术提供高效且稳健的预测来解决相同的高效预测服务问题。5.结论机器学习彻底改变了我们使用数据和与数据交互的方式。它提高了企业的效率,并从根本上改变了某些行业的前景。但要让机器学习继续扩大其范围,某些过程必须改进。系统研究可以通过将数十年来在数据库系统、分布式计算和应用程序部署方面的工作引入机器学习领域来提高机器学习性能。虽然机器学习非常新颖且令人兴奋,但它的许多问题却并非如此。通过识别相似点并改进旧的解决方案,我们可以使用系统来重新设计ML。作者简介KabirNagrecha是加州大学圣地亚哥分校的博士生,师从ArunKumar。13岁通过提前入学计划进入大学。此后,他一直在工业界和学术界从事机器学习领域的工作。曾获得加州大学圣地亚哥分校卓越研究奖、CRA杰出本科生研究员等荣誉。目前在Apple的Siri团队实习。他的研究重点是通过使用系统技术实现深度学习的可扩展性。
