【SIGMOD 2023】深度学习弹性数据流水线系统GoldMiner,大幅提升任务和集群效率

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 阿里云机器学习平台PAI和北京大学杨智老师团队合作的论文被SIGMOD 2023录用。

第一板块:开篇

近日,阿里云机器学习平台PAI和北京大学杨智老师团队合作的论文《GoldMiner: Elastic Scaling of Training Data Pre-Processing Pipelines for Deep Learning》被数据库领域顶会SIGMOD 2023接收。

GoldMiner观察到深度学习任务中的数据预处理流水线具有无状态的特点,具有内在的资源弹性。基于此,GoldMiner将数据预处理流水线和模型训练部分分离执行,通过自动计算图分析来识别无状态的数据预处理计算,并对其实现高效的并行加速和弹性伸缩,从而缓解数据预处理瓶颈,提升训练性能。通过与集群调度器的协同设计,GoldMiner进一步发挥了数据预处理计算的资源弹性,大幅提升集群调度效率。实验显示GoldMiner可提升训练性能达12.1倍,提升GPU集群利用率达2.5倍。

第二板块:背景

近年来,随着GPU加速器的不断进化,以及各类软件优化技术的层出不穷,深度学习训练的计算效率正不断被提升到新的层次。但与此同时,深度学习本质上仍是一种多阶段、多资源的任务类型:不仅需要在GPU上进行大量的训练计算,同时往往也需要CPU端的数据预处理流水线(如数据增强、特征转换等),这类预处理计算是训练出高质量模型的必要步骤。因此,GPU端训练性能的提升也带来了更大的数据预处理压力,使后者成为新的性能瓶颈。

我们观察到数据预处理瓶颈对任务训练性能和集群资源利用效率都有深刻的影响。一方面,对于单个训练任务而言,数据预处理瓶颈意味着训练性能的受损。我们在一台配备8块V100 GPU和64个vCPU核的虚拟机上使用一块GPU和不同的vCPU数进行了性能测试,观察不同模型需要多少vCPU才能达到最优性能。结果显示(下图)大部分模型都需要超过8个vCPU(即一块GPU平均能得到的vCPU数)才能达到最优性能,甚至部分模型需要消耗掉整机八卡的64个vCPU。这就意味着这类模型在共享集群中很可能无法得到足够的CPU资源,导致数据预处理部分性能下降,最终影响训练效率(下图右侧纵轴表示仅使用8个vCPU时能达到的相对性能)。

image.png

而另一方面,上述的问题在云上场景中会更为严重,影响共享集群中的资源分配效率。目前企业一般都会构建或购买共享GPU集群来运行训练任务,在这种GPU集群中GPU利用率至关重要。而用户为了避免自己任务CPU不足,可能主动提高任务的CPU-GPU配比,然而这些用户自定义的CPU-GPU配比很容易导致集群资源碎片。比如某台机器上由于跑了一些CPU-GPU配比较高的任务,最终CPU比GPU先被分配完,这样机器上空闲的GPU会无法被分配出去,不仅导致昂贵的GPU资源被浪费,也会提高任务的等待时间。我们在阿里巴巴内部GPU集群中的观察发现有近40%的任务等待时间浪费在了这种“GPU足够但CPU不足”的情况上。

image.png

解决上述的两方面问题的一种手段是将GPU端训练和CPU端数据预处理分离,使这两部分计算的资源分配不必捆绑在同一台机器上。这样当机器CPU资源不足时可以使用其他机器的资源,一来可以为单个任务分配更多的CPU资源达到加速效果,同时也缓解了碎片GPU无法分配的问题。实际上这一思路并不是首次被提出,然而要用这种方式提高任务和集群效率仍存在一系列技术挑战。

第三板块:挑战

