ModelScope环境安装及验证都是ok的,但是在快速开始模型训练-单卡情况下报错?(https://modelscope.cn/docs/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)差了一些资料也没解决:AttributeError: Can't pickle local object 'MsDataset._to_torch_dataset_with_processors..MsMapDataset'
这个错误是由于在尝试将一个本地对象(MsDataset._to_torch_dataset_with_processors..MsMapDataset)进行pickle操作时出现了问题。为了解决这个问题,你可以尝试以下方法:
pip install --upgrade modelscope
检查你的代码中是否有对MsDataset._to_torch_dataset_with_processors..MsMapDataset对象的引用。如果有,请确保这些对象在使用后被正确删除或设置为None。
如果问题仍然存在,你可以尝试在训练脚本中添加以下代码,以禁用pickle操作:
import sys
sys.modules['MsDataset'] = None
这将阻止pickle操作对MsDataset模块的调用,但请注意,这可能会导致其他问题。因此,建议首先尝试更新ModelScope版本和检查代码中的对象引用。
这个错误提示通常是因为Python的pickle模块无法正确地序列化和反序列化对象。在这个情况下,'MsDataset._to_torch_dataset_with_processors..MsMapDataset'是一个局部对象,可能是在函数内部定义的,因此不能被pickle。
你可以尝试以下方法来解决这个问题:
检查你的代码,确保没有在函数内部定义需要被pickle的对象。如果需要,你可以将这些对象定义为全局变量。
如果可能,你可以尝试使用其他的序列化库,如dill,它通常可以处理更多的Python对象。