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

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 阿里云机器学习平台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)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
3天前
|
机器学习/深度学习 算法 TensorFlow
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
谷物识别系统,本系统使用Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经算法网络模型,通过对11种谷物图片数据集('大米', '小米', '燕麦', '玉米渣', '红豆', '绿豆', '花生仁', '荞麦', '黄豆', '黑米', '黑豆')进行训练,得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。
34 0
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
|
7天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用构建高效云原生应用:云平台的选择与实践
【5月更文挑战第31天】 随着人工智能技术的飞速发展,深度学习已经成为推动计算机视觉进步的关键力量。特别是在图像识别领域,通过模仿人脑处理信息的方式,深度学习模型能够从大量数据中学习并识别复杂的图像模式。本文将探讨深度学习技术在自动驾驶系统中图像识别方面的应用,重点分析卷积神经网络(CNN)的结构与优化策略,以及如何通过这些技术提高自动驾驶车辆的环境感知能力。此外,文章还将讨论目前所面临的挑战和未来的研究方向。
|
7天前
|
机器学习/深度学习 传感器 自动驾驶
构建一个基于深度学习的自动驾驶模拟系统
【5月更文挑战第31天】本文探讨了构建基于深度学习的自动驾驶模拟系统,该系统包括模拟环境、传感器模拟、深度学习模型、车辆控制和评估反馈等组件。关键技术研发涉及3D渲染、深度学习框架、传感器模拟、车辆动力学模型和评估反馈机制。模拟系统为自动驾驶测试提供安全平台,促进性能优化,随着技术发展,未来模拟系统将更智能,助力自动驾驶技术革新出行体验。
|
7天前
|
机器学习/深度学习 人工智能 算法
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
43 0
|
7天前
|
机器学习/深度学习 自动驾驶 安全
基于深度学习的图像识别技术在自动驾驶系统中的应用
【5月更文挑战第30天】 本篇文章探讨了深度学习技术如何革新当前自动驾驶系统的图像识别能力。文章首先回顾了传统机器学习方法在处理复杂交通场景时的局限性,并引入深度学习作为解决方案。接着,详细分析了卷积神经网络(CNN)在车辆检测、行人识别和交通标志识别等方面的应用,并通过实验数据展示了其在准确率和处理速度上的优势。最后,讨论了深度学习面临的挑战以及未来可能的发展方向。
|
8天前
|
机器学习/深度学习 自动驾驶 算法
基于深度学习的图像识别技术在自动驾驶系统中的应用
【5月更文挑战第30天】 在自动驾驶技术的迅猛发展中,图像识别作为其关键技术之一,扮演着至关重要的角色。本文聚焦于探讨如何通过深度学习算法优化图像识别过程,以提高自动驾驶系统的准确性和可靠性。文中首先概述了自动驾驶中图像识别的重要性,随后详细介绍了几种主流的深度学习模型及其在图像处理中的应用,包括卷积神经网络(CNN)、循环神经网络(RNN)及生成对抗网络(GAN)。此外,文章还分析了真实世界数据对模型训练的影响,并提出了当前技术面临的主要挑战及潜在的改进方向。
|
8天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【5月更文挑战第30天】 随着人工智能技术的飞速发展,特别是深度学习算法在图像处理领域的突破性进展,图像识别技术已成为自动驾驶系统不可或缺的核心组成部分。本文旨在探讨深度学习技术如何提升自动驾驶车辆的图像识别能力,并分析其在复杂交通环境下的实际应用效果。通过对卷积神经网络(CNN)和循环神经网络(RNN)等关键深度学习模型的研究,我们揭示了这些模型在实时物体检测、分类和追踪中的作用机制,并提出了针对自动驾驶安全性的提升策略。
|
8天前
|
机器学习/深度学习 存储 监控
Kubernetes 集群的持续监控与性能优化策略深度学习在图像识别中的应用与挑战
【5月更文挑战第29天】 在当今微服务架构和容器化部署的大背景下,Kubernetes 已成为众多企业的首选平台。然而,随着集群规模的扩大和业务复杂性的增加,如何确保系统的高可用性和性能稳定性成为一个挑战。本文将探讨针对 Kubernetes 集群实施的持续监控方案以及针对性能瓶颈的优化策略,旨在帮助运维人员有效管理和提升其服务的质量。
|
8天前
|
机器学习/深度学习 运维 监控
构建高效自动化运维系统:策略与实践基于深度学习的图像识别在自动驾驶系统中的应用
【5月更文挑战第29天】 在当今的信息技术时代,企业的IT基础设施管理变得日益复杂。为了保持竞争力,组织必须确保其服务的稳定性和效率。本文将探讨如何通过实施自动化运维系统来优化IT管理流程,降低成本并提高服务质量。文中不仅介绍了自动化的核心原则和组件,还分享了实际案例研究和最佳实践,为读者提供了一套切实可行的自动化运维解决方案。
|
8天前
|
机器学习/深度学习 决策智能 计算机视觉
利用深度学习优化图像识别系统性能
【5月更文挑战第29天】 随着人工智能技术的飞速发展,图像识别已成为计算机视觉领域的核心应用之一。传统图像识别方法在面对复杂场景和多样化对象时存在局限性,而深度学习技术凭借其强大的特征提取和学习能力,在提高图像识别准确率和处理速度方面展现出巨大潜力。本文旨在探讨如何通过构建和优化基于深度学习的卷积神经网络(CNN)模型来提升图像识别系统的性能,并分析不同网络结构和训练策略对识别效果的影响。通过实验对比,验证所提方法的有效性,并为未来相关研究提供参考。