尽管已有一些方案(如tf.data service、PyTorch DPP)支持数据预处理计算的分离执行,现有技术仍有以下几方面挑战需要解决:

  1. 计算切分效率:现有技术简单地通过深度学习框架提供的Dataset/DataLoader API,将这类API内部封装的计算作为数据预处理计算分离出去。然而我们发现即便在这类API之外,仍可能存在一部分计算是可以分离执行的,简单的切分方式错失了这部分并行加速的机会。
  2. 用户代码侵入性:tf.data service [1]、PyTorch DPP [2]等技术要达到数据预处理的分离执行,均需要用户重构这部分代码逻辑,有较大的代码侵入性。我们希望达到以用户透明的方式实现这一分离的效果。
  3. 与集群调度的结合:在与训练分离后,数据预处理计算实际上蕴含了内在的资源弹性,而现有技术均没有在集群调度的层次挖掘这部分弹性,以提升集群整体资源利用效率。

第四板块:破局

GoldMiner是一个自动、弹性的数据预处理服务。如图所示,GoldMiner使用data worker(DW)和training worker(TW)两类角色来分别进行数据预处理和训练两部分计算。GoldMiner可从原始用户代码中自动化地识别出data worker部分的计算(也包含没有被封装在Dataset/DataLoader API中的计算)。同时GoldMiner实现了数据预处理计算的弹性伸缩,并通过与集群调度器的协同设计,进一步提升了集群效率。

image.png

GoldMiner实现这一效果的关键在于利用了数据预处理计算的无状态性。这里的无状态是指数据预处理不依赖于模型参数,而模型参数需要在训练的每一次迭代中被反复更新,因此不依赖于模型参数的计算即可与训练部分异步化地执行。我们知道深度学习计算可以被表达为数据流图(DFG),GoldMiner通过对于用户DFG的分析,自动找出其中无状态的子图。下图是一个典型推荐模型的DFG,不同于直接仅切分Dataset的做法(图中的Simple partition),GoldMiner通过识别与模型参数的依赖关系,将切分范围自动扩展到后续的一些特征转换操作(Expected partition)。实验显示通过这一拓展我们可以将data worker并行加速的效果再提升1.6倍。

image.png

基于自动化的图切分,GoldMiner进一步实现了data worker部分子图在多个data workers间的并行加速以及data workers和training workers间的数据传递。利用data worker的无状态性,这一分布式执行实现了data workers数量的动态伸缩,从而在集群空闲资源不断变化的过程中更高效地利用资源。

为了充分发挥data worker的资源弹性,GoldMiner提供了一个data worker调度器,调度器会在任务和集群两个层次进行动态资源调整。对于每个任务,GoldMiner调整其DW和TW的尺寸以搜索到一个扩展效率最高的配置;在集群维度上,GoldMiner在不同任务之间动态调整data workers数量分配,以优化某些全局调度目标(如最小化任务完成时间)。这两层调整利用了一个统一的性能指标,即在DW和TW之间传递数据的队列,该队列的状态体现了DW和TW的相对速度,以及增加DW的潜在收益。在一个64-GPU的集群中进行的实验显示GoldMiner调度器可以缩短平均任务完成时间达2.5倍,提升GPU分配率达2.1倍。

image.png

第五板块:应用

我们此前已经在客户的真实推荐模型上评测了GoldMiner的效果,结果显示GoldMiner可为用户模型加速1.43倍,并可削减13%的训练成本。目前在落地部署中。

同时我们也开发了PyTorch版本实现,并即将与PAI-DLC集成,向用户提供数据预处理加速的能力。

第六板块:

  • 论文名字:GoldMiner: Elastic Scaling of Training Data Pre-Processing Pipelines for Deep Learning
  • 论文作者:赵汉宇,杨智,程羽,田超,任仕儒,肖文聪,袁满,陈浪石,刘恺博,张杨,李永,林伟
  • 论文pdf链接:https://dl.acm.org/doi/pdf/10.1145/3589773
  • 参考文献:

[1] Andrew Audibert, Yang Chen, Dan Graur, Ana Klimovic, Jiri Simsa, Chandramohan A. Thekkath. A Case for Disaggregation of ML Data Processing. https://arxiv.org/abs/2210.14826

