Files
Dalong 2c5996eecd add extension (#331)
Co-authored-by: Luo Mai <luo.mai.cs@gmail.com>
2022-05-23 11:22:44 +08:00

8 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 总结
本章我们围绕着易用性、高效性和保序性三个维度展开研究如何设计实现机器学习系统中的数据预处理模块。在易用性维度我们重点探讨了数据模块的编程模型通过借鉴历史上优秀的并行数据处理系统的设计经验我们认为基于描述数据集变换的编程抽象较为适合作为数据模块的编程模型在具体的系统实现中我们不仅要在上述的编程模型的基础上提供足够多内置算子方便用户的数据预处理编程同时还要考虑如何支持用户方便的使用自定义算子。在高效性方面我们从数据读取和计算两个方面分别介绍了特殊文件格式设计和计算并行架构设计。我们也使用我们在前几章中学习到的模型计算图编译优化技术来优化用户的数据预处理计算图以进一步的达到更高的数据处理吞吐率。机器学习场景中模型对数据输入顺序敏感于是衍生出来保序性这一特殊性质我们在本章中对此进行了分析并通过MindSpore中的Connector的特殊约束实现来展示真实系统实现中如何确保保序性。最后我们也针对部分情况下单机CPU数据预处理性能的问题介绍了当前基于异构处理加速的纵向扩展方案和基于分布式数据预处理的横向扩展方案我们相信读者学习了本章后能够对机器学习系统中的数据模块有深刻的认知也对数据模块未来面临的挑战有所了解。
## 扩展阅读
- 流水线粒度并行实现示例建议阅读 [Pytorch DataLoader](https://github.com/pytorch/pytorch/tree/master/torch/utils/data)。
- 算子粒度并行实现示例建议阅读 [MindData](https://gitee.com/mindspore/mindspore/tree/master/mindspore/ccsrc/minddata)。