第1章 数据处理

深度学习离不开大数据的支持,网络模型训练效果的好坏会受到数据的影响。数据的优劣决定了模型推理精度的上限,模型的训练只是去无限逼近这个上限。“问渠那得清如许?为有源头活水来。”高质量的数据输入,会对整个深度神经网络起到积极作用。所以,数据处理成了深度学习网络模型训练中极为关键的一步。

数据处理面临着诸多难点与挑战,体现在数据处理的灵活性、端云侧的统一性和数据处理的高效性等方面。数据处理灵活性的挑战在于,深度学习任务种类繁多,涉及的数据类型各异,即使同为图像数据,MNIST数据集的组织方式也与CIFAR-10数据集的不同,如何使用统一的方式加载不同的数据,存在很大困难。此外,为了实现更好的模型训练效果,数据增强方法也越来越多,采用不同的数据增强逻辑,会使模型精度产生明显的差异,需要合理地安排其执行逻辑。端云侧的统一性挑战在于,端侧场景受CPU和内存资源限制,部分资源消耗大的数据处理操作不再适用,如何在不同的场景下提供一致的数据处理结果面临挑战。数据处理高效性的挑战在于,当前数据处理主要使用CPU进行运算,而网络模型训练则是使用GPU或AI芯片,随着GPU和AI芯片算力的不断提高,可能存在数据处理速度跟不上计算速度的情况,导致GPU和AI芯片因等待数据而空闲,造成资源浪费。

针对数据处理的难点与挑战,1.1节介绍了一种将数据集归一化存储为MindRecord的方法;1.2节介绍了在MindSpore中应用自动数据增强的方法;1.3节介绍了一种轻量化数据处理的方法;1.4节介绍了在MindSpore中单节点缓存加速的方法;1.5节介绍了如何在各流程中优化数据处理;1.6节是对MindSpore中的数据处理技术的总结。