[2] Mark Zhao, Niket Agarwal, Aarti Basant, Bugra Gedik, Satadru Pan, Mustafa Ozdal, Rakesh Komuravelli, Jerry Pan, Tianshu Bao, Haowei Lu, Sundaram Narayanan, Jack Langman, Kevin Wilfong, Harsha Rastogi, Carole-Jean Wu, Christos Kozyrakis, Parik Pol. Understanding Data Storage and Ingestion for Large-Scale Deep Recommendation Model Training. ISCA'22

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
24天前
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
44 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的魔法:如何用神经网络解锁数据的奥秘
在人工智能的璀璨星空中,深度学习犹如一颗最亮的星,它以其强大的数据处理能力,改变了我们对世界的认知方式。本文将深入浅出地介绍深度学习的核心概念、工作原理及其在不同领域的应用实例,让读者能够理解并欣赏到深度学习技术背后的奇妙和强大之处。
25 3
|
22天前
|
机器学习/深度学习 监控 TensorFlow
使用Python实现深度学习模型:智能森林火灾预警系统
使用Python实现深度学习模型:智能森林火灾预警系统
52 5
|
1月前
|
机器学习/深度学习 数据采集 人工智能
《零基础实践深度学习》基于线性回归实现波士顿房价预测任务1.3.3
这篇文章详细介绍了如何使用线性回归算法实现波士顿房价预测任务,包括数据读取、形状变换、集划分、归一化处理、模型设计、前向计算以及损失函数的计算等步骤,并提供了相应的Python代码实现。
 《零基础实践深度学习》基于线性回归实现波士顿房价预测任务1.3.3
|
1月前
|
机器学习/深度学习 缓存 数据处理
《零基础实践深度学习》2.3.3 校验数据有效性 基于飞桨Dataset和DataLoader API完成数据处理
这篇文章详细介绍了在深度学习任务中进行数据处理的步骤,包括数据校验、封装数据读取与处理函数、使用飞桨Dataset和DataLoader API完成数据加载,以及数据增强/增广的方法和实践,旨在确保数据的有效性和提高模型训练效果。
|
8天前
|
机器学习/深度学习 人工智能 算法
操作系统的未来:从多任务到深度学习的演变之路
本文将探讨操作系统如何从处理简单多任务发展到支持复杂的深度学习任务。我们将分析现代操作系统面临的新挑战,以及它们如何适应人工智能和大数据时代的要求。文章不仅回顾过去,也展望未来,思考操作系统在技术演进中的角色和方向。
21 3
|
1月前
|
机器学习/深度学习 算法 前端开发
《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结
使用Numpy实现梯度下降算法来构建和训练线性模型进行波士顿房价预测的过程,并提供了模型保存的方法,同时提出了几个关于梯度计算、参数更新和神经网络训练的作业题目。
 《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结
|
13天前
|
机器学习/深度学习 传感器 监控
基于深度学习的感知和认知系统
基于深度学习的感知-认知系统结合了感知和认知两大核心模块,旨在为机器提供从数据采集、分析到决策制定的一整套能力。这种系统模仿人类的感知(如视觉、听觉)和认知(如推理、决策)过程,能够高效地感知复杂环境,并进行智能决策。
30 2
|
20天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别在自动驾驶系统中的应用
【8月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已成为推动多个领域革新的核心动力。特别是在图像识别任务中,深度学习模型展现出了卓越的性能。本文将探讨一种基于卷积神经网络(CNN)的图像识别方法,并分析其在自动驾驶系统中的实际应用。我们首先回顾深度学习在图像处理方面的基础知识,随后详细介绍一个高效的CNN架构,并通过实验验证该架构在复杂环境下对车辆、行人及其他障碍物的检测和分类能力。最后,讨论了该方法在实际自动驾驶系统中面临的挑战及潜在的改进方向。
|
20天前
|
机器学习/深度学习 传感器 人工智能
基于深度学习的图像识别技术在自动驾驶系统中的应用
【8月更文挑战第30天】 随着人工智能的快速发展,特别是深度学习技术在图像处理和模式识别领域的突破进展,自动驾驶系统得以实现更为精准的环境感知与决策。本文深入探讨了基于深度学习的图像识别技术在自动驾驶系统中的应用,并分析了其对提高自动驾驶安全性和可靠性的重要性。通过综合运用卷积神经网络(CNN)、递归神经网络(RNN)等先进算法,我们能够使自动驾驶车辆更好地理解周围环境,从而进行有效的导航与避障。文章还指出了目前该领域面临的主要挑战及未来的发展方向。