数据优化实现机器学习高吞吐量的方法
要快速产出机器学习工作负载的成果,高效的基础设施不可或缺。尤其是模型训练环节,对大型数据集的依赖性极高。然而,一个常被忽视的起点问题是:在整个机器学习工作流中,第一步需要将数据从存储系统迁移至训练集群。这一步的成败,直接决定了模型训练的最终效率。 长期以来,数据和AI平台工程师一直在与以下三方面的问
要快速产出机器学习工作负载的成果,高效的基础设施不可或缺。尤其是模型训练环节,对大型数据集的依赖性极高。然而,一个常被忽视的起点问题是:在整个机器学习工作流中,第一步需要将数据从存储系统迁移至训练集群。这一步的成败,直接决定了模型训练的最终效率。
长期以来,数据和AI平台工程师一直在与以下三方面的问题博弈:
数据可访问性:训练数据散落在多个源头甚至远程存储中,如何确保数据能被顺利访问?
数据管道:如何像管理生产线一样管理数据,使其能不间断、无等待地输入到训练工作流中?
性能与GPU利用率:如何在低元数据延迟与高数据吞吐量之间取得平衡,避免昂贵的GPU因等待数据而空转?
本文聚焦一套面向端到端机器学习管道的数据流协调方案,旨在系统性地解决上述挑战。我们将梳理常见的问题与陷阱,并重点解析一项名为“数据编排”的新兴技术,探讨它如何优化机器学习的数据管道。
模型训练中常见的数据挑战
一个完整的端到端机器学习管道,涵盖数据预处理、清洗、模型训练直至推理,环环相扣。其中,模型训练是流程中最关键、也最消耗资源的环节。
观察下面典型的机器学习管道:从数据收集启动,接着是数据准备,最后才是模型训练。在数据收集阶段,数据平台工程师需花费大量精力协调各方,确保数据工程师能获取数据;数据工程师则要为数据科学家准备可用数据,以加速模型的构建与迭代。
训练阶段需要处理海量数据,核心任务是确保持续不断地向GPU输送数据。这要求对数据进行精细化管理,以应对机器学习及其异构架构的复杂性。在数据管道中,几乎每一步都会遇到特定的技术障碍。
(1) 数据收集挑战:数据无处不在
机器学习训练离不开大型数据集,因此从所有相关源头收集数据是首要任务。但现实是,数据分散在数据湖、数据仓库和对象存储中——它们可能位于本地、云端,甚至跨越多个地理区域。将所有数据汇聚到一个单一存储源越来越不切实际。面对这些数据孤岛,通过网络远程访问数据时,延迟问题难以避免。因此,如何在保证性能的前提下让数据“触手可及”,成为一大难题。
(2) 数据准备挑战:串行化的数据准备
数据准备阶段从采集到的数据开始,涉及清洗、ETL和转换,最后交付给模型训练。如果这个阶段缺乏全局规划,数据管道就容易陷入串行执行:数据在等待为训练集群准备完成的过程中,浪费了大量时间。因此,平台工程师必须设法创建并行化的数据管道,并实现高效的数据共享与中间结果存储。
(3) 模型训练挑战:I/O与GPU未能充分利用
模型训练需要处理数百TB的数据,这些数据通常由大量小文件组成,如图像、音频等。训练过程涉及多个epoch的迭代计算,意味着需要频繁访问数据。如何持续不断地向GPU输送数据,使其始终保持高负荷运转,是优化I/O、保持所需吞吐量的核心难点。
传统方法及其常见陷阱
在深入探讨不同方案之前,我们先设定一个简化场景,如下图所示。假设我们在云上用一个GPU集群进行训练,该集群有多个运行着TensorFlow机器学习框架的节点。预处理后的数据存储在Amazon S3中。通常,有两种方式将数据从S3传输到训练集群。
方法一:在本地存储中复制数据
第一种方法,是将整个数据集从远程存储复制到每个服务器的本地存储,然后再进行训练,如下图所示。这样数据局部性得到保证,训练作业直接读取本地数据,无需再从远程存储检索。
从数据管道和I/O角度看,该方法提供了最高的I/O吞吐量,因为数据全部存储在本地。除了开始阶段,GPU会一直保持忙碌——训练必须等待数据从对象存储完全复制到训练集群后才能开始。
但这套方案并非万能。
首先,数据集必须能够放入聚合的本地存储。随着输入数据集规模的增长,数据复制过程会变得愈发漫长且容易出错,从而浪费更多时间和GPU资源。
其次,将大量数据复制到每一台训练机器上,会给存储系统和网络带来巨大压力。特别是当输入数据频繁变动时,数据同步会变得非常复杂。
最后,人工复制数据既耗时又容易出错,更不必说还要保证云存储上的数据与训练数据保持同步。
方法二:直接访问云存储
另一种常见做法是让训练直接挂载远程存储上的目标数据集,如下图所示。相比前一种方案,数据集大小不再是问题,但会面临一系列新的挑战。
首先,从I/O和管道的角度看,数据变成了串行处理。所有数据访问操作都必须经过对象存储与训练集群之间的网络,致使I/O成为瓶颈。GPU会因网络限制了I/O吞吐量而频繁等待,空转时间因此增加。
其次,当训练规模扩大时,所有训练节点同时从同一个远程存储访问同一数据集,会给存储系统带来巨大压力。高并发访问很容易导致存储系统拥塞,进而拉低GPU利用率。
第三,如果数据集包含大量小文件,元数据访问请求会占去数据请求的很大一部分。在这种情况下,直接从对象存储中获取大量文件或目录的元数据会成为性能瓶颈,同时还会增加元数据的操作成本。
推荐方法:数据编排
面对这些挑战和陷阱,我们在处理机器学习管道中的I/O问题时,需要重新审视数据平台的架构。这里推荐一种加速端到端机器学习管道的新思路:数据编排。
数据编排技术将跨存储系统的数据访问抽象化,同时将所有数据虚拟化,并通过标准化的API和全局命名空间呈现给数据驱动的应用程序。
(1) 使用抽象统一数据孤岛
与其费力地复制和移动数据,不如让数据“原地不动”——无论它们是在本地还是在云端。数据编排可以帮助我们抽象数据,创建一个统一的视图。这将显著降低数据收集阶段的复杂性。
由于数据编排可以与存储系统集成,机器学习框架只需要与单个数据编排平台交互,就能访问任何已连接存储中的数据。这意味着来自任何来源的数据都可以用于训练,从而提升模型质量。同时,无需人工将数据迁移到中央源。包括Spark、Presto、PyTorch和TensorFlow在内的所有计算框架都可以访问数据,而无需关心数据的具体位置。
(2) 在数据局部性方面使用分布式缓存
建议不要将整个数据集复制到每台机器上,而是实施分布式缓存策略:数据可以均匀地分布在集群中。当训练数据集远大于单个节点的存储容量时,分布式缓存的优势尤为明显。当数据来自远程时,由于数据被缓存在本地,同样能带来很大好处。因为访问本地数据无需网络I/O,机器学习训练会变得更快、更具成本效益。
上图展示了存储所有训练数据的对象存储,以及表示数据集的两个文件(/path1/file1和/path2/file2)。与其把所有文件块都存到每台训练机器上,不如将块分散在多台机器上存储。为了防止数据丢失并提高读取并发性,每个块可以同时存到多个服务器上。
(3) 优化跨管道的数据共享
在机器学习训练作业中,作业内部和作业之间执行的数据读取和写入,存在高度的重叠。数据共享可以确保所有计算框架都能访问先前缓存的数据,用于下一步的读写工作负载。举个例子:如果在数据准备步骤中使用Spark进行ETL,数据共享可以确保输出数据被缓存,并可供下一阶段直接使用。通过数据共享,整个数据管道可以获得更好的端到端性能。
(4) 通过并行化数据预加载、缓存和训练来编排数据管道
我们可以通过执行预加载和按需缓存来编排数据管道。如下图所示,使用数据缓存从源加载数据,可以与实际训练任务并行完成。这样一来,在访问数据时,训练过程可以享受到高数据吞吐量,而无需在训练前等待缓存完整数据。
虽然一开始会有一些I/O延迟,但因为数据已经加载到缓存中,整体等待时间会大大缩短。这种方法可以减少重复步骤:从对象存储到训练集群的数据加载、缓存、训练所需的数据加载以及训练本身,都可以并行完成,从而大幅加速整个过程。
通过跨机器学习管道的步骤来编排数据,可以消除数据从一个阶段流向下一阶段时,因串行执行而产生的低效问题,同时GPU利用率也会显著提升。下表将这种新方法与两种传统方法进行了对比:
如何为机器学习工作负载编排数据
这里以Alluxio为例,展示如何落地数据编排。我们还是沿用上面提到的简化场景。为了调度TensorFlow作业,可以使用Kubernetes或公共云服务。
使用Alluxio编排机器学习和深度学习训练,通常只需三步:
(1)在训练集群上部署Alluxio。
(2)将Alluxio挂载为训练作业的本地文件夹。
(3)训练脚本从“本地”文件夹(由Alluxio支持)加载数据。
不同存储系统中的数据在挂载后,可以通过Alluxio立即被访问,并且可以通过基准脚本透明访问,无需对TensorFlow做任何修改。这极大地简化了应用开发过程——否则,就需要为每个特定的存储系统进行集成和凭证配置。
(可参照这里的方法使用Alluxio和TensorFlow运行图像识别。原文此处有链接,但根据指令已移除。)
数据编排最佳实践
并没有一种放之四海而皆准的方案。数据编排在以下场景中能发挥最大价值:
- 需要分布式训练。
- 拥有大量训练数据(10TB或更多),尤其是训练数据中包含大量小文件和图像。
- GPU资源因网络I/O瓶颈而未被充分利用。
- 管道涉及多个数据源和多种训练/计算框架。
- 底层存储需要稳定地处理额外的训练请求。
- 有多个训练节点或任务使用相同的数据集。
随着机器学习技术不断向前演进,框架会执行越来越复杂的任务,管理数据管道的方法也将随之持续改进。通过将数据编排思想扩展到数据管道,端到端训练管道的效率和资源利用率都能得到显著提升。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:数据优化实现机器学习高吞吐量的方法要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点度加剪辑是百度官方出品的剪辑工具,面向口播自媒体创作者。支持视频剪辑、智能识别字幕,并与百度网盘打通,可快速导入素材。适用于泛知识类创作者制作高质量视频,覆盖从素材导入到成品输出的完整流程。
WorkoutMaster是一款基于AI的个性化锻炼计划生成工具,能根据用户目标、偏好及历史训练记录,动态输出专属方案,并实时自适应调整负重、组次等参数。支持定制目标与器械偏好,借助机器学习持续优化,随时随地即可接入使用,确保训练高效安全。
Calorielens是一款利用AI分析餐食照片的卡路里追踪应用。用户只需拍照,AI即可自动识别食物种类和分量并估算卡路里,省去手动输入步骤。应用还提供历史记录追踪功能,帮助把握热量趋势。AI估算精度可满足日常健康管理需求。
百度旗下“简单搜索”AI搜索引擎集成语音、图像、多媒体搜索及实时翻译,支持多模态交互与智能推荐。基于大模型技术,用户可通过对话式交互直接获取精准答案,适用于学习、旅行、生活、职业发展等场景,高效满足信息需求。
- 日榜
- 周榜
- 月榜
热点快看
