This commit is contained in:
Dalong
2022-03-20 10:17:38 +08:00
committed by GitHub
parent aefdd40ee6
commit 486a2f0616

View File

@@ -2,7 +2,7 @@
在上一节中我们重点介绍了数据模块的编程抽象以及编程接口设计确保用户可以方便的基于我们提供的API描述数据处理流程而不需要过多关注实现和执行细节。那么本节我们将进一步探究数据加载以及流水线调度执行等数据模块关键部分设计细节以确保用户能够拥有最优的数据处理性能。同时在本节内容中我们也会贯穿现有主要机器学习系统的实践经验以帮助读者加深对这些关键设计方案的理解。
如 :numref:`async_data_process` 所示,深度学习模型训练需要借助数据模块首先从存储设备中加载数据集,在内存中进行一系列的预处理变换,最终将处理好的数据集发送到加速器芯片上执行模型的计算,目前有大量的工作都着重于研究如何通过设计新的硬件或者应用算子编译等技术加速芯片上的模型计算,而在数据理流水的性能问题上鲜有涉及。但事实上很多情况下数据预处理的执行时间往往在整个训练任务中占据着相当大的比例导致GPU/华为昇腾Ascend等加速器无法被充分利用。研究数据表明企业内数据中心的计算任务大约有30%的计算时间花费在数据预处理步骤 :cite:`murray2021tf`也有研究发现在一些公开数据集上的模型训练任务有65%的时间都花费在了数据预处理上 :cite:`mohan2020analyzing`,由此可以看出数据模块的性能对于整体训练吞吐率有着决定性的影响。
如 :numref:`async_data_process` 所示,深度学习模型训练需要借助数据模块首先从存储设备中加载数据集,在内存中进行一系列的预处理变换,最终将处理好的数据集发送到加速器芯片上执行模型的计算,目前有大量的工作都着重于研究如何通过设计新的硬件或者应用算子编译等技术加速芯片上的模型计算,而在数据理流水的性能问题上鲜有涉及。但事实上很多情况下数据预处理的执行时间往往在整个训练任务中占据着相当大的比例导致GPU/华为昇腾Ascend等加速器无法被充分利用。研究数据表明企业内数据中心的计算任务大约有30%的计算时间花费在数据预处理步骤 :cite:`murray2021tf`也有研究发现在一些公开数据集上的模型训练任务有65%的时间都花费在了数据预处理上 :cite:`mohan2020analyzing`,由此可以看出数据模块的性能对于整体训练吞吐率有着决定性的影响。
![数据加载、预处理、模型计算异步并行执行](../img/ch07/7.3/async_data_process.png)
:width:`800px`