Deleting a branch is permanent. It CANNOT be undone. Continue?
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》
MSAdapter的主要功能是提供兼容PyTorch和MindSpore的接口。在接口兼容开发过程中,大概有如下步骤:
环境准备:MindSpore2.0.0.dev20221107、PyTorch1.12
1. 接口功能兼容梳理
MSAdapter的接口和PyTorch对标,从功能上映射到MindSpore对应的接口。由于两个框架的接口实现方式存在差异,所以首先需要梳理两者的差异,例如:

需要注意的是,接口对标前请选定正确的版本:MindSpore2.0.0官网和PyTorch1.12官网
2. 功能开发
根据接口分类在对应的目录下修改/新建py文件,功能开发时原则上要对标接口的所有功能,包含参数个数、功能、取值类型和范围、默认值、返回值类型和个数、精度等。开发过程中的一些规范和注意事项如下:
接口兼容对标实现时,尽量用同等级接口做映射,例如nn接口也用nn下接口映射,如果由于功能上无法对标再考虑functional类的接口组合使用。可同步需求给MS框架。
调用MindSpore的对外接口和方法(API),如功能上必须使用内部方法,需经评审讨论。
如果接口中存在不需要兼容,或者暂时不支持的参数或属性,统一调用unsupportedattr()方法,方便后续统一整改处理。
功能代码里不要用assert(测试代码除外),不支持的功能需要拦截报错。
接口功能实现要通用:Pynative(优先)/Graph模式下功能正确;Ascend(主要)/GPU/CPU硬件平台。
接口功能代码中不能有依赖pytorch等其他第三方的实现。
(持续补充)
3. 新增测试用例
新增接口开发后,需要同步添加测试用例来看护已实现功能,这样可以保证其他人合入代码时不会影响自己代码功能:
4. 代码合入
合并请求创建完成后,会自动触发CI门禁检查,包含ut基本用例测试和代码规范检查,确保合入的代码不会影响主仓上面已有功能。如果门禁检查成功,可以找相关审核人员合入代码;反之,则需要修复错误,修复代码合入后重新门禁检查。
为提高代码提交的效率,建议先在本地执行门禁检查:"bash run.sh". 其中,run.sh包含如下三个步骤操作:
在开发过程中也可以根据需求单独执行上述任一项。
算子开发to 接口开发指南 2 years ago接口对标约束场景(10-31更新):
开发经验&规范总结:
MSAdapter tensor在调用mindspore接口前,需要转换成mindspore tensor,从mindspore接口返回的tensor需要转换成MSAdapter tensor。
Tensor下方法可以调用mindspore的接口,但不能调用MSAdapter下其他nn/functional接口,避免循环调用。
nn接口中含有weight等parameter参数的,需要重写初始化函数reset_parameters。
当接口中含有inplace或out这种原地操作实现时,必须保证返回值和input/out是相同的对象(指针)。---待确认是否统一改成不支持。
调用mindspore.ops.Xxx(首字母大写)和nn接口时,要避免重复初始化导致性能低,因此一般只能在init阶段进行初始化,首选调用mindspore.ops.xxx(首字母小写)。
PyTorch框架特定支持内容,例如
__constants__
不需要迁移兼容。laich referenced this issue 2 years agoexcellent work
有没有MindTorch和MindSpore的性能比较