功能介绍
X2MindSpore工具可将基于PyTorch和TensorFlow开发的模型及其训练脚本根据适配规则迁移为可基于MindSpore运行的代码,大幅度提高了脚本迁移速度,降低了开发者的工作量。
约束说明
- X2MindSpore工具支持对包括但不限于X2MindSpore 模型列表列出的模型进行迁移,迁移成功后可直接运行,部分模型需要根据实际情况进行少量适配。迁移后模型能够训练成功且收敛,但对最终精度和性能暂不做保证。
- X2MindSpore工具会在迁移后的目录中生成适配层文件目录x2ms_adapter。该目录中保存的是基于MindSpore实现的PyTorch/TensorFlow API替换接口,工具会将原PyTorch/TensorFlow API按照映射关系迁移至适配层API,迁移后代码依赖适配层运行。
- 工具支持的Python版本为Python3.7~3.9。
- 通过X2MindSpore工具迁移后的训练脚本支持在MindSpore 1.7~1.10版本上运行,在此之后本工具不再继续演进,支持的Python版本为Python3.7~3.9。
- MindSpore支持两种运行模式(Graph模式和PyNative模式),由于Graph模式存在Python语法限制,当前仅有X2MindSpore 模型列表中ResNet、BiT系列(PyTorch)和UNet(PyTorch)的模型支持Graph模式迁移,其余模型只支持迁移至PyNative模式,训练性能较Graph模式有所降低。具体差异详见MindSpore文档。
- 当前为了规避MindSpore中数据处理不支持创建Tensor的限制,在PyTorch迁移过程中将运行模式设置成了算子同步下发模式,可能存在训练性能的部分降低;用户可通过将context.set_context中的pynative_synchronize=True去除,使用算子异步下发模式提升性能;此时若报错,可检查数据处理部分代码,去除其中的创建Tensor行为,改为使用numpy的ndarray。
- 当其他程序占用当前卡,导致可用内存不足,可在训练脚本中context.set_context语句添加device_id = *,*为指定调用卡的ID。
- 当前TensorFlow 1.x的训练脚本不支持迁移为多卡脚本。
父主题: X2MindSpore