MindSpore报错"GeneratorDataset's num_workers=8, this value is ..."
1 报错描述
1.1 系统环境
Hardware Environment(Ascend/GPU/CPU): CPU
Software Environment:
– MindSpore version (source or binary): 1.2.0
– Python version (e.g., Python 3.7.5): 3.7.5
– OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic
– GCC/Compiler version (if compiled from source):
1.2 基本信息
1.2.1脚本
此案例运行官网的线型函数拟合示例,此前已成功安装mindspore。
1.2.2报错
报错信息:RuntimeError: Thread ID 140706176251712 Unexpected error. GeneratorDataset’s num_workers=8, this value is not within the required range of [1, cpu_thread_cnt=2].
Line of code : 639
File : /home/jenkins/agent-working-dir/workspace/Compile_CPU_X86_Ubuntu/mindspore/mindspore/ccsrc/minddata/dataset/engine/ir/datasetops/dataset_node.cc
2 原因分析
用户在运行时CPU的核数少于dataset模块生成数据时默认使用的核数的数量,mindspore在1.2.0中没有为硬件中CPU的核数进行自适应配置,当pc的配置不高时需要手动对CPU核数进行配置。
3 解决方法
1.添加代码手动配置CPU核数:
ds.config.set_num_parallel_workers(2)
2.使用更高版本的mindspore,目前的mindspore–1.6.0会根据硬件中CPU的核数自适应配置,避免出现cpu核数过低导致报错。
4 总结
1.可根据报错信息的提示进行问题定位,此案例为CPU核数问题,可在官网教程与开源的MindSpore文档中搜寻设置CPU核数的方法。
2.目前MindSpore提供了一种自动数据调优的工具——Dataset AutoTune,用于在训练过程中根据环境资源的情况自动调整数据处理管道的并行度,此过程中会自动检测硬件中CPU的核数进行自适应配置。
3.MindSpore中config模块能够设置或获取数据处理的全局配置参数。
5 参考文档
https://www.mindspore.cn/docs/zh-CN/r1.7/api_python/mindspore.dataset.config.html