paint-brush
数据加载器概况:摘要和简介经过@serialization

数据加载器概况:摘要和简介

太長; 讀書

在本文中,研究人员强调数据加载器是改进 ML 训练的关键,并比较了库的功能、可用性和性能。
featured image - 数据加载器概况:摘要和简介
The Serialization Publication HackerNoon profile picture
0-item

作者:

(1) Iason Ofeidis,耶鲁大学电气工程系、耶鲁网络科学研究所,纽黑文{同等贡献};

(2)Diego Kiedanski,耶鲁大学电气工程系、耶鲁网络科学研究所,纽黑文{同等贡献};

(3) Leandros TassiulasLevon Ghukasyan,Activeloop,美国加利福尼亚州山景城,电气工程系,耶鲁大学网络科学研究所,纽黑文。

链接表

抽象的

数据加载器负责在训练机器学习模型时将数据从存储移动到 GPU,这可能是大幅提高训练作业性能的关键。最近的进展不仅通过大大减少训练时间,而且还通过提供新功能(例如从 S3 等远程存储加载数据)显示出前景。在本文中,我们首次将数据加载器区分为深度学习 (DL) 工作流中的独立组件,并概述了其结构和功能。最后,我们对可用的不同数据加载库进行了全面比较,它们在功能、可用性和性能方面的权衡以及从中得出的见解。

1. 引言

训练(深度)机器学习模型需要数据集、模型和硬件,对于实际问题来说,需要一个或多个 GPU。


我们始终致力于减少训练模型所需的总计算时间。这出于多种原因:成本更低、更易于迭代、更适合小型团队等。


机器学习管道的主要组件与运行时间之间的关系通常很明确:数据集越大,运行时间越长,模型越大,运行时间越长,而 GPU 越快,总运行时间就越短。这个难题中经常被忽视的一个关键部分是所有这些部分之间的粘合剂:数据加载器。数据加载器负责从其永久存储(RAM、磁盘或网络)加载数据,应用必要的转换,并将转换后的数据发送到适当的设备,以便模型可以提取它。


大多数开发人员认为,他们各自的机器学习框架(Pytorch、Tensorflow、Jax)中的默认数据加载器已经针对他们的应用程序进行了优化,并且通常不依赖第三方数据加载器。有趣的是,最近有研究表明,数据加载器可能是 ML 管道中更重要的瓶颈之一(Mohan 等人,2020 年)。因此,我们看到许多致力于优化和提高数据加载器性能的新库和研究项目。


例如,麻省理工学院研究团队开发的新开源库 FFCV(Leclerc 等人,2022 年)成功地以使用默认 PyTorch 数据加载器所需时间的一小部分训练了 ImageNet。此类收益可以大幅降低依赖基础设施即服务 (IaaS)(例如 Amazon Web Services (AWS) 和 Google Cloud Platform (GPC))的公司和研究团队的运营成本。


数据加载器提供的另一个有前途的功能是能够加载远程存储的数据;例如,从 S3 存储桶加载。这有许多实际优势:避免了在本地设置数据集的时间,减少了计算机所需的磁盘容量,并且降低了团队成员使用同一数据集的不同版本的风险。在训练时必须流式传输数据的自然缺点是,通常网络传输速度比磁盘 I/O 慢,因此模型需要更长的时间来训练。有趣的是,我们观察到,在某些情况下,一些库(例如 Hub(Team,2022a)和 Deep Lake(Hambardzumyan 等人,2022))在网络上的性能比默认的 Pytorch 数据加载器在本地读取数据时的性能更好。这是可能的,因为数据加载器设法在 GPU 需要之前预取所需的数据。我们将在第 5 节中进行更广泛的讨论。


并非所有库都支持远程加载,而支持远程加载的库也不一定能与相同的远程存储服务集成。由于实现数据加载器的可用库数量正在增长,我们着手构建一个全面的基准,以阐明当前的最新技术、哪些问题似乎已经得到解决,并发现未来研究中最有希望改进的领域。


在这一点上,应该提到的是,我们的实验与其他研究(例如(Kumar & Sivathanu,2020 年)、(Mohan 等人,2020 年))的一个特别不同之处在于,我们专注于在容量有限的中小型工作站(GPU、RAM、SSD)上运行的作业。这些更有可能反映出行业中大多数个人和小团队可用的硬件,他们的预算不允许使用大规模集群。

1.1 贡献

我们的贡献总结如下:


• 开源代码:我们构建了一个开源基准,用于比较 Pytorch[1] 中最流行的数据加载库。该项目将继续向社区开放,因此随着人们对新库和数据集的兴趣增加,可以添加新库和数据集。我们还希望在本文对任何基准库进行重大更新后更新这些基准中获得的数值结果。


• 远程训练的可行性:我们表明,在合理的情况下,可以使用公共互联网连接上的数据流来训练机器学习模型。特别是,我们指出了为数据提供服务的计算的影响。我们的结果与 (Mohan et al., 2020) 的结果不同,因为我们不假设数据集在下载后缓存在本地。


• 超参数优化以提高速度:传统的超参数方法旨在提高正在训练的模型的整体准确性。在本文中,我们展示了如何优化速度(随时间处理的样本)作为总运行时间的代理。这种优化依赖于硬件,因此在长时间运行的作业之前执行它是有意义的。这个过程应该至少比同等的准确率指标快一个数量级。



[1] Github 仓库:https://github.com/smartnets/dataloaderbenchmarks