1. 系统环境
硬件环境(Ascend/GPU/CPU): Ascend
MindSpore版本: 2.2
执行模式(PyNative/ Graph): 不限
2. 报错信息
2.1 问题描述
原始ckpt大小59G,按照model parallel=2, pipeline parallel=4的设置,将模型自动切分后,发现切分后的8个模型大小均在50G左右,导致加载模型的时候报MemeryError。
2.2 报错信息
ValueError: Failed to read the checkpoint file /mnt/checkpoint_7.ckpt. May not have permission to read it, please check the correct of the file.
3. 根因分析
分析原因在于,yaml文件中将layer设置为了4,但是原始模型文件layer有40层,导致生成的切分策略文件只涉及前4层,所以在自动切分的时候,只能切分前4层,而后面的36层均附在了后面,导致了切分后的每个文件都很大。
4. 解决方案
将layer设置为40层进行切分,或者如果模型太大,可以先手工降低原始模型层数,然后再进行切分。