游乐游手机版
首页/AI热点日报/热点详情

数据优化实现机器学习高吞吐量的方法

类型:热点整理2026-07-06
要快速产出机器学习工作负载的成果,高效的基础设施不可或缺。尤其是模型训练环节,对大型数据集的依赖性极高。然而,一个常被忽视的起点问题是:在整个机器学习工作流中,第一步需要将数据从存储系统迁移至训练集群。这一步的成败,直接决定了模型训练的最终效率。 长期以来,数据和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瓶颈而未被充分利用。

- 管道涉及多个数据源和多种训练/计算框架。

- 底层存储需要稳定地处理额外的训练请求。

- 有多个训练节点或任务使用相同的数据集。

随着机器学习技术不断向前演进,框架会执行越来越复杂的任务,管理数据管道的方法也将随之持续改进。通过将数据编排思想扩展到数据管道,端到端训练管道的效率和资源利用率都能得到显著提升。

来源:https://m.elecfans.com/article/1825761.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。