MTP使用多进程生成mindrecord,报错RuntimeError: Unexpected error. [Internal ERROR] Failed to write mindrecord meta files.

1. 系统环境

硬件环境(Ascend/GPU/CPU): Ascend 910
MindSpore版本: mindspore=2.2.10
执行模式(PyNative/ Graph):Graph
Python版本: Python=3.8.15
操作系统平台: MTP

2. 报错信息

File "make mindrecord v11. pv",line 404, in Kmodule>  
    results = pool. map(map_func, whole_file_path)  
  File */home/ma-  
user/anaconda3/envs/1indSpor e/1ib/python3. 7/multiprocessing/pool. py*, line268, in map  
    return self. _map_async (func, iterable, mapstakr, chunksize). get()  
  File */home/ma-  
user/anaconda3/envs/Mindspor e/lib/python3. 7/multiprocessing/pool. py", line657, in get  
    raise self._value  
RuntimeError: Unexpectederror. [Internal ERROR.Failed to write mindrecord meta files.

3. 根因分析

根据报错信息,找到报错的代码行,发现使用pool进程池操作,需要检查数据量是否大于pool池数
根因:多个进程不能写同一个mindrecord文件;或多进程处理的数据不能是空。

4. 解决方案

多进程中分别使用的数据集改成大小不同的数据集后,未发生此问题。
或单数据集时,不使用pool操